如何将清空模式设置为“COMMIT”在我的配置文件? [英] How do I set flush mode to "COMMIT" in my configuration files?

查看:159
本文介绍了如何将清空模式设置为“COMMIT”在我的配置文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Spring 3.1.1.RELEASE,Hibernate 4.1.0.Final和JPA 2.0。有没有一种方法可以配置Spring事务在事务执行之后提交而没有Java代码?换句话说,我想要在应用程序上下文文件,hibernate配置文件或persistence.xml文件中设置刷新模式。我的Spring事务服务类看起来像

  @Transactional(rollbackFor = Exception.class)
@Service
公共类ContractServiceImpl实现ContractService
{

@Autowired
私人ContractDAO m_contractDao;

public void addContract(Contract contract)
{
m_contractDao.create(contract);
}

...

和我的应用程序上下文是...

 < bean id =dataSourceclass =org.springframework.jdbc.datasource.DriverManagerDataSource > 
< property name =driverClassNamevalue =org.hsqldb.jdbcDriver/>
< property name =urlvalue =jdbc:hsqldb:mem:myproject/>
< property name =usernamevalue =sa/>
< property name =passwordvalue =/>
< / bean>

< bean id =entityManagerFactoryclass =org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean>
< property name =jpaVendorAdapter>
< bean class =org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter/>
< / property>
< property name =persistenceXmlLocationvalue =classpath *:META-INF / test-persistence.xml/>
< property name =persistenceUnitNamevalue =testingDatabase/>
< property name =dataSourceref =dataSource/>
< / bean>

< bean id =sharedEntityManagerclass =org.springframework.orm.jpa.support.SharedEntityManagerBean>
< property name =entityManagerFactoryref =entityManagerFactory/>
< / bean>

< bean id =transactionManagerclass =org.springframework.orm.jpa.JpaTransactionManager>
< property name =entityManagerFactoryref =entityManagerFactory/>
< / bean>

< tx:annotation-driven />

我的persistence.xml文件是

 < persistence version =2.0
xmlns =http://java.sun.com/xml/ns/persistencexmlns:xsi =http:// www .w3.org / 2001 / XMLSchema-instance
xsi:schemaLocation =http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml /ns/persistence/persistence_2_0.xsd\">
< persistence-unit name =testingDatabasetransaction-type =RESOURCE_LOCAL>
< provider> org.hibernate.ejb.HibernatePersistence< / provider>
<属性>
< property name =hibernate.ejb.cfgfilevalue =/ hsql_hibernate.cfg.xml/>
< property name =org.hibernate.FlushModevalue =commit/>
< / properties>
< / persistence-unit>
< /余辉>

和我的hibernate配置文件是

 <?xml version ='1.0'encoding ='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC
- // Hibernate / Hibernate Configuration DTD // EN
http://www.hibernate.org/dtd/hibernate-configuration- 3.0.dtd>

< hibernate-configuration>
< session-factory>
< property name =hibernate.connection.pool_size> 1< / property>
< property name =show_sql> true< / property>
< property name =dialect> org.hibernate.dialect.HSQLDialect< / property>
< property name =hibernate.hbm2ddl.auto> create-drop< / property>

< mapping class =org.mainco.subco.sbadmin.domain.Product/>
< mapping class =org.mainco.subco.sbadmin.domain.Contract/>
< mapping class =org.mainco.subco.organization.domain.Country/>
< mapping class =org.mainco.subco.organization.domain.State/>
< mapping class =org.mainco.subco.organization.domain.Address/>
< mapping class =org.mainco.subco.organization.domain.OrganizationType/>
< mapping class =org.mainco.subco.organization.domain.Organization/>

< / session-factory>
< / hibernate-configuration>


解决方案

检查链接



您可能需要

p $ p>

我希望这有助于!


I'm using Spring 3.1.1.RELEASE, Hibernate 4.1.0.Final, and JPA 2.0. Is there a way I can configure Spring transactions to commit after the transactions are executed without Java code? In other words, I would like to set flush mode to commit in either the application context file, hibernate configuration file, or persistence.xml file. My Spring transaction service class looks like

@Transactional(rollbackFor = Exception.class)
@Service
public class ContractServiceImpl implements ContractService
{

    @Autowired
    private ContractDAO m_contractDao;

    public void addContract(Contract contract)
    {
       m_contractDao.create(contract);
    }

    ...

and my application context is set up like so …

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
    <property name="url" value="jdbc:hsqldb:mem:myproject" />
    <property name="username" value="sa" />
    <property name="password" value="" />
</bean>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"/>
    </property>
    <property name="persistenceXmlLocation" value="classpath*:META-INF/test-persistence.xml"/>
    <property name="persistenceUnitName" value="testingDatabase"/>
    <property name="dataSource" ref="dataSource"/>
</bean>

<bean id="sharedEntityManager" class="org.springframework.orm.jpa.support.SharedEntityManagerBean">
   <property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

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

<tx:annotation-driven />

My persistence.xml file is

<persistence version="2.0"
   xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
        <persistence-unit name="testingDatabase" transaction-type="RESOURCE_LOCAL">
                <provider>org.hibernate.ejb.HibernatePersistence</provider>
                <properties>
                        <property name="hibernate.ejb.cfgfile" value="/hsql_hibernate.cfg.xml" />
        <property name="org.hibernate.FlushMode" value="commit" />
                </properties>
        </persistence-unit>
</persistence>

and my hibernate config file is

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.pool_size">1</property>
        <property name="show_sql">true</property>
        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
        <property name="hibernate.hbm2ddl.auto">create-drop</property>

        <mapping class="org.mainco.subco.sbadmin.domain.Product" />
        <mapping class="org.mainco.subco.sbadmin.domain.Contract" />
        <mapping class="org.mainco.subco.organization.domain.Country" />
        <mapping class="org.mainco.subco.organization.domain.State" />
        <mapping class="org.mainco.subco.organization.domain.Address" />
        <mapping class="org.mainco.subco.organization.domain.OrganizationType" />
        <mapping class="org.mainco.subco.organization.domain.Organization" />

    </session-factory>
</hibernate-configuration>

解决方案

Check this link

You may need to extend

org.springframework.orm.jpa.vendor.HibernateJpaDialect 

I hope this helps!

这篇关于如何将清空模式设置为“COMMIT”在我的配置文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆