Be ready to study forever - 개발자 꿈나무

[JPA]실행하기 본문

Programming/JPA

[JPA]실행하기

루눌룹 2021. 1. 22. 17:51

1.JPA특징

데이터베이스 방언

JPA는 특정한 데이터베이스 밴더에 종속되지 않는다. 따라서 특정 밴더의 데이터베이스를 방언(Dialect)라고 하며 persistence.xml 설정값으로 데이터베이스 방언(방언이란 예를 들면 varchar varchar2의 차이 처럼 특정한 DB에서만 사용하는 Query문법을 방언이라고 함). 을 고를수 있다. JPA 40개의 방언을 지원하니까 거의 모든 메이저한 데이터베이스는 지원한다고 보는게 맞다

JPA구동방식

META-INF아래에 있는 persistence.xml에 정의해둔 설정을 읽어서 EntityManagerFactory를 생성하게 된다. EntityManagerFactoryEntityManager를 생성하게 되는데 EntityManager는 쉽게 생각해서 jdbc커낵션이라고 봐도 무방하다.

주의점)

-      EntityManagerFactory는 하나만 생성해서 어플리케이션 전체에서 공유한다.

-      EntityManager는 쓰레드간에 공유할수 없고 사용이 끝나면 버려야 한다

-      JPA의 모든 데이터 변경은 트랜잭션 안에서 실행된다

지금은 이 주의점이 이해가 되지 않더라도 영속성 컨택스트를 다룰 때 설명되니 기달리자.

 

2.JPA시작하기(세팅)

Step1)준비물

-      H2DB(실습에서는 H2를 사용하지만, Dialect설정값만 바꿔주면 Mysql, Oracle등 모두 사용 가능)

-      Maven/Gradle – 자바의 라이브러리 의존성 관리, 빌드

-      pom.xml 라이브러리에 h2jpa하이버네이트 의존성 추가

<?xml version="1.0" encoding="UTF-8"?>



 <xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

 <modelVersion>4.0.0</modelVersion>

 <groupId>jpa-basic</groupId>

 <artifactId>ex1-hello-jpa</artifactId>

 <version>1.0.0</version>

 <dependencies>

     <!-- 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>1.4.199</version>

     </dependency>

 </dependencies>

</project>

Step2) JPA설정하기

-      프로젝트 내 resources폴더 밑에 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>


h2
가 아닌 다른 DB방언을 사용하고 싶다면, <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/> 부분을 

Oracle 10g의 경우 : org.hibernate.dialect.Oracle10gDialect

Mysql 의 경우 : org.hibernate.dialect.MySQL5InnoDBDialect

로 변경해 주면 된다.

 

'Programming > JPA' 카테고리의 다른 글

[JPA] 고급 매핑 - 3  (0) 2021.01.23
[JPA] 다양한 연관관계 매핑-2  (0) 2021.01.23
[JPA] 연관관계 매핑 기초 - 1  (0) 2021.01.23
[JPA] 영속성 컨텍스트란?  (0) 2021.01.23
[JPA] JPA란?  (0) 2021.01.22
Comments