최근 JPA(Java Persistence API)에 대한 관심이 생겨서 해당 기술에 대한 공부를 진행중이다. 일전에 나는 거의 모든 프로젝트를 MyBatis를 위주로 Database에 접근하여 데이터를 추출, 저장, 수정하였지만 최근에는 JPA를 이용한 DataAccess가 대세로 보인다.
JPA를 공부한 결과 SQL을 거의 사용하지 않고 객체를 이용하여 데이터에 접근하므로 좀 더 객체지향 적으로 코드를 작성하는 느낌이 있다.
이번 포스팅에서는 JPA를 실습하기 위한 개발환경 구성을 작성하고자 한다.
개발환경 IDE : STS
빌드툴 : Maven
1. File > Maven Project를 누른다.
maven-archetype-quickstart 를 누른다.
적절한 Group Id와 Artifact Id를 눌러준다.
생성된 프로젝트를 우클릭 한 후 Source Folder를 누른다.
우측의 Browse 버튼을 누른다.
src>main 폴더를 클릭한 후 OK 버튼을 누른다.
src/main/resources라고 Folder명을 지정하고 Finish 버튼을 누른다.
resources 폴더 밑에 META-INF 폴더를 만들어 주고 persistence.xml 파일을 생성한다.
[persistence.xml]
<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1.xsd"
version="2.1">
<persistence-unit name="jpastart" transaction-type="RESOURCE_LOCAL">
<!-- false로 지정하면 <class>태그로 지정하지 않은 클래스는 관리 대상에 포함하지 않는다. -->
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<!-- DB 연결정보 -->
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://[url]/[dbname]?characterEncoding=utf8"/>
<property name="javax.persistence.jdbc.user" value="[user]"/>
<property name="javax.persistence.jdbc.password" value="[password]"/>
<!-- 쿼리 로그 출력 여부 -->
<property name="hibernate.show_sql" value="true"/>
<!-- 하이버네이트 전용 프로퍼티로 쿼리를 생성할 때 사용할 Dialect를 지정 -->
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
<!-- 하이버네이트가 사용할 c3p0 커넥션풀 관련 프로퍼티를 설정한다. -->
<property name="hibernate.c3p0.min_size" value="5"/>
<property name="hibernate.c3p0.max_size" value="20"/>
<property name="hibernate.c3p0.timeout" value="500"/>
<property name="hibernate.c3p0.idle_test_period" value="2000"/>
</properties>
</persistence-unit>
</persistence>
자신의 Database 환경에 맞게 설정값을 입력한다.
[pom.xml]
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<hibernate.version>5.2.6.Final</hibernate.version>
</properties>
........... 생략 .............
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-c3p0</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>${hibernate.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.3</version>
</dependency>
연관라이브러리의 Dependency를 설정하여 준다.
이렇게 하면 JPA를 사용할 준비가 완료된다.
'IT > JPA' 카테고리의 다른 글
JPA 1차캐시와 2차캐시 (0) | 2023.07.29 |
---|---|
[JPA] Query DSL 사용해보기 (0) | 2021.08.29 |
H2 에러 (Database "/Users/juhyeontae/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) (0) | 2021.08.03 |