JPA를 사용하기 위해선 일단 EntityManagerFactory가 필요하다.
Persistence를 사용해 생성하면 된다
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
생성한 EntityManagerFactory로 EntityManager를 생성한다.
EntityManager em = emf.createEntityManager();
create table Member (
id bigint not null,
name varchar(255),
primary key (id)
);
@Entity
public class Member {
@Id
private Long id;
private String name;
...
}
EntityManagerFactory는 하나만 생성해서 애플리케이션 전체에서 공유해야 한다
EntityManager는 사용하고 버린다 em.close();
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
// 트랜잭션 얻어오기
EntityTransaction tx = em.getTransaction();
tx.begin(); // 트랜잭션 시작
try {
// 코드 작성
tx.commit(); // 커밋
} catch (Exception e) {
tx.rollback(); // 예외 발생하면 롤백
} finally {
em.close();
}
emf.close();
Member 객체에 값을 넣고 저장
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
// 트랜잭션 얻어오기
EntityTransaction tx = em.getTransaction();
tx.begin(); // 트랜잭션 시작
// Member 객체 생성
try {
Member member = new Member();
member.setId(2L);
member.setName("HelloB");
// 저장
em.persist(member);
tx.commit(); // commit을 해야 DB에 반영됨
} catch (Exception e) {
tx.rollback();
} finally {
em.close();
}
emf.close();
저장한 Member객체 조회, 수정
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");
EntityManager em = emf.createEntityManager();
// 트랜잭션 얻어오기
EntityTransaction tx = em.getTransaction();
tx.begin(); // 트랜잭션 시작
try {
// DB에서 조회
Member findMember = em.find(Member.class, 2L);
// 수정
findMember.setName("HelloJPA");
tx.commit(); // commit을 해야 DB에 반영됨
} catch (Exception e) {
tx.rollback();
} finally {
em.close();
}
emf.close();