728x90
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
엔티티 객체를 대상으로 쿼리를 작성

- JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공
- SQL과 문법 유사, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 지원
- JPQL은 엔티티 객체를 대상으로 쿼리
- SQL은 데이터베이스 테이블을 대상으로 쿼리
728x90
'자바 ORM 표준 JPA 프로그래밍(인프런)' 카테고리의 다른 글
| Ch04. 엔티티 매핑 - 객체와 테이블 매핑 (0) | 2021.12.10 |
|---|---|
| Ch03. 영속성 관리(내부 동작 방식) - 준영속 상태 (0) | 2021.12.09 |
| Ch03. 영속성 관리(내부 동작 방식) - 플러시 (0) | 2021.12.09 |
| Ch03. 영속성 관리(내부 동작 방식) - 영속성 컨텍스트 (0) | 2021.12.09 |
| Ch02. JPA 시작 - 프로젝트 생성 (0) | 2021.12.08 |