자바 ORM 표준 JPA 프로그래밍(인프런)

Ch02. JPA 시작 - 애플리케이션 개발

webmaster 2021. 12. 8. 13:30
728x90

JPA 구동방식

JPA 구동 방식

  • persistence.xml 설정 정보를 조회하여 EntityManagerFactory를 생성한다.
  • EntityManagerFactory에서 EntityManager를 생성하여 EntityManager를 통해 JPA를 사용하면 된다.

public class JpaMain {
    public static void main(String[] args) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
        //Persistence Unit의 이름을 넣는다.

        EntityManager em = emf.createEntityManager();
        //code
        EntityTransaction tx = em.getTransaction();
        tx.begin(); // DB는 트렌젝션이 매우 중요하기때문에 하나의 트렌젝션으로 묶어 주어야 한다.
        try{
            /*
            Member member = new Member();
            member.setId(2L);
            member.setName("helloB");
            */
            Member findMember = em.find(Member.class,1L);
            findMember.setName("helloJPA");//해당 멤버를 변경만 하면 값이 자동으로 변화된다,
            //java 객체에서 값만 변경했는데 Update를 해준다.
            //영속성 컨택스트가 관리하는 엔티티는 commit 시점에 더티체크를 하여 바뀐부분을 찾아 update쿼리를 날려준다.
            
            //em.remove(findMember);//삭제
            tx.commit();
        }catch (Exception e){
            tx.rollback();
        }finally {
            em.close(); //자원을 꼭 닫아주는것이 중요하다.
        }
        emf.close();
    }
}

 

  • crud 쿼리를 만들지 않았지만 JPA가 자동으로 쿼리를 생성해준다.
  • 주의사항
    • 엔티티 매니저 팩토리는 하나만 생성해서 애플리케이션 전체에서 공유
    • 엔티티 매니저는 쓰레드간에 공유 X (사용하고 버려야 한다).
    • JPA의 모든 데이터 변경은 트랜잭션 안에서 실행

JPQL 

엔티티 객체를 대상으로 쿼리를 작성

Jpql

  • JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공
  • SQL과 문법 유사, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 지원
  • JPQL은 엔티티 객체를 대상으로 쿼리
  • SQL은 데이터베이스 테이블을 대상으로 쿼리
728x90