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 |