【问题标题】:Using LocalContainerEntityManagerFactoryBean to create a session?使用 LocalContainerEntityManagerFactoryBean 创建会话?
【发布时间】:2016-06-06 22:42:22
【问题描述】:

我是第一次使用Spring。是否可以使用LocalContainerEntityManagerFactoryBean 来创建类似于休眠会话的东西?

我熟悉在 JPA 中从 hibernate.cfg.xmlentityManagerFactory 创建休眠会话。

但是我如何使用LocalContainerEntityManagerFactoryBean 才能对我的数据库执行事务?

【问题讨论】:

  • 您要创建SessionFactory 还是EntityManagerFactory
  • @v.ladynev 他想创建 EntityManagerFactory,因为 LocalContainerEntityManagerFactoryBean 是创建 JPA EntityManagerFactory 的 FactoryBean
  • @PragnaniKinnera Ok.Thanx.
  • 感谢@PragnaniKinnera,这是正确的!

标签: java spring hibernate session jpa


【解决方案1】:

您必须定义 jpa 事务管理器,该管理器将配置到您的 LocalContainerEntityManagerFactoryBean,例如:

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
  </bean>



<bean id="entityManagerFactory"

        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="enginePU" />
        <property name="dataSource" ref="dataSource" />
        <property name="jpaProperties">
           <props>
                <prop key="hibernate.hbm2ddl.auto">none</prop>
                <prop key="hibernate.default_schema">dbo</prop>
                <prop key="hibernate.default_catalog">ab</prop>
           </props>
        </property>
      </bean>

如果您将事务配置为注释驱动:

<tx:annotation-driven />

您可以像这样在您的 daos 中使用 entityManager:

    @PersistenceContext
    protected EntityManager entityManager;


    @Override
    @Transactional(propagation = Propagation.REQUIRED)
    public void persist(Object o) throws IOException {
         entityManager.persist(o);
    }

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2014-05-10
    • 2014-12-22
    • 1970-01-01
    • 2017-03-08
    • 2021-12-25
    • 2014-08-27
    • 1970-01-01
    • 2010-12-25
    • 1970-01-01
    相关资源
    最近更新 更多