[Spring] JPA, Entity, 영속성 컨텍스트

Jiwoo·2024년 5월 28일
0

Spring

목록 보기
5/19

📌 JPA (Java Persistence API)

  • Java ORM 기술의 대표적인 표준 명세

  • 애플리케이션과 JDBC 사이에서 동작
  • JPA를 사용하면 DB 연결 과정 자동으로 처리해줌
  • 객체 통해 간접적으로 DB 데이터 다룰 수 있어 쉽게 DB 작업 처리 가능

📌 Entity

  • JPA에서 관리되는 클래스, 즉 객체!
  • DB 테이블과 매핑되어 JPA에 의해 관리된다
@Entity // JPA가 관리할 수 있는 Entity 클래스 지정
@Table(name = "memo") // 매핑할 테이블의 이름을 지정
public class Memo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) // 기본키 생성
    private Long id;

    // nullable: null 허용 여부
    // unique: 중복 허용 여부 (false 일때 중복 허용)
    @Column(name = "username", nullable = false, unique = true)
    private String username;

    // length: 컬럼 길이 지정
    @Column(name = "contents", nullable = false, length = 500)
    private String contents;
}

📌 영속성 컨텍스트

  • Entity 객체를 효율적으로 쉽게 관리하기 위해 만들어진 공간
  • Entity Manager를 통해 관리되며, Entity의 상태 변화 추적하고 DB와의 동기화 책임진다
EntityManagerFactory emf = Persistence.createEntityManagerFactory("example-unit");
EntityManager em = emf.createEntityManager();

em.getTransaction().begin();

// 엔티티를 영속성 컨텍스트에 추가
Author author = new Author();
author.setName("John Doe");
em.persist(author); 

// 엔티티 조회 (1차 캐시 활용)
Author foundAuthor = em.find(Author.class, author.getId());

// 엔티티 변경
foundAuthor.setName("Jane Doe");

// 트랜잭션 커밋 (변경 사항 자동 반영)
em.getTransaction().commit();

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

0개의 댓글