Back-end

[Java: JPA] 01. JPA와 환경설정

Kamea 2023. 1. 28. 13:33

JPA 를 사용하는 이유?

기존의 Mybatis 를 사용했을 때의 복잡한 엔티티 매핑문제와 단순 sql 코드 작성 시간을 줄일 수 있기 때문에

생산성 ⬆, 유지보수 용이, 성능, 표준
패러다임의 불일치 해결(상속, 연관관계, 객체 그래프 탐색, 비교)
SQL 중심의 개발에서 객체 중심으로 개발 가능

 

 

 

JPA란?

→ Java Persistance API :  자바 영속성 API

→ Java ORM 표준

✅ ORM이란?

더보기

ORM : Obejct relational mapping → 객체 관계 매핑

ORM 프레임워크가 객체와 관계형 대이터베이스를 중간에서 매핑해준다.

 

→ JAVA 와JDBC 사이에서 다리 역할

 

 

 

 

JPA 환경 설정

0. H2Database 설치 후 h2/bin 폴더에서 ./h2.sh 실행

    → localhost:8082 url 입력 후 아래와 같은 화면이 나오는지 확인

    → 연결 버튼을 눌러서 연결이 되었는지 확인(이거 안하면 나중에 오류가 나더라구여...)

h2 콘솔 창

1. JAVA Maven Project 생성 : JAVA 8 이상 권장

 

2. pom.xml에 의존성 추가 : h2 데이터베이스 사용할꺼임

<dependencies>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.3.10.Final</version>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.199</version>
        </dependency>
    </dependencies>

 

3. resources 파일 아래에 META-INF 디렉토리 생성 후 persistence.xml 파일 추가

<?xml version="1.0" encoding="utf-8" ?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.2">
    <persistence-unit name="hello">
        <properties>
            <!-- 필수 속성-->
            <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
            <property name="javax.persistence.jdbc.user" value="sa"/>
            <property name="javax.persistence.jdbc.password" value=""/>
            <property name="javax.persistence.jdbc.url" value="jdbc:h2:tcp://localhost/~/test"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
            
            <!-- 옵션 -->
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
            <property name="hibernate.use_sql_comments" value="true"/>
        </properties>
    </persistence-unit>
</persistence>

🔥 해당 속성들과 0번 사진의 데이터베이스 속성들이 일치해야 됨

 

4. java 폴더 하위에 패키지&클래스 생성 후 main 메서드 빌드 확인

package hello.jpa;

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

public class JpaMain {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");

        EntityManager em = emf.createEntityManager();

        em.close();
        emf.close();
    }
}