2013-06-09 9 views
1

EntityManager 사용에 대한 질문이 있습니다. 하나의 스레드에서 모든 간단한 데이터베이스 호출에 대해 EntityManager를 열고 닫는 것이 현명하지 않다는 것을 읽었습니다!DAO 메서드 당 EntityManager

모든 DAO 메소드마다 하나의 EntityManager를 갖거나 DAO 메소드마다 하나의 EntityManager를 갖는 것이 더 좋습니까?

답변

3

EntityManager를 생성하고 '작업 단위'를 수행 한 다음 닫아야합니다. 삽입, 업데이트, 삭제, 또는 좀 더 복잡한 비즈니스 로직 : 작업의

http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html_single/#d0e980

유닛은 같은 것을 할 것이다. 각 메서드에는 작업 단위 (Unit of Work)가 포함되어야하므로 각 메서드에 대해 새 EntitiyManager 인스턴스를 가져야합니다.

업데이트 : 응용 프로그램이 실행 중이거나 세션이 열려있는 동안 확장 된 EntityManager의 개념이 있습니다. 컨테이너에 의해 관리됩니다.

+0

예, 두 가지 방법을 호출하면 'transcation not active'가됩니다. 왜냐하면 두 개의 differen 엔터티 관리자가 있기 때문입니까? –

+1

두 가지 방법으로 트랜잭션을 수행하려는 경우 동일한 엔티티 관리자를 사용해야한다고 생각합니다. – aglassman

0

Entity와 DAO 간략한 관계로 설명 드리겠습니다.

주로 두 엔티티

1.Admin 구성 온라인 선박 예약 시스템의 예를 고려 - 온라인 예약 선박 티켓 온라인 결제를 -

2. 사용자 선박 정보 등을 삭제, 추가, 수정 수행 합니

이 시나리오의 경우 관리 엔티티 (배 세부 정보 -이 엔티티가 수행 할 수있는 다른 종류의 기능을 추가, 수정, 삭제)에서 하나의 AdminDAO가 필요하며 이는 관리자 엔티티가 수행 할 수있는 모든 기능으로 구성됩니다.

이 엔티티는 모든 java 서블릿 클래스에서 호출됩니다.

간단히 말해 각 엔티티마다 하나의 DAO가 필요합니다.

+0

그들은 EntityManager에 대한 것이 아니라 EntityManager에 대한 이야기입니다. – aglassman