Hibernate 笔记

1. hiberante 一级缓存(session缓存)是没有配置最大容量的,若是在一个事务中批量操做过多的对象,那么极可能会出现OutOfMemoryError。正确的作法是每隔一段时间清空session缓存。如:java

Transaction tx = session.beginTransaction();
for (int i = 0; i < 1000000; i++) {
	session.save(user);
	if(i%25==0){  //每保存25条记录就清空内存
		session.flush();
		session.clear();
	}
}
tx.commit();

 

2.Hibernate.initialize方法能够强制Hibernate当即加载关联对象。如:sql

Hibernate.initialize(user.getAddress()); //加载赖加载对象
Hibernate.isInitialized(user.getAddress()); //判断对象是否已经加载了

3. hibernate sql 查询,返回实体缓存

String sql = "select u.id as {usr.id}, u.name as {usr.name},from T_User u";
String sql = "select {usr.*} from T_User usr ";
List list = session.createSQLQuery(sql,"usr",TUser.class).list();
相关文章
相关标签/搜索