computer_study

[JPA] 02. JPA 시작 본문

스터디/자바 ORM표준 JPA 프로그래밍

[JPA] 02. JPA 시작

knowable 2022. 6. 29. 23:00

1. 이클립스 설치

2. H2 데이터베이스 사용하기

H2 v.s MySQL

3. 라이브러리와 프로젝트 구조

메이븐 사용

4. 객체 매핑

import javax.persistence.*;

@Entity // 이 class를 테이블과 매핑한다고 JPA에게 알려준다
@Table(name="MEMBER") // 매핑 할 테이블 정보 (생략 시 클래스 이름으로 테이블 매핑)
public class Member{
    @Id // 테이블의 Primary key에 매핑한다.
    @Column(name = "ID") // 필드를 column에 매핑
    private String id;
    
    @Column(name = "NAME")
    private String username;
    
    // 매핑 애노테이션이 생략된다면 필드명을 컬럼명으로 매핑
    // (대소문자를 구분하면 @Column으로 작성해주어야 한다.)
    private Integer age;
    
    ...
}

 

5. persistence.xml 설정

JPA는 persistence.xml에서 설정 정보를 관리

 

데이터베이스 방언(Dialect)

JPA는 특정 데이터베이스에 종속되지 않기에 손쉽게 교체 가능하지만 각 DB가 제공하는 SQL 문법과 함수가 조금씩 다른 문제가 있고 이를 JPA에서 방언이라 부른다.

 

하이버네이트에서 다양한 Dialect를 제공하기에 JPA표준 문법에 마추어 작성하면 DB가 변경되어도 어플리케이션 코드 변경 필요 없이 Dialect만 교체하면 된다.

 

6. 애플리케이션 개발

코드의 구분

  • 엔티티 매니저 설정
    • 엔티티 매니저 팩토리 생성 
      • 엔티티 매니저 팩토리는 persistence.xml의 설정 정보를 사용하여 JPA를 시작할 수 있게 한다.
        (JPA를 동작시키기 위한 기반 객체를 만든다.)
      • 엔티티 매니저 팩토리는 애플리케이션 전체에서 딱 한번만 생성하고 공유해서 사용해야 한다.
    • 엔티티 매니저 생성
      • 매니저 팩토리에서 매니저를 생성한다.
      • 매니저를 사용하여 엔티티를 DB에 등록/수정/삭제/조회할 수 있다.
      • 개발자는 엔티티 매니저를 가상의 DB로 생각할 수 있다.
      • 스레드 간에 공유하거나 재사용 해서는 안된다.
    • 종료
      • 사용이 끝난 매니저는 반드시 종료해야 한다.
  • 트랜잭션 관리
    • JPA사용 시 항상 트랜잭션 안에서 데이터를 변경해야 한다.
  • 비즈니스 로직
    • 등록, 수정, 삭제, 조회 작업을 수행하고 이는 엔티티 매니저(em)을 통해 수행된다.
    • 등록
      • em.persist(member)
    • 수정
      • member.setAge(20) 과 같이 변경만 하면 JPA가 어떤 엔티티가 변경되었는지 추적하여 UPDATE
    • 삭제
      • em.remobe(member)
    • 조회
      • em.find(Member.class, id) -> 엔티티 한 개 조회
  • JPQL
    • SQL을 추상화한 객체지향 쿼리 언어
    • JPQL은 엔티티 객체를 대상으로 쿼리

 

 

 

'스터디 > 자바 ORM표준 JPA 프로그래밍' 카테고리의 다른 글

[JPA] 05. 연관관계 매핑 기초  (0) 2022.07.25
[JPA] 04. 엔티티 매핑  (0) 2022.07.11
[JPA] 03. 영속성 관리  (0) 2022.06.29
[JPA] 01. JPA 소개  (0) 2022.06.18
[JPA] 00.스터디 개요  (0) 2022.06.18
Comments