JPA를 시작하기 위해서는 설정이 필요하다. 프로젝트를 생성하고 설정파일을 설정해야하는데 이에 대한 내용을 기록해두기로 했다.
먼저 /META-INF/persistence.xml에 위치해야한다. 그렇지 않으면 인식을 못한다.
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
<persistence-unit name="hello">
<properties>
<!-- 필수 속성 -->
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="javax.persistence.jdbc.user" value="sa"/>
<property name="javax.persistence.jdbc.password" value=""/>
<property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
<!-- 옵션 -->
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.use_sql_comments" value="true"/>
<!--<property name="hibernate.hbm2ddl.auto" value="create" />-->
</properties>
</persistence-unit>
</persistence>
persistence-unit name으로 이름 지정하고,
javax.persistence로 시작하는 것은 JPA 표준 속성이라고 보면 되고
hibernate로 시작하는 것은 하이버네이트 전용 속성이라고 보면 된다.
데이터 베이스 방언이란?
JPA는 특정 데이터베이스에 종속되지 않는다.
ex)
1. 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다름
2. 가변 문자: MySQL은 VARCHAR, Oracle은 VARCHAR2
3. 문자열을 자르는 함수: SQL 표준은 SUBSTRING(), Oracle은 SUBSTR()
4. 페이징: MySQL은 LIMIT , Oracle은 ROWNUM
이와 같이 SQL은 SQL이지만 다 조금씩 다르다. 이것을 뭐랄까 방언이라고 표현하는 것인데,( 즉 SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능을 의미한다고 보면 된다. ) 이 방언을 사용할거야! 이 SQL을 사용할거야! 라고 지정해주는 것이
<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
이 문장이다. hibernate.dialect 속성에 지정하고 뒤에 H2Dialect는 H2 DB를 쓰겠다는 뜻이고, 외에도 Postgre, MySQL Oracle 버전별로 다 가능. ctrl space 눌러보면 나온다.
추가적으로
javax로 시작하는건 다른 JPA라이브러리를 써도 사용가능한 것 hibernate를 쓰지않아도 사용가능
근데 hibernate로 시작하는건 hibernate 전용임
'JPA' 카테고리의 다른 글
[JPA] 데이터베이스 스키마 자동 생성 (0) | 2020.10.11 |
---|---|
[JPA] 엔티티 매핑 어노테이션 (0) | 2020.10.10 |
[JPA] 영속성 컨텍스트 생명주기2 (0) | 2020.10.08 |
[JPA] 영속성 컨텍스트 생명주기 (0) | 2020.10.08 |
[JPA] Spring 없이 간단하게 실습하기 (0) | 2020.10.08 |