JPA 어플리케이션 시작하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpabookmall02"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); try { //Buiseness Logic } catch (Exception e) { e.printStackTrace(); tx.rollback(); } tx.commit(); em.close(); emf.close(); } } | cs |
JPA 어플리케이션 생성 순서
1. 엔티티 매니저 팩토리 생성
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "jpabookmall" );
2. 엔티티 매니저 생성
EntityManager em = emf.createEntityManager();
3. 트랜잭션 받기
EntityTransaction tx = em.getTransaction();
4. 트랜젹션 시작
tx.begin();
5. 비지니스 코드 실행
logic( em );
6. 트랜잭션 커밋
tx.commit();
7. 엔티티 매니저 종료
em.close();
8. 엔티티 매니저 팩토리 닫기
emf.close();
EntityManagerFactory
- EntityManager를 생성해주는 EntityMangerFactroy 객체를 먼정 생성해야합니다.
- Persistence.xml에 설정된 이름을 찾아 emf가 만들어집니다.
- 여러 기반 객체를 생성하고, 커넥션 풀들을 생성하고 설정하기 때문에 비용이 아주 큰 작업이므로, 보통 EntitiyManagerFactory는 하나만 생성하고 공유해서 사용합니다.
- 어플을 종료할때 EntityManagerFactory도 종료합니다..
EntityManger
- 데이터베이스의 CRUD 작업을 할 수 있습니다..
- 내부의 데이터 소스를 유지 하면서 데이터 베이스와 통신할 수 있습니다..
- 가상의 데이터베이스로 생각할 수 도 있습니다..
- 데이터 베이스 커넥션과 밀접한 관계가 있기 때문에 쓰레드 간의 공유나 재사용하면 안됩니다.
- 사용이 끝난 EntityManager는 반드시 종료 해야합니다..
EntityTransaction
- JPA는 항상 트랜잭션 안에서 CRUD 작업들을 해야 합니다..
- 트랜잭션 시작과 커밋사이에서 작업을 진행해야 하며, 작업 도중에 예외 발생 시에 rollback을 하여 CRUD작업을 취소 할 수 있습니다.