본문 바로가기

IT/JPA & Hibernate

[JPA] Hibernate 연동 방법

1. 테스트 환경

JAVA 1.8
Maven
Mysql

 

2. Hibernate 연동 및 테스트

1) Maven 프로젝트 생성

 

2) pom.xml

hibernate와 mysql connector 라이브러리를 추가해줍니다.
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.3.10.Final</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.6</version>
        </dependency>


    </dependencies>

 

3) persistence.xml 작성

DB 접속 정보 및 hibernate 설정 정보를 작성합니다.
persistence.xml 파일의 경로는 반드시 src/main/resources/META-INF 아래에 위치해야 합니다.
<?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">
<!--  EntityManagerFactory 생성 시 사용되는 persistence name 입니다. -->
    <persistence-unit name="my-persistence">
        <properties>
            <!-- 필수 속성 -->
            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
            <property name="javax.persistence.jdbc.user" value="username"/>
            <property name="javax.persistence.jdbc.password" value="password"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/my_db?characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
           
            <!-- 하이버네이트 사용 시 여러 가지 종류의 DB를 사용할 수 있는데, 명시적으로 사용하는 DB를 적어서 해당 디비에서 사용하는 문법을 적용할 수 있습니다.-->
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL8Dialect"/>

            <!-- 옵션 -->
            <!-- sql query를 보여줍니다.-->
            <property name="hibernate.show_sql" value="true"/>
            <!-- sql query를 정리해서 보여줍니다.-->
            <property name="hibernate.format_sql" value="true"/>
            <!-- sql의 comments를 보여줍니다.-->
            <property name="hibernate.use_sql_comments" value="true"/>
            
        </properties>
    </persistence-unit>
</persistence>

 

4) Member entity 생성 및 테이블 생성

Member.java

package entity;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class Member {
    @Id
    private Long id;

    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Member table

CREATE TABLE `member` (
	`id` BIGINT(20) NOT NULL,
	`name` VARCHAR(255) NULL DEFAULT NULL,
	PRIMARY KEY (`id`)
)

 

5) Member 객체 저장 테스트

import entity.Member;

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

public class Main {
    public static void main(String[] args) {

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-persistence");

        EntityManager em = emf.createEntityManager();

        EntityTransaction tx = em.getTransaction();
        tx.begin();

        try {
            Member member = new Member();
            member.setId(1L);
            member.setName("kim");

            em.persist(member);

            tx.commit();
        } catch (Exception e) {
            tx.rollback();
        } finally {
            em.close();
        }

        emf.close();

    }
}