미미 코딩

JPA (+ Spring Framework / Mysql ) 설정 본문

초보 개발자

JPA (+ Spring Framework / Mysql ) 설정

부자는나야나 2020. 6. 19. 16:23

1. 프로젝트 생성한다!

Spring Legacy Project → Spring MVC Project 생성하고, 패키지 구조를 잡아준다!


2. 프로젝트와 JDBC 연결한다!

  1. [JDBC 드라이버 다운로드]
     : JDBC는 자바에서 DB를 사용하기 위한 절차에 대한 인터페이스이며, 사용할 DBMS에 맞는 드라이버를 다운받아 사용한다.
  2. 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&amp;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 />

 

 

 

 

여기까지 하면 셋팅 끝!!!

 

 

 

Comments