SavaAndBatchTest.java
package com.shiryu.otm;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import 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());
// 得到了缓存里的数据,虽然该记录已经被删除
}
}
package com.shiryu.otm;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import 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());
// 得到了缓存里的数据,虽然该记录已经被删除
}
}
转载于:https://blog.51cto.com/mrwlh/1061711