簡體   English   中英

使用@Transactional的Spring 3.x和Hibernate 4.x事務管理問題

[英]Spring 3.x and hibernate 4.x transaction management issue using @Transactional

我正在使用Spring 3.0和Hibernate 4.x,但是我在事務管理方面面臨問題。 我在服務層中使用@Transactional批注,但是將大量數據保存到數據庫中花費的時間太長。

這是我的交易經理:

<tx:annotation-driven />
<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

我正在使用以下代碼行插入數據:

sessionFactory.getCurrentSession().save(deal);

如果有人有解決方案,請幫幫我。

@Transactional對您的表現不承擔任何責任。 首先使用批處理來處理大量數據,如下所示

int i = 0;
for(Deal deal : deals)
    session.save(deal);
    if ( i % 20 == 0 ) { //20, same as the JDBC batch size
        //flush a batch of inserts and release memory:
        session.flush();
        session.clear();
    }
   i++; 
}
session.flush();
session.clear();

閱讀有關第13章的更多信息。批處理

有時,不是查詢本身導致速度下降-由於事務隔離和鎖定,對表進行操作的另一個查詢很容易插入,從而導致速度下降。 閱讀有關此外部因素的更多信息

鏈接1

innodb_buffer_pool_size = 614M

索引太多?

主鍵生成

為什么MySQL InnoDB插入這么慢?

希望這件事對你有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM