hibernate批量插入数据

可以定时将session缓存的数据刷入到数据库,而不是一直在session级别缓存,可以设计一个累加器,每保存一个实例,然后累加器加1,然后根据累加器的值来决定是否需要将session缓存的数据刷入到数据库
下面是我的代码片段

package test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class NewsManager {
	public static void main(String[] args) {
		// 实例化Configuration
		Configuration conf = new Configuration()
		// 加载默认的hibernate配置文件
				.configure();
		SessionFactory sf = conf.buildSessionFactory();
		// 创建session
		Session sess = sf.openSession();
		// 开始事务
		Transaction tx = sess.beginTransaction();
		// 创建实例化消息
		for (int i = 0; i < 1000; i++) {
			News n = new News();
			n.setTitle("test" + i);
			n.setContent("test" + i);
			sess.save(n);
			if (i % 20 == 0) {
				sess.flush();
				sess.clear();
			}
		}

		tx.commit();
		// 关闭session
		sess.close();
		sf.close();
	}
}

其余代码请移步

使用hibernate连接数据库并自动创建表

还有就是要在hibernate.cfg.xml中加入下面这句

<property name=”hibernate.jdbc.batch_size”>50</property>

其余的基本都差不多的

发表评论

电子邮件地址不会被公开。 必填项已用*标注