본문 바로가기

Dev/JPA

RS) JPA 어플리케이션 실습

JPA 기본 실습

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

        EntityTransaction tx = em.getTransaction();
        tx.begin();

        try{
            Member findMember = em.find(Member.class, 1L);
            findMember.setName("HelloJPA");
            
            //em.persist(member);

            tx.commit();
        }catch(Exception e){
            tx.rollback();
        }finally{
            em.close();
            emf.close();
        }
    }

 

주의할점

  • 엔티티 매니저 팩토리는 하나만 생성해서 사용하며, 어플리케이션 전체에 공유하는 방식
  • 엔티티 매니저는 쓰레드간에 절대 공유해서는 안된다. (커넥션 풀을 연결하고 끊고 하는 것처럼 사용하고 버려야 함)
  • JPA의 모든 데이터 변경은 트랜잭션 안에서 실행해야 한다.

JPQL의 소개

  • JPA를 사용하면 엔티티 객체를 중심으로 개발
  • 하지만 검색을 하게 될 경우에는??
  • 검색을 해도 테이블이 아닌 엔티티 객체를 대상으로 검색 함.
  • 모든 DB데이터를 객체로 변환해서 검색하는 것은 불가능 → 결국 필요한 데이터만 DB에서 불러오려면 검색조건이 포함된 SQL문이 필요함
  • JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공
    • JPQL은 엔티티 객체를 대상으로 쿼리
    • SQL을 데이터베이스 테이블 대상으로 쿼리

 

'Dev > JPA' 카테고리의 다른 글

RS) 플러시(flush)  (0) 2022.02.01
RS) 영속성 컨텍스트  (0) 2022.02.01
RS) JPA(Java Persistence API)  (0) 2022.02.01
RS) SQL 중심적인 개발의 문제점  (0) 2022.02.01
JPA의 사용  (0) 2021.04.09