PSD( Private-Self-Development )

JPA 사용 설정 및 사용 본문

Backend/JPA

JPA 사용 설정 및 사용

chjysm 2022. 10. 5. 18:50

0.  JAP 사용 설정

1. pom.xml 에 하이버네이트, 사용 DB 드라이버  의존성 주입

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>5.6.11.Final</version>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>2.1.214</version>
</dependency>

2. maven을 사용할 경우, src/main/resources/META-INF 경로에 Persistence.xml( JPA 설정 파일 ) 작성

persistence 파일 경로

 

<?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">
    <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"/> 
            <!--<property name="hibernate.hbm2ddl.auto" value="create" />-->
        </properties>
    </persistence-unit>
</persistence>
공식 문서 참고

 

1.  관계형 DB와 객체 연결

@Entity
//@Table(name="USER") // 테이블 명을 설정 해 줄 수 있다.
public class Member {
    @Id // Primary 키 설정 : 필수!!
    private Long id;

//    @Column(name="username") // 컬럼 명을 설정 해 줄 수 있다.
    private String name;
}

 

2. DB 연결 

EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");

서버가 올라올 때 , DB 당 한 번만 선언되어야 한다. 

 

 

3.  DB 연결 생성 및 트랜잭션

// 연결 생성
EntityManager em =  emf.createEntityManager();

// 트랜잭션 생성
EntityTransaction tx = em.getTransaction();

// 트랜잭션 시작
tx.begin();

// 트랜잭션 커밋
tx.commit();

 

4.  CRUD 및 커밋 

// 단건 조회
Member findMember = em.find( Member.class, 1L );
System.out.println( findMember.getName() );

// 삭제
em.remove( findMember );

// 수정
// 조회 객체의 데이터를 수정 하면 
// 추후 커밋 될 때 변경사항을 자동으로 업데이트 쿼리를 날린다.
findMember.setName("HELLO! JPA!");

// 추가
Member member = new Member();
member.setId(1L);
member.setName("HelloA");
em.persist(member); // 추가

// 커밋 전에 객체에 변경사항이 있을 경우 업데이트 쿼리 날림
tx.commit();

 

5. JPQL 

// 다건 조회
List <Member> result = em.createQuery("select m from Member as m", Member.class ) // Member 엔티티 객체 전체를 조회
        .setFirstResult(5)  // 시작 INDEX
        .setMaxResults(10)  // 조회 갯수 제한 
        .getResultList(); // 조회
  • 객체 지향 쿼리 언어 이다.
  • JPQL을 사용하면 접근 대상 DB가 달라져도
    변경이 필요하지 않다.
  • DB 테이블이 아닌 엔티티 객체 대상 쿼리이다.

 

6. 연결 제거

. close() 선언


참조 : https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

자바 ORM 표준 JPA 프로그래밍 - 기본편 - 인프런 | 강의

JPA를 처음 접하거나, 실무에서 JPA를 사용하지만 기본 이론이 부족하신 분들이 JPA의 기본 이론을 탄탄하게 학습해서 초보자도 실무에서 자신있게 JPA를 사용할 수 있습니다., - 강의 소개 | 인프런

www.inflearn.com

 

'Backend > JPA' 카테고리의 다른 글

JPA 의 프록시, 지연 로딩, 즉시 로딩  (0) 2022.10.12
JPA 의 상속  (0) 2022.10.11
JPA의 DB 매핑  (0) 2022.10.06
JPA의 영속성 컨텍스트  (0) 2022.10.06
JPA 란?  (0) 2022.09.28