스프링/JPA

JPA-설정

coffee. 2023. 8. 29. 14:08

프로젝트 생성

spring lagacy 프로젝트를 생성하고 프로젝트의 이름을 JPA_TEST로 하겠습니다.

이때, 템플릿은 스프링 MVC프로젝트로 합니다.

프로젝트 파일 구조

JPA를 사용하기 위해서는 pom.xml에 다음과 같은 의존성을 주입 해 주어야 합니다.

 

 

		<dependency>
    		<groupId>org.hibernate</groupId>
    		<artifactId>hibernate-entitymanager</artifactId>
    		<version>5.6.14.Final</version>
		</dependency>
		
		<dependency>
    		<groupId>com.mysql</groupId>
    		<artifactId>mysql-connector-j</artifactId>
    		<version>8.0.33</version>
		</dependency>
		
		<dependency>
    		<groupId>org.projectlombok</groupId>
    		<artifactId>lombok</artifactId>
    		<version>1.18.24</version>
    		<scope>provided</scope>
		</dependency>

이 예제에서는 mysql을 사용할 것이라 mysql connector-j 를 추가 해 주었습니다.

클래스의 getter와 setter를 추가할 때 용이한 lombok도 추가 해 주었습니다.

 

 

프로젝트의 src/main/resource/META-INF 폴더에 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="hello">
		
		<properties>
			<property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.user" value="root"/>
            <property name="javax.persistence.jdbc.password" value="1234"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/jpa?characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
            
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>
           
            <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>

다음과 같은 설정으로 jpa와 mysql을 연결 할 수 있습니다.

 

이제 src/main/java에 entity패키지를 만들고 member엔티티를 만듭니다.

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import lombok.Data;

@Data
@Entity
@Table
public class Member {

	@Id  @GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;
	
	@Column(name = "name")
	private String name;
	
}

@Entity는 이 클래스를 엔티티로 지정한다는 의미 입니다.

@Table은 엔티티와 매핑할 테이블을 지정합니다

@Id 는 해당 컬럼을 pk로 설정 합니다.

 

이제 client클래스를 생성해서 멤버를 db에 추가해 봅시다.

 

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;

import com.woo.jpaTest.entity.Member;

public class Test {

	public static void main(String[] args) {
		
		EntityManagerFactory emf=Persistence.createEntityManagerFactory("hello");
		
		EntityManager em =emf.createEntityManager();
		
		EntityTransaction tx=em.getTransaction();
		
		tx.begin();
		
		Member member=new Member();
		member.setName("Tom");
		
		em.persist(member);
		
		tx.commit();
		
		
		

	}

}

다음과 같은 코드를 실행 하면 

성공적으로 db에 값이 들어간것을 보실수 있습니다.

 

 

여기에서 persist메서드는 db에 값을 저장할때 사용하며 트랜잭션 안에서 동작합니다.