Be ready to study forever - 개발자 꿈나무
[JPA]실행하기 본문
1.JPA특징
데이터베이스 방언
JPA는 특정한 데이터베이스 밴더에 종속되지 않는다. 따라서 특정 밴더의 데이터베이스를 방언(Dialect)라고 하며 persistence.xml 설정값으로 데이터베이스 방언(방언이란 예를 들면 varchar 와 varchar2의 차이 처럼 특정한 DB에서만 사용하는 Query문법을 방언이라고 함). 을 고를수 있다. JPA는 40개의 방언을 지원하니까 거의 모든 메이저한 데이터베이스는 지원한다고 보는게 맞다
JPA구동방식
META-INF아래에 있는 persistence.xml에 정의해둔 설정을 읽어서 EntityManagerFactory를 생성하게 된다. 이 EntityManagerFactory는 EntityManager를 생성하게 되는데 EntityManager는 쉽게 생각해서 jdbc커낵션이라고 봐도 무방하다.
주의점)
- EntityManagerFactory는 하나만 생성해서 어플리케이션 전체에서 공유한다.
- EntityManager는 쓰레드간에 공유할수 없고 사용이 끝나면 버려야 한다
- JPA의 모든 데이터 변경은 트랜잭션 안에서 실행된다
지금은 이 주의점이 이해가 되지 않더라도 영속성 컨택스트를 다룰 때 설명되니 기달리자.
2.JPA시작하기(세팅)
Step1)준비물
- H2DB(실습에서는 H2를 사용하지만, Dialect설정값만 바꿔주면 Mysql, Oracle등 모두 사용 가능)
- Maven/Gradle – 자바의 라이브러리 의존성 관리, 빌드
- pom.xml 라이브러리에 h2와 jpa하이버네이트 의존성 추가
<?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 |