JPA

JPA 개발

으엉어엉 2024. 8. 15. 16:47
728x90

구동방식

import jakarta.persistence.*;

public class JpaMain {

    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");

        EntityManager em = emf.createEntityManager(); //무언가를 할 때마다 매니저 만들어야함
        EntityTransaction tx = em.getTransaction();
        tx.begin();

        try {
            Member member = new Member();
            member.setId(1L);
            member.setName("HelloA");
            em.persist(member);
            tx.commit();
        }catch (Exception e) {
            tx.rollback();
        }finally {
            em.close(); //사용을 다하면 닫아줘야함
        }
        emf.close(); //전체 끝나면 닫아준다.
    }
}

 

 

테이블 생성을 한다.

 

 

EntityManagerFactory는 EntityManager 객체를 생성하는 팩토리이다. 이 객체는 JPA 애플리케이션에서 데이터베이스와 상호작용하는 데 사용된다.

EntityManager는 JPA에서 가장 핵심적인 클래스 중 하나로, 데이터베이스에 대한 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 수행할 수 있게 한다.

EntityTransaction은 데이터베이스 트랜잭션을 관리한다. 트랜잭션은 데이터베이스 작업을 그룹화하여, 작업이 모두 성공하거나 모두 실패하도록 보장한다. 대부분의 데이터베이스 작업은 트랜잭션 내에서 실행된다. 트랜잭션을 시작(begin)하고, 모든 작업이 성공적으로 완료되면 커밋(commit)하여 데이터베이스에 반영한다. 만약 작업 중 하나라도 실패하면 롤백(rollback)하여 모든 변경을 취소할 수 있다.

 

주의사항!

  • 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에 서 공유 
  • 엔티티 매니저는 쓰레드간에 공유X (사용하고 버려야 한다).
  • JPA의 모든 데이터 변경은 트랜잭션 안에서 실행

 

JPA의 문제는 검색 쿼리

  • 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색
  • 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능
  • 애플리케이션이 필요한 데이터만 DB에서 불러오려면 결국 검 색 조건이 포함된 SQL이 필요함

 

해결방법으로는 JPQL 이 있다.

 

728x90

'JPA' 카테고리의 다른 글

JPA 연관관계  (0) 2024.08.21
JPA 엔티티 매핑  (0) 2024.08.15
JPA 플러시  (0) 2024.08.15
JPA 영속성  (0) 2024.08.15
JPA란?  (0) 2024.08.15