传智播客-hibernate(3)-回调与拦截机制

本文介绍了Hibernate中的回调机制,如Lifecyle与Validatable接口,以及拦截器Interceptor如何解决代码高侵入性问题。通过示例展示了AOP的概念和在Struts2中的应用,解释了反射和代理在实现拦截器中的作用。讨论了在Hibernate中使用Interceptor避免了实体类对特定接口的依赖,增强了移植性。
摘要由CSDN通过智能技术生成

我写的这一篇是《深入浅出Hibernate》里第五章第二节以及《struts2权威指南》第七章第一节的内容,这两部分内容主要是帮助我更加理顺了对于“侵入性”的理解和拦截器的基本实现原理,所以特意摘取了出来(详细内容请参看这两本书的相关章节)。从下面的内容也可以看出来,这部分的内容单从技术应用上而言,易懂好使,但是拦截后的处理,我个人以为,是和业务(包括数据处理方面)高度相关的,因为没有实践经验,这里没法给出具体示例,其妙处也许得等我实际工作遇到了以后才能真正体会。

 

(忏悔一下。。老师讲这部分内容的时候俺ms打盹了。。。所以写这篇用的是其他书上的内容。。。)


 

先说AOP
上课时问过老师一个问题,模版模式是先预设一定的流程步骤,然后自定义某些步骤的具体实现,AOP也是自定义某些步骤的具体实现,那这两种有什么区别呢?答:AOP不仅是自定义某些步骤的实现,还包括定义这些步骤自身。我是这么理解的,模版模式预设的流程是既定的,例如流程S-A-B-C-E,流程不可更改,但是具体的步骤ABC可以自行定义,而AOP的流程自身是可以更改的,例如原有流程S-A-B-C-E,可以添加一些实现步骤使之变为S-D-A-B-E-C-E。而且实现原理也不一样,模版模式是用抽象类来预设流程的框架,而AOP的底层实现则要用到反射(书里介绍AOP的实现时加了一句修饰语“大部分时候”,但是我并不清楚不使用反射的特例是什么样的情况)。而且,在框架中体现出的AOP设计是可插拔式的,通过配置文件即可以实现这一点。

 

“struts2的拦截体系体现了AOP的设计哲学”--虽然说的是struts2,但是我相信这句话对于其他框架的拦截体系也同样适用。

 

AOP编程方式中,有三个重要概念:
(1)目标对象。包含被拦截方法的原始对象。
(2)被插入的处理方法。不能独立存在,需要有一个存在的载体--拦截器,会在被拦截方法之前、之后自动执行的方法。
(3)代理对象。以目标对象为蓝本,由系统创建的新对象(当然,这个能自动创建新对象的“系统”也是要事先预设好这一功能实现的)。

 

反射和代理
下文只是从《struts2权威指南》相关章节抽取的关于反射应用以实现AOP机制的简单示例,关于反射的具体知识请自行google百度或来传智播客聆听:)
示例代码࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值