java 批量存储_Hibernate中数据的存储和批量操作

ort org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

public class SaveAndBatchTest {

public static void main(String[] args) {

// 数据保存

// session.save();

// session.update();我们通过update方法将一个Detached状态的对象与session重新关联起来,从而使之从新

// 转变为Persistent状态

// session.saveOrUpdate

// 使用session.saveOrUpdate()方法,我们无需关心传入的参数到底处于什么状态

// 数据的批量操作

// 数据批量导入

SessionFactory factory = new Configuration().configure().buildSessionFactory();

Session session = factory.openSession();

// 我们每隔一段时间清空session内部缓存

/*

* for(int i=0;i<10000;i++){ User user = new User();

* user.setName("zhaiyu"+i); if(i%25==0){//以没25个数据作为一个处理单元 session.flush();

* session.clear(); } } tr.commit();

*/

// 我们可以看看在JDBC里的实现

/*

* PreparedStatement stmt =

* conn.preparedStatement("insert into User(name) value(?)"); for(int

* i=0;i<10000;i++){ stmt.setString(1, "user"+i); stmt.addBatch(); } int [

* ]counts = stmt.executeBatch();

*/

// 数据批量删除

// hibernate2中session.delete("from User");

// hibernate3 HQL中引入bulk delete/update操作

/*

* String hql = "delete User"; Transaction tr = session.beginTransaction();

* Query query = session.createQuery(hql); int ret = query.executeUpdate();

* tr.commit(); System.out.println(ret);

*/

// 但是bulk delete/update 还是没有解决缓存同步的问题,无法保证缓存数据的一致有效性

User user = (User) session.load(User.class, new Integer(1));

System.out.println("user name is :" + user.getName());

// bulk delete/update删除id=1的用户记录

Transaction tr = session.beginTransaction();

String hql = "delete User where id=1";

Query query = session.createQuery(hql);

query.executeUpdate();

tr.commit();

// 再次尝试加载

user = (User) session.load(User.class, new Integer(1));

System.out.println("user name is :" + user.getName());

// 得到了缓存里的数据,虽然该记录已经被删除

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值