객체 매핑완료!! persistence.xml 로 JPA 설정도 완료 했다면 !!
이제 JPA 애플리케이션을 개발해보자..
코드는 크게 3부분으로 나뉘어있다
- 엔티티 매니저 설정
- 트랜잭션 관리
- 비즈니스 로직
JpaMain.java
package jpabook.start;
import javax.persistence.*;
import java.util.List;
/**
* @author holyeye
*/
public class JpaMain {
public static void main(String[] args) {
//엔티티 매니저 팩토리 생성
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");
EntityManager em = emf.createEntityManager(); //엔티티 매니저 생성
EntityTransaction tx = em.getTransaction(); //트랜잭션 기능 획득
try {
tx.begin(); //트랜잭션 시작
logic(em); //비즈니스 로직
tx.commit();//트랜잭션 커밋
} catch (Exception e) {
e.printStackTrace();
tx.rollback(); //트랜잭션 롤백
} finally {
em.close(); //엔티티 매니저 종료
}
emf.close(); //엔티티 매니저 팩토리 종료
}
public static void logic(EntityManager em) {
String id = "id1";
Member member = new Member();
member.setId(id);
member.setUsername("지한");
member.setAge(2);
//등록
em.persist(member);
//수정
member.setAge(20);
//한 건 조회
Member findMember = em.find(Member.class, id);
System.out.println("findMember=" + findMember.getUsername() + ", age=" + findMember.getAge());
//목록 조회
List<Member> members = em.createQuery("select m from Member m", Member.class).getResultList();
System.out.println("members.size=" + members.size());
//삭제
em.remove(member);
}
}
출력결과>>
findMember=지한, age=20
members.size=1
- 엔티티 매니저 설정
1) 엔티티 매니저 팩토리 생성
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabook");
엔티티 매니저 팩토리를 생성해서 JPA를 사용할 수 있게 준비.
2)엔티티 매니저 생성
EntityManager em = emf.createEntityManager();
엔티티매니저를 사용해서 엔티티를 데이터베이스에 등록/수정/삭제/조회 할 수 있다.
참고로 엔티티 매니저는 데이터베이스 커넥션과 밀접한 관계가 있으므로 스레드간에 공유하거나 재사용하면 안됨.
3) 종료
사용이 끝난 엔티티 매니저와 팩토리는 반드시 종료해주어야함.
em.close(); //엔티티 매니저 종료
emf.close(); //엔티티 매니저 팩토리 종료
- 트랜잭션 관리
1) JPA를 사용하면 항상 트랜잭션 안에서 데이터를 변경해야함.
EntityTransaction tx = em.getTransaction(); //트랜잭션 기능 획득
try {
tx.begin(); //트랜잭션 시작
logic(em); //비즈니스 로직
tx.commit();//트랜잭션 커밋
} catch (Exception e) {
tx.rollback(); // 예외발생시 트랜잭션 롤백
}
- 비즈니스 로직
회원엔티티를 하나 생성 한 다음 엔티티 매니저를 통해 데이터베이스에 등록,수정,삭제,조회 한다
1) 등록
em.persist(member);
2) 수정
member.setAge(20);
3) 삭제
em.remove(member);
4) 한 건 조회
Member findMember = em.find(Member.class, id);
5) 하나 이상 조회 (JPQL)
List<Member> members = em.createQuery("select m from Member m", Member.class).getResultList();
System.out.println("members.size=" + members.size());
'JPA' 카테고리의 다른 글
JPA시작(6)_기본키 매핑 (직접할당, 자동생성) (0) | 2021.06.07 |
---|---|
JPA시작(5)_데이터베이스 스키마 자동생성 (0) | 2021.06.07 |
JPA시작(4)_다양한 매핑 사용 @Enumerated, @Temporal, @Lob, @Column, @UniqueConstraint (0) | 2021.06.07 |
JPA시작(2)_객체 매핑방법_@Entity, @Table, @Id, @Column, persistence.xml 설정 (0) | 2021.06.07 |
JPA시작(1)_H2데이터베이스 설치 / maven 설정 (0) | 2021.06.07 |