ecsimsw
JPA / EntitiyManager 본문
"T아카데미 / JPA 프로그래밍 기본기 다지기 - 김영한 " 강좌를 듣고 정리한 글입니다.
EntitiyManagerFactory
EntityManagerFactory는 transaction 단위의 업무를 처리할 때 항상 EntityManager를 생성하고 이를 통해 jdbc를 사용한다.
하나만 생성해서 애플리케이션 전체에서 공유하도록 한다.
persistence-unit name는 persistence.xml에서 persistence-unit을 설정할 때 지정한다.
EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistence-unit name);
Entity
@Entity
@Getter @Setter
public class Member {
@Id
private Long id;
private String name;
}
@Entity : JPA가 관리할 객체 표시
@Id : DB의 PK와 매핑
EntitiyManager / EntitiyTransaction
EntitiyManager는 쓰레드간에 공유를 해선 안된다.
사용할 때마다 생성해서 사용 후 버린다.
JPA의 모든 데이터 변경은 트랜젝션 안에서 실행되어야한다. ( Spring이라면 @Transaction 안에서)
public class Main {
public static void main(String[] args){
EntityManagerFactory emf =
Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();// jpa의 모든 활동은 트랜젝션 안에서!
tx.begin();
try{
Member member = new Member();
member.setId(1L);
member.setName("memberA");
em.persist(member);
tx.commit();
}catch (Exception e){
tx.rollback();
}finally{
em.close();
}
emf.close();
}
}
결과 확인
'Database > JPA, ORM' 카테고리의 다른 글
JPA / 연관관계 매핑 / 양방향 매핑 / MappedBy (2) | 2020.06.26 |
---|---|
JPA / 연관 관계 매핑 / 단방향 매핑 (0) | 2020.06.26 |
JPA / 기본 키 매핑 (0) | 2020.06.26 |
JPA / 필드와 컬럼 매핑 (0) | 2020.06.25 |
JPA / 객체를 컬렉션을 저장하듯 DB에 저장할 순 없을까 / 김영한 (0) | 2020.06.24 |
Comments