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();