java事务超时时间,Spring hibernate事务超时

我有一个应用程序使用spring 4.0.1 JPA hibenate 4.2.8(spring的JpaTransactionManager,LocalContainerEntityManagerFactoryBean与HibernateJpaDialect和apache的BasicDataSource作为DataSource)进行数据库访问 . 在某个时刻,应用程序开始长时间运行的转换(从大表中选择本机查询),必须中断(回滚) .

我尝试了几种设置超时的方法:

1)在LocalContainerEntityManagerFactoryBean的JpaProperties中设置“javax.persistence.query.timeout”

2)JpaTransactionManager的setDefaultTimeout(...)

3)EntityManeger的Query的setHint(“javax.persistence.query.timeout”,4000) .

4)Hibernate的QueryImpl(hintName“org.hibernate.timeout”)的setHint(“org.hibernate.timeout”,4)

但这些都没有 . 是否可以中断/回滚事务,如果是这样,我该怎么做?

我的confs:

@Bean(name = "entityManagerFactory")

public EntityManagerFactory entityManagerFactory() {

LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();

em.setDataSource(dataSource());

em.setJpaDialect(new HibernateJpaDialect());

em.setJpaVendorAdapter(jpaVendorAdapter());

em.setJpaProperties(getJpaProperties());

em.setPersistenceUnitName("persUnit");

em.setMappingResources("/META-INF/app.hbm.xml");

em.afterPropertiesSet();

return em.getObject();

}

public Properties getJpaProperties() {

Properties properties = new Properties();

properties.put("hibernate.temp.use_jdbc_metadata_defaults", "false");

properties.put("hibernate.cache.provider_configuration",

"/ehcache.xml");

properties.put("hibernate.cache.use_second_level_cache", "true");

properties.put("hibernate.cache.use_query_cache", "true");

properties.put("hibernate.generate_statistics", "true");

properties.put("hibernate.jdbc.use_get_generated_keys", "true");

properties.put("hibernate.jdbc.batch_size", "100");

properties.put("hibernate.jdbc.fetch_size", "100");

properties.put("hibernate.jdbc.batch_versioned_data", "true");

properties.put("hibernate.cache.use_structured_entries", "true");

properties.put("hibernate.cache.region.factory_class",

"org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory");

return properties;

}

@Bean(name = "jpaVendorAdapter")

public JpaVendorAdapter jpaVendorAdapter() {

HibernateJpaVendorAdapter jpaVendorAdapter = new HibernateJpaVendorAdapter();

jpaVendorAdapter.setDatabase(Database.ORACLE);

jpaVendorAdapter.setDatabasePlatform("org.hibernate.dialect.Oracle10gDialect");

return jpaVendorAdapter;

}

@Bean

public DataSource dataSource() {

BasicDataSource dataSource = new BasicDataSource();

dataSource.setUrl(getUrl());

dataSource.setUsername(user);

dataSource.setPassword(password);

dataSource.setAccessToUnderlyingConnectionAllowed(true);

dataSource.setDriverClassName(...);

dataSource.setMaxWait(5000);

dataSource.setMaxActive(30);

dataSource.setMaxIdle(3);

return dataSource;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值