1.jdbc方式中使用executeBatch實現
JDBC中在做數據插入、更新、刪除操作,可以使用executeBatch()方法減少數據庫調用次數,如:
~~~
Statement pstmt = conn.createStatement();
pstmt.addBatch("insert into settings values(3,'小米','女')");
pstmt.addBatch("insert into settings values(4,'小李','女')");
pstmt.addBatch("insert into settings values(5,'小王','男')");
pstmt.addBatch("insert into settings values(6,'小明','男')");
pstmt.executeBatch();
~~~
2.采用hibernate框架session.save()保存數據
在hibernate中實現批量插入,必須通過經常的調用 flush() 以及稍后調用 clear() 來控制第一級緩存的大小。
~~~
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
for ( int i=0; i<100000; i++ ) {
Student entity = new Student(.....);
session.save(entity);
if ( i % 50 == 0 ) {
//每次批量把50條數據寫入數據庫并釋放內存
session.flush();
session.clear();
}
}
tx.commit();
session.close();
~~~
3.采用MyBatis框架批量新增數據
在MyBatis的mapping文件中的相應xml的insert標簽中,對插入的值采用循環的方式。如下面代碼:
~~~
<insert id ="insertBatch" parameterType="List" >
insert into STUDENT( ID,NAME,SEX)
values
<foreach collection ="list" item ="item" index ="index" separator =",">
( #{item.id},#{item.name},#{item.sex})
</foreach>
</insert >
~~~
- 前言
- spring事務(Transaction )報 marked as rollback-only異常的原因及解決方法
- 自己整理的編碼規范總結。(個人覺得很受用)
- spring事務常見問題、異常分析和解決方法
- 剖析OutOfMemoryError: PermGen space產生原因及解決方法
- 剖析java.lang.OutOfMemoryError: Java heap space產生原因及解決方法
- java中不同的ORM框架實現對數據庫批量插入數據庫的方式與技巧
- 解決java讀取大文件內存溢出問題、如何在不重復讀取與不耗盡內存的情況下處理大文件
- 不得不看的Java代碼性能優化總結
- 實現使用3des在頁面js加密,后臺java解密
- Java日志記錄的5條規則