12. JPA

동동주·2024년 6월 9일
0

spring 기말고사

목록 보기
9/11

🎯 JPA를 써야 하는 이유!

  • Persistence(영속성): Java 객체에 포함된 데이터를 DB를통해 저장 및 관리함으로써 객체의 영속성을 보장함
  • EntityMananger interface: 설정된 mapping에 따라 Java 객체를 테이블에 저장하고 수정, 삭제, 검색할 수 있는 인터페이스를 제공
  • JDBC API나 Data Mapper(ex. MyBatis)의 대안: Java 객체 중심의 데이터 관리 가능
  • SQL문 자동 생성 및 실행 (직접 작성할 필요 X, JDBC/MyBatis는 직접 작성)


⛓️ 구성요소

  • Entity
    • ORM 기술을 통해 DB에 영속적으로 저장 관리되는 객체
  • Object-Relational Mapping(ORM) 설정
    • Mapping 방법 정의, Annotation/XML 이용
  • EntityManager
    • CRUD 기능 실행
  • JPQL(Java Persistence Query Language)
  • Criteria API

📌 Entity

  • 영속적인 데이터를 포함하는 POJO(Plain Old Java Object) 객체
  • EntityManager에 의해 영속적으로 관리되는 객체 단위

📌 ORM 설정을 위한 주요 annotations

  • Entity 정의
    @Entity, @Embeddable, @Embedded
  • Entity의 식별자 속성 정의
    @Id, @IdClass, @EmbeddedId
  • Entity와 테이블 간의 mapping 정의
    @Table, @SecondaryTable, @Column, @JoinColumn, @PrimaryKeyJoinColumn, @Transient, @Temporal, @Enumerated, @GeneratedValue, @AttributeOverides, @Inheritance 등
  • Entity들 사이의 연관관계 정의
    @OneToOne, @OneToMany, @ManyToMany, @JoinTable 등

📌 EntityManager

  • Entity를 영속 컨텍스트 안에서 영속적인 객체로 관리
  • 영속적 객체에 대해 DB 저장, 갱신, 삭제 실행
    • 트랜잭션 완료(commit)시 영속적 객체와 테이블(레코드) 간에 동기화 실행
  • 질의 결과에 대해 영속적 객체 생성

✳️ Entity의 생명주기(life-cycle) 관리

➡️ EntityManager 주요 메소드

1. persist()
public void persist(Object entity);

  • save를 한다. 즉, insert의 의미

🔊 순서



2. find()
public <T> T find(Class<T> entityClass, Object primaryKey);



3. merge()
public <T> T merge(T entity);



4. remove()
public void remove(Object entity);



@PersistenceContext란?
Java Persistence API (JPA)에서 엔티티 매니저(EntityManager)를 주입하는 데 사용되는 어노테이션

  • spring 프레임워크에서 일반적인 의존성을 주입하는 @Autowired와 유사하다.

0개의 댓글