hibernate和
Macromedia的 AMF网关的远程对象有两个缺点。Hibernate用户知道你不能访问一个懒加载的集合collection,因为你还没有在 session中初始化他们。访问一个没有被初始化的动态代理对象集合会导致运行时异常。AMF网关不知道如何去 寻找hibernate动态代理对象。一种可能的解决方案是面向方面的编程(AOP)拦截器,它能放置一个将要通过AMF网关的对象在一个委托对象中,然后移除动态代理。这个过程包括发送结果对象穿过一个递归查询那些使用反射和没有被初始化的代理对象的拦截器类。假如一些懒代理对象或者集合被发现了,他就会把他们的值设置为null。这是一个面向方面的一个截面,我们可以使用一些象 JBoss AOP, AspectJ, Spring AOP等等 AOP语言来实现。AOP 拦截器将在业务代理层中应用。图4 显示了这样的程序架构的框架:
图4 在通过AMF网关之前引入AOP拦截器和advice来代理对象. 跟进一步说,它会在一些像综合层,持久层等地方减少耦合。
好消息是AMF 网关不知道如何你缓存双向对象,所以无止境的递归操作也不会在转换对象过程中产生。因此你可以在传送它们往返于AMF网关时保持这些完整的关系。 还有,因为对象是无连接和拷贝过来的,你必须使用Session.saveOrUpdateCopy(Object object) 方法持久化你的结构到数据库当中。这个方法必须被使用,因为对象在穿越AMF网关的过程中丢失了一些hibernate可以使用的特殊的字节码信息。
认证
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!