2011-03-13 3 views
0

GWT, Hibernate 및 Google Guice (GIN 포함)를 사용하는 비교적 단순한 응용 프로그램을 작성하고 있습니다. 내가 원했던 것은 EntityManager#getTransaction을 사용하는 대신 외부 관리자 (예 : @Transactional : 봄)를 사용하여 트랜잭션을 관리하도록하는 것입니다. @Transactional을 사용해 보았지만 나에게 도움이되지 않습니다. Hibernate와 Guice로 JavaSE에서 트랜잭션 관리

나는 EntityManager에 이미이 같은 Providers를 사용하여 주입이 :

/* import stuff */ 

public class DbProvider implements Provider<EntityManager> { 

    public EntityManager get() { 
     EntityManagerFactory emf = Persistence.createEntityManagerFactory("persdb"); 
     return emf.createEntityManager(); 
    } 

} 

수동으로 트랜잭션을 관리 할 때 제대로 작동하는 것 같다. DBUnit을 사용하여 자동 테스트를 수행하기 위해 트랜잭션을 자동으로 관리하고자했습니다.

누구든지 해결 방법을 알고 있습니까?

답변

5

Guice requires three things@Transactional 일을 갖는 :

  • 방법은 private
  • 을해서는 안

    • 당신은 클래스 패스
    • @Transactional 방법은 Guice에 의해 작성해야합니다라고하는 개체를에 guice-persist.jar 필요
    +0

    감사합니다. 그게 효과가 있다면 :) 어디에서 PersistService를 시작합니까? – mhaligowski

    +0

    @halish : 당신이 원하는 곳에 언제든지 PersistService를 시작할 수있다. 웹 응용 프로그램에서는 서비스가 생성 될 때 서비스를 시작하고 파기 될 때 서비스를 중지하는'PersistFilter'를 사용하여 수행 할 수 있습니다. 자신의 응용 프로그램에서 사용하기 전에 먼저 응용 프로그램을 시작해야합니다. – ColinD

    관련 문제