以前自学的SSH,由于长时间没用了,最近几天比较空闲了。所以想复习一下。
但是现在对于hebernate配置文件中的一个属性lazy非常疑惑,查了一些相关资料,还是不能充分理解。
往知道的朋友解释一下,最好详细一点。
但是现在对于hebernate配置文件中的一个属性lazy非常疑惑,查了一些相关资料,还是不能充分理解。
往知道的朋友解释一下,最好详细一点。
解决方案 »
- HQL 多条件拼凑排序问题
- 跪求:Tomcat5.5下一个简单的session问题
- 如何将tomcat里面的图片转成流的形式?如何在将流转成图片?急!!!!
- 一个简单的问题,页面无法打开
- 来者有分
- 只取记录集中的第21-40条记录怎么写?其他的数据不取!谢谢!
- Struts中的frame的刷新问题
- 急!请教关于服务器上应该如何设置的问题
- 那位大虾能告诉我apache+jsp+resin如何配置?主要是apache的安装配置。
- jsp向applet传一个arraylist的问题。
- weblogic+myeclipse如何设置实现后台java程序的断点调试
- 用户登陆后,如何把登陆框隐藏,在登陆框的位置把用户信息给显示出来
比如
Query query = session.createQuery("from Customer");
List list = query.list();
如果是立即加载的话.
上面的代码一执行就会立刻执行sql语句.
可是如果 laze="true"
的话
就只有等到 迭代 集合中的对象 并调用 customer.getXXX();(XXX 为非OID 字段)
才去执行sql语句.
还有类级别的,和关联级别的.
lz 还是要多看书. 孙卫琴的那本 Hibernate 就很不错哦!
思考既然表示层知道要显示的信息,即领域对象应该加载哪些相关联的对象。那么我们何不把这个任务交给Façade的调用者(表现层)来完成呢?不同的表示层可能会有不同的显示策略,利用策略模式(GoF)我们让表示层来注入所需的关系域加载策略实现。下面便是这个想法的实现:示例中的领域模型:
图表 1示例中领域对象模型示例中相关的组件
图表 2示例相关组件LazyObjectLoader:懒对象加载者接口,其定义如下来对象加载策略接口package org.ccsoft;publicinterface LazyObjectLoader { publicvoid loadLazyObjects(Object obj);}该接口定义了不同懒对象加载策略实现者要实现的方法,在loadLazyObjects方法中实现对领域对象obj相关的关系域对象进行加载的策略。OrderItemLoader一种加载策略的实现,用于加载Order对象的关系域对象OrderItem对象package org.ccsoft;import java.io.Serializable;publicclass OrderItem implements Serializable { private String detail; public String getDetail() { returndetail; } publicvoid setDetail(String detail) { this.detail = detail; } }OrderMgrFacadeImp: Façade的实现,可以使POJO也可以使Session Beanpackage org.ccsoft;publicclass OrderMgrFacadeImp implements OrderMgrFacade { private OrderDAO orderDAO; public OrderDAO getOrderDAO() { returnorderDAO; } publicvoid setOrderDAO(OrderDAO orderDAO) { this.orderDAO = orderDAO; } public Order getOrder(int orderId, LazyObjectLoader loader) { Order order=orderDAO.getOrder(orderId); loader.loadLazyObjects(order); return order; } }在getOrder方法中我们要求调用者提供了懒对象装载策略的实例用于装载那些调用者要用到的关系域对象。注意该示例是通过spring实现的,利用spring AOP完成事务管理,事务的边界在Façade中方法上,当方法执行结束,事务业务将结束,并且Hibernate会自动关闭session,我们看到getOrder方法中在事务结束前调用了懒对象装载策略,从而按照调用者的要求装载了调用者所需的关系域对象。该模式的优点1 将领域对象的处理逻辑与显示层的显示逻辑完全分离,提高了代码的可维护性和可扩展性该模式的不足1 要求显示层的开发者,了解懒加载的情况2 增加了代码的复杂性