0

我正在尝试为某些基本的Google App Engine服务编写Spring配置。特别是对于EntityManagerFactory和Entity Manager。使用Spring 3.0的Google App Engine实体管理器配置

要创建Java代码中的EntityManagerFactory:

EntityManagerFactory emfInstance = javax.persistence.Persistence 
    .createEntityManagerFactory("transactions-optional"); 

因为这也是我翻译:

<bean id="entityManagerFactory" class="javax.persistence.Persistence" 
    factory-method="createEntityManagerFactory" scope="singleton"> 
    <constructor-arg value="transactions-optional"/> 
</bean> 

而且每次我需要一个EntityManager

EntityManager em = emfInstance.get().createEntityManager(); 

但我不不知道如何将工厂方法应用到先前创建的工厂。

<bean id="entityManagerProto" 
    factory-method="createEntityManager" scope="prototype"/> 

任何人都知道吗?谢谢。

回答

2

您可以使用现有的bean作为一个工厂如下:

<bean id="entityManagerProto" 
    factory-bean = "entityManagerFactory" 
    factory-method="createEntityManager" scope="prototype"/> 

而且,我不知道它是否会在GAE上工作,但也许这将是更好地使用LocalEntityManagerFactoryBean代替,并获得EntityManager注射了@PersistenceContext

+0

谢谢你,但LocalEntityManagerFactoryBean负责一注云:*仅使用简单的部署环境,如独立的应用程序和集成测试此选项* – stivlo

+0

@stivlo:'LocalEntityManagerFactoryBean'不完全一样的,你做手工的东西。春天的家伙意味着在生产环境中,你可能想要以更复杂的方式获得'EntityManagerFactory'(由LocalContainerEntityManagerFactoryBean提供),但它肯定不适用于GAE。 – axtavt

+0

啊,我明白了...我会试试的。 – stivlo