미미 코딩
JPA (+ Spring Framework / Mysql ) 설정 본문
1. 프로젝트 생성한다!
Spring Legacy Project → Spring MVC Project 생성하고, 패키지 구조를 잡아준다!
2. 프로젝트와 JDBC 연결한다!
- [JDBC 드라이버 다운로드]
: JDBC는 자바에서 DB를 사용하기 위한 절차에 대한 인터페이스이며, 사용할 DBMS에 맞는 드라이버를 다운받아 사용한다. - Build Path 설정
: 'Build Path'를 이용하여 다운로드 받은 드라이버를 경로에 추가한다.
(1) 프로젝트 우클릭 → 빌드패스 → Configure Build Path 클릭
(2) [Add External JARs...] 버튼을 통해 드라이버 선택
3. pom.xml 수정하여 필요한 라이브러리를 추가한다!
(1) <properties> 변경
<java-version>1.8</java-version>
<org.springframework-version>5.1.9.RELEASE</org.springframework-version>
(2) <dependency> 추가
-
JPA 관련 라이브러리 → spring-data-jpa / hibernate-entitymanager
-
Mysql 관련 라이브러리 → spring-jdbc / mysql-connector-java
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.1.11.Final</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
3. 'JPA Project' 로 변경한다!
'프로젝트 우클릭 → configure → Convert to JPA Project' 을 통해 JPA 프로젝트로 바꿔준다.
JPA 프로젝트로 변환되면 자동으로 META-INF 하위에 persistence.xml 이 생성 되며, 해당 파일에서 JPA 관련 기능을 명시한다.
4. persistence.xml 에서 JPA 관련 기능을 설정한다.
<class>태그 안에 @Entity class 를 추가해줘야 한다.
@Entity 만 붙이고, persistence.xml에 명시하지 않으면 아래와 같은 오류가 난다.
Class "com.test.myapp.model.Member" is managed, but is not listed in the persistence.xml file
[ persistence.xml ]
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" 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">
<persistence-unit name="Test">
<class>com.mycompany.test.model.Member</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
<property name="hibernate.show_sql" value="true"/>
<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>
5. root.xml 에서 설정을 통해 Mysql 과 JPA 연결한다!
[ root-context.xml ]
<context:component-scan base-package="com.mycompany.test.service" />
<jpa:repositories base-package="com.mycompany.test.repository"></jpa:repositories>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/test_db?useSSL=false&serverTimezone=Asia/Seoul"></property>
<property name="username" value="test_id"></property>
<property name="password" value="test_pw"></property>
</bean>
<bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
</bean>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="jpaVendorAdapter" ref="jpaVendorAdapter"></property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"></property>
</bean>
<tx:annotation-driven />
여기까지 하면 셋팅 끝!!!
'초보 개발자' 카테고리의 다른 글
[HTML/CSS] html이란?, inline 요소, block 요소, Box Model (0) | 2020.06.28 |
---|---|
데이터베이스 설계 및 구현 - (1) 데이터베이스의 이해 (0) | 2020.06.24 |
JPA 란? (0) | 2020.06.23 |
파일 처리 시스템 특징 (0) | 2020.06.21 |
검색 엔진 (0) | 2020.06.20 |