如何将清空模式设置为“COMMIT”在我的配置文件? [英] How do I set flush mode to "COMMIT" in my configuration files?
问题描述
我使用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屋!