persistence.xml 설정

  • JPA는 persistence.xml을 사용해서 필요한 설정 정보를 관리
  • META-INF/persistence.xml 클래스 패스 경로에 있으면 별도 설정없이 JPA 인식

JPA 환경설정 파일 persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">

    <persistence-unit name="jpabook">

        <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.id.new_generator_mappings" value="true" />

            <!--<property name="hibernate.hbm2ddl.auto" value="create" />-->
        </properties>
    </persistence-unit>

</persistence>

설정 파일은 <persistence>로 시작

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">

JPA 설정은 영속성 유닛(persistence-unit)으로 시작

  • 일반적으로 연결할 데이타베이스 하나당 영속성 유닛 등록
  • 고유한 이름을 부여, 여기서는 jpabook
    <persistence-unit name="jpabook">
    

사용한 속성

  • JPA 표준 속성
    • javax.persistence.jdbc.driver : JDBC 드라이버
    • javax.persistence.jdbc.user : 데이터베이스 접속 아이디
    • javax.persistence.jdbc.password : 데이터베이스 접속 비밀번호
    • javax.persistence.jdbc.url : 데이터베이스 접속 URL
  • 하이버네이트 설정
    • hibernate.dialect : 데이터베이스 방언 설정

데이터베이스 방언

JPA는 특정 데이터베이스에 종속적이지 않은 기술.
다른 데이터베이스로 손쉽게 교체할 수 있다.

데이터베이스마다 차이점

  • 데이터 타입
  • 다른 함수명
  • 페이징 처리

SQL 표준을 지키지 않거나 특정 데이터베이스만의 고유한 기능을 JPA에서는 "Dialect(방언)"이라고 한다.

하이버네이트 설정 옵션

옵션

  • hibernate.show_sql : 실행한 SQL을 출력.
  • hibernate.format_sql : SQL을 보기 좋게 정렬함.
  • hibernate.use_sql_comments : 쿼리 출력 시 주석도 함께 출력
  • hibernate.id.new_generator_mappings : JPA 표준에 맞는 새로운 키 생성 전략을 사용함.

하이버네이트 설정

  • create : Session factory가 실행될 때에 스키마를 지우고 다시 생성. 클래스패스에 import.sql 이 존재하면 찾아서, 해당 SQL도 함께 실행함.
  • create-drop : create와 같지만 session factory가 내려갈 때 스키마 삭제.
  • update : 시작시, 도메인과 스키마 비교하여 필요한 컬럼 추가 등의 작업 실행. 데이터는 삭제하지 않음.
  • validate : Session factory 실행시 스키마가 적합한지 검사함. 문제가 있으면 예외 발생.

  • 개발시에는 create가, 운영시에는 auto 설정을 빼거나 validate 정도로 두는 것이 좋아 보인다. update로 둘 경우에, 개발자들의 스키마가 마구 꼬여서 결국은 drop 해서 새로 만들어야 하는 사태가 발생한다.

참조 : http://kwonnam.pe.kr/wiki/java/hibernate/configuration

results matching ""

    No results matching ""