使用NHibernate(4)--拦截器和事件】的更多相关文章

如果想在一个事务的开始.执行中.完成后等过程中执行一些自己的逻辑(比如记录日志.查看sql),拦截器(Interceptors)和事件(Event)就可以发挥作用了.两者所能完成的功能差不多. 1,拦截器(Interceptors) 要实现拦截器,则必须实现IInterceptor接口,这个接口在NHibernate源码的src/目录下,不同的方法在不同的时机被调用. 如果仅仅需要用到接口中的一个方法,就必须得实现接口的所有方法,无疑是很坑爹的,所以NHibernate为我们实现了一个空的Emp…
对于应用程序来说,能够对NHibernate内部发生的事件做出响应式很有用的.这能够有助于实现一些类的功能或者扩展NHibernate的功能. 拦截器 IInterceptor接口提供了应用程序session的的回调方法,使得应用程序能够在持久化对象进行增删改查之前检测和/或者操作持久化对象的属性.一个应用场景是追踪审计信息.例如,下面的IInterceptor接口会在IAuditable实例新增的时候自动设置createTimeStamp,在IAuditable实例更新的时候自动更新lastU…
Hibernate 在执行持久化的过程中,应用程序通常无法参与其中,通过事件框架,Hibernate 允许应用程序能响应特定的内部事件,从而允许实现某些通用的功能,或者对 Hibernate 进行扩展. 拦截器,通过 Interceptor 接口,可以从 Session 中回调应用程序的特定方法,这种机制可以让应用程序在持久化对象被保存.更新.删除或加载之前,检查并修改其属性,可以继承 EmptyInterceptor 类来重写拦截器业务,要使用拦截器需要如下几步: 继承 Interceptor…
拦截器(Intercept):与Struts2的拦截器机制基本一样,都是一个操作穿过一层层拦截器,每穿过一个拦截器就会触发相应拦截器的事件做预处理或善后处理. 监听器(Listener):其实功能与拦截器是相似的,但它实现原理不同,它是为每一个事件注册一个或多个监听器,一旦事件发生,则事件源通知所有监听该事件的监听器,然后监听器处理通知(观察者模式). 拦截器 Hibernate为我们提供了实现拦截器的接口org.hibernate.Interceptor,它里面提供了许多拦截事件.通常不需要实…
拦截器(Intercept):顾名思义,拦截操作,也就是在Hibernate做出动作之前会调用的方法.如果你有需要在Hibernate操作数据库之前想要做的操作,就需要用到这个东西了. 监听器(Listener):监听,就是监视Hibernate的一举一动,如果我们要获取Hibernate各种操作PO的前前后后的信息,那就要用到他了. 这里有的朋友可能就有疑问了,从上面的描述来看,这个监听器似乎能够实现拦截器的功能,因为他也能获取Hibernate操作数据库前的状况.  其实不然,在此我只举出两…
程序启动时如果需要添加某些初始化代码可以使用以下事件处理 import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationListener; import org.springframework.stereotype.Component; /** * 程序初始化事件 */ @Component public class ApplicationEventListen…
   Interceptor说明 Interceptor的接口定义没有什么特别的地方,除了init和destory方法以外,intercept方法是实现整个拦截器机制的核心方法.而它所依赖的参数ActionInvocation则是我们之前章节中曾经提到过的著名的Action调度者. 我在这里需要指出的是一个很重要的方法invocation.invoke().这是ActionInvocation中的方法,而ActionInvocation是Action调度者,所以这个方法具备以下2层含义(详细看D…
转: 过滤器.监听器 拦截器 过滤器 创建一个 Filter 只需两个步骤: (1)创建 Filter 处理类: (2)在 web.xml 文件中配置 Filter . 创建 Filter 必须实现 javax.servlet.Filter 接口,在该接口中定义了三个方法. ? void init(FilterConfig config): 用于完成 Filter 的初始化. ? void destroy(): 用于 Filter 销毁前,完成某些资源的回收. ? void doFilter(S…
    大象在这里假设你已经弄清楚了Struts2拦截器的基本概念,可以进入实际运用了.那么我们在之前的基础上只需要做下小小的改变,就可以使用Struts2的拦截器机制实现登录的验证.     修改数据库     在user表中增加password字段,将初始密码都设为123,因为是示例所以采用明码,实际开发中,当然不能这样做,需要进行加密处理.再将name改为username,其实name字段可以不用改名,我这样做是为了命名规范,请注意,如果字段改为username,User类中的对应属性也要…
过滤器,是在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts2的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者struts2的action前统一设置字符集,或者去除掉一些非法字符 拦截器,是在面向切面编程的就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法比如动态代理就是拦截器的简单实现…