JPA 설정하기

반응형

출처: 김영한 강의

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

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

초급자를 위해 준비한 [웹 개발, 백엔드] 강의입니다. JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자

www.inflearn.com

 

 

 

JPA의 버전 맞추기

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

23. 08. 19. 기준 JPA를 사용하기 위한 POM.XML의 설정입니다.

 

JPA를 사용하기 위해서는 Hibernate와 사용할 DB의 Version이 필요합니다.

다만, 라이브러리의 버그가 존재하여 Version은 강의를 기준으로 하는 것보다는 현재 설치하는 시점의 버전이 제일 우선적인 것을 추천드립니다.

 

버전은 사용하시는 DB의 버전을 기준으로,DB의 버전에 근접한 hibernate버전으로 맞추시면 됩니다.

 

과거의 버전을 사용하여도, JPA의 간단한 사용에는 문제가 없었으나 JPA의 기술 중 하나인 TABLE DROP이 동작되지 않는 BUG가 발생되었습니다.

 

 

 

🐛 이를 해결하기 위해서는 아래의 링크를 참고 부탁드리겠습니다.

2023.08.20 - [Web/Spring] - SQL Error: 23505, SQLState: 23505 - JPA 사용 도중

 

SQL Error: 23505, SQLState: 23505 - JPA 사용 도중

JPA를 사용도중 이상한 버그가 발생되었습니다. 코드를 연습하는 과정에서 JPA의 기능 중 하나인 DROP TABLE이 동작되지 않아서 기존의 TABLE에 내용이 그대로 남게 되었으며, 동시에 같은 PK를 INSERT

mollangpiu.tistory.com

 

 

persistence.xml 설정하기

resources디렉터리 아래에 'META-INF' 디렉터리를 생성하시면 됩니다.

만약, 없을 경우, 개인적으로 생성해도 문제가 없으니 해당 경로 밑에 persistence.xml이 설치되어 있으면 됩니다.

 

 

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

      <!-- 쿼리가 Member를 Insert한 것을 알려준다. -->
      <property name="hibernate.use_sql_comments" value="true"/>
      <!--<property name="hibernate.hbm2ddl.auto" value="create" />-->
    </properties>
  </persistence-unit>
</persistence>

DB의 접속기록을 저장합니다.

사용하는 DB가 다를 경우, 설정 또한 달라질 수 있습니다.

 

✔️ 위의 속성이 제대로 된 것을 확인되었다면!

//Presistence.xml의 설정을 가져온다.
EntityManagerFactory emf =  Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();

//Transaction을 가져온다.
EntityTransaction tx = em.getTransaction();
tx.begin();

Java에서 해당 라이브러리를 import 할 수 있게 됩니다.

만약 해당 코드를 제대로 import가 되지 않았다면, 다시 설정하셔야 합니다.

반응형

댓글

Designed by JB FACTORY