JPA/개념

[JPA] 프로젝트 환경설정

Boradoris 2023. 2. 21. 15:48

H2 DB 설치 및 실행

  • http://www.h2database.com/
  • 최고의 실습용 DB 
  • 가볍다.(1.5M) 
  • 웹용 쿼리툴 제공
  • MySQL, Oracle 데이터베이스 시뮬레이션 기능
  • 시퀀스, AUTO INCREMENT 기능 지원

 

 

Maven 소개

  • https://maven.apache.org/ 
  • 자바 라이브러리, 빌드 관리
  • 라이브러리 자동 다운로드 및 의존성 관리
  • 최근에는 그래들(Gradle)이 점점 유명

 

 

프로젝트 생성

  • 자바 8 이상(8 권장) 
  • 메이븐 설정
    • groupId: jpa-basic 
    • artifactId: ex1-hello-jpa 
    • version: 1.0.0

 

 

라이브러리 추가 - pom.xml

<!-- JPA 하이버네이트 -->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>5.3.10.Final</version>
</dependency>
<!-- H2 데이터베이스 -->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.1.214</version>
</dependency>

 

주의) 자바 11 버전 이상은 javax 지원 X

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>

해당 코드 추가하기

 

JPA 설정 - persistence.xml

  • JPA 설정 파일
  • /META-INF/persistence.xml 위치
  • persistence-unit name으로 이름 지정
  • javax.persistence로 시작: JPA 표준 속성
  • hibernate로 시작: 하이버네이트 전용 속성

 

파일 경로

 

<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>

 

 

데이터베이스 방언

  • name = "hibernate.dialect"
  • JPA는 특정 데이터베이스에 종속 X 
  • 각각의 데이터베이스가 제공하는 SQL 문법과 함수는 조금씩 다름
    • 가변 문자: MySQL은 VARCHAR, Oracle은 VARCHAR2 
    • 문자열을 자르는 함수: SQL 표준은 SUBSTRING(), Oracle은 SUBSTR() 
    • 페이징: MySQL은 LIMIT , Oracle은 ROWNUM 
  • 방언: SQL 표준을 지키지 않는 특정 데이터베이스만의 고유한 기능

 

 

  • hibernate.dialect 속성에 지정
    • H2 : org.hibernate.dialect.H2Dialect 
    • Oracle 10g : org.hibernate.dialect.Oracle10gDialect 
    • MySQL : org.hibernate.dialect.MySQL5InnoDBDialect 
  • 하이버네이트는 40가지 이상의 데이터베이스 방언 지원

 


출처 : https://www.inflearn.com/course/ORM-JPA-Basic

'JPA > 개념' 카테고리의 다른 글

[JPA] JPA 기본 동작 및 JPQL 소개  (0) 2023.02.21
[JPA] JPA 개념  (0) 2023.02.20