Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

이지은님의 블로그

250325 - 자바 ORM 표준 JPA 프로그래밍 Chapter.2 JPA 시작 본문

TIL

250325 - 자바 ORM 표준 JPA 프로그래밍 Chapter.2 JPA 시작

queenriwon3 2025. 3. 25. 23:03

 오늘 배운 

스터디 중인 자바 ORM 표준 JPA 프로그래밍의 2챕터를 블로그에 정리해보았다.

📋 Chapter.2 JPA 시작

1) 객체 매핑 시작
2) persistence.xml 설정
3) 애플리케이션 개발

 

 

Chapter.2 JPA 시작

1) 객체 매핑 시작

@Entity
@Table(name = "MEMBER")
public class Member {

    @Id
    @Column(name = "ID")
    private String id;

    @Column(name = "NAME")
    private String username;

    private Integer age;
}
Member @Table(name = "MEMBER") MEMBER
id @id ID (PK)
username @Column(name = "NAME") NAME
age   AGE

 

  • @Entity: 클래스를 테이블과 매핑 (엔티티 클래스)
  • @Table: 엔티티 클래스와 매핑할 테이블 정보
  • @Id: 엔티티 클래스의 필드를 테이블의 기본 키에 매핑 (식별자 필드)
  • @Column: 필드를 칼럼에 매핑
  • 매핑 정보가 없는 필드: 매핑 어노테이션을 생략하여 필드명으로 컬럼명 매핑

 

2) persistence.xml 설정

  • 영속성 유닛: 연결할 베이스당 하나의 영속성 유닛 등록
    • JPA 표중 속성
      • javax.persistence.jdbc.driver: JDBC 드라이버
      • javax.persistence.jdbc.user: 데이터베이스 접속 아이디
      • javax.persistence.jdbc.password: 데이터베이스 접속 비밀번호
      • javax.persistence.jdbc.url: 데이터베이스 접속 URL
    • 하이버네이트 속성
      • hibernate.dialect: 데이터베이스 방언 설정
      • hibernate.show_sql: 하이버네이트가 실행한 SQL을 출력
      • hibernate.format_sql: 하이버네이트가 실행한 SQL을 출력할 때 보기 쉽게 출력
      • hibernate.use_sql_comments: 쿼리를 출력할 때 주석도 함께 출력
      • hibernate.id.new_generator_mappings: JPA 표준에 맞춘 새로운 키 생성 전략 사용

 

3) 애플리케이션 개발

// [엔티티 매니저 팩토리] - 생성
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");

// [엔티티 매니저] - 생성
EntityManager em = emf.createEntityManager();

// [트랜잭션] - 획득
EntityTransaction tx = em.getTransaction();

try {
    tx.begin();     // [트랜잭션] - 시작
    logic(em);      // 비즈니스 로직
    tx.commit();    // [트랜잭션] - 커밋
} catch (Exception e) {
    tx.rollback();  // [트랜잭션] - 롤백
} finally {
    em.close();     // [엔티티 매니저] - 종료
}

emf.close();        // [엔티티 매니저 팩토리] - 종료

 

엔티티 매니저 설정
  • 1) 앤티티 매니저 팩토리 생성
    • JPA를 동작시키기 위한 기반 도구를 만들고 JPA 구현체에 따라 데이터베이스 커넥션 풀 생성 👉 생성 비용이 크다
    • 엔티티 매니저 팩토리는 애플리케이션 전체에서 딱 한번만 생성하고 공유해서 사용해야 함
  • 2) 엔티티 매니저 생성
    • 엔티티 매니저를 사용해서 엔티티를 데이터베이스에 등록/수정/삭제/조회
    • 데이터베이스 커넥션과 밀접한 관계가 있으므로 스레드간 공유하거나 재사용 불가
  • 3) 종료
    • 사용이 끝난 앤티티 매니저 팩토리앤티티 매니저는 종료해야 한다.
트랜잭션 관리


1) 트랜잭션 커밋: 비즈니스 로직 정상 동작
2) 트랜잭션 롤백: 예외 발생시 동작

 

 

비즈니스 로직


1) 등록

회원 엔티티를 생성하고 저장

String id = "id1";
Member member = new Member();
member.setId(id);
member.setUsername("지환");
member.setAge(2);

em.persist(member); // 1️⃣ 등록

 

2) 수정

더티체킹을 통해 데이터 베이스 값 수정

member.setAge(20);        // 2️⃣ 수정
UPDATE MEMBER
SET AGE=20, NAME='지한'
WHERE ID='id1'

 

3) 삭제

em.remove(member);
DELETE FROM MEMBER WHERE ID = 'id1'

 

4) 한건 조회

Member findMember = em.find(Member.class, id);
SELECT * FROM MEMBER WHERE ID='id1'
INSERT INTO MEMBER (ID, NAME, AGE) VALUES ('id1', '지한', 2) -- 등록

 

JPQL

  • JPQL은 엔티티 객체를 대상으로 쿼리한다. 클래스와 필드를 대상으로 쿼리문을 작성한다.
  • SQL은 데이터베이스 테이블을 대상으로 쿼리한다.

👉

JPQL은 데이터베이스 테이블을 전혀 알지 못한다.