1.加载策略种类
1.1立即加载: 不管使用不使用,都会立刻将数据加载.
public User getUser(User user) {
Session session = SessionFactoryUtils.getSession();
Transaction transaction = session.beginTransaction();
System.out.println(123);
User u = session.get(User.class,user.getId());
System.out.println(456);
System.out.println(u.getUserName());
transaction.commit();
session.close();
return u;
}
1.1.1:立即加载优点:对应用程序完全透明,不管对象处于持久化状态还是游离状态,应
对应用程序完全透明,不管对象处于持久化状态还是游离状态,
应用程序都可以从一个对象导航到关联的对象
1.1.2:立即加载缺点:select语句多,可能会加载应用程序不需要访问的对象,浪费许多内存空间。
1.2延迟加载: 等到使用的时候才会加载数据.
public User loadUser(User user) {
Session session = SessionFactoryUtils.getSession();
Transaction transaction = session.beginTransaction();
System.out.println(123555);
User u = session.load(User.class,user.getId());
System.out.println(4565555);
System.out.println(u.getUserName());
transaction.commit();
session.close();
return u;
}
1.1.1:延迟加载优点:由应用程序决定需要加载哪些对象,可以避免执行多余的select
语句,以及避免加载应用程序不需要访问的对象。因此能提高检索性能,并节省内存空 间。
1.1.1:延迟加载缺点: 应用程序如果希望访问游离状态的代理类实例,必须保证她在持久化状态时已经被初始化
2.加载策略的应用
类级别的加载策略.
关联级别的加载策略