Hibernate_拦截器与日志文件

自定义拦截器要实现Interceptor接口,拦截器也是用观察者模式来设计的,重写Interceptor里面的方法,在特定条件下,这些方法就会被调用。

在Interceptor对象的方法中不能直接使用Session对象执行持久化操作,如果需要在拦截的同时使用Session对象完成持久化,可以使用Hibernate中事件监听.

下面举例拦截器,将数据的增,删,改信息保存到日志文件中,其中要用到log4j.

编写自定义拦截器LogInterceptor.java:

复制代码
 1 public class LogInterceptor extends EmptyInterceptor {
 2     //对LogInterceptor这个类的日志进行处理
 3     private Logger logger = Logger.getLogger(LogInterceptor.class);
 4     
 5     @Override
 6     public boolean onSave(Object entity, Serializable id, Object[] state,
 7             String[] propertyNames, Type[] types) {
 8         logger.info("保存数据");
 9         //如果修改了持久化对象的状态,返回true;否则返回false
10         return false;
11     }
12     
13     @Override
14     public void onDelete(Object entity, Serializable id, Object[] state,
15             String[] propertyNames, Type[] types) {
16         logger.info("删除数据");
17     }
18     
19     @Override
20     public boolean onFlushDirty(Object entity, Serializable id,
21             Object[] currentState, Object[] previousState,
22             String[] propertyNames, Type[] types) {
23         logger.info("修改数据");
24         //如果修改了持久化对象的状态,返回true;否则返回false
25         return false;
26     }
27 }
复制代码

拦截器的加载可以在解析配置文件之前进行加载,也可以在打开Session的时候进行加载:

在解析配置文件配置文件之前加载:

复制代码
 1 static {
 2         Configuration cfg = null;
 3         // 解析配置文件
 4         try {
 5             cfg = new Configuration();
 6             //在解析配置文件时加载过滤器
 7             cfg.setInterceptor(new LogInterceptor());
 8             cfg.configure();
 9         }
10         catch (Exception e) {
11             e.printStackTrace();
12         }
13         factory = cfg.buildSessionFactory();
14     }
复制代码

在打开Session的时候进行加载:

1      Configuration cfg = new Configuration();
2         cfg.configure();
3         SessionFactory factory = cfg.buildSessionFactory();
4         Session session = factory.openSession(new LogInterceptor());
5         Transaction ts = session.beginTransaction();

注意:在打开Session的时候进行拦截器加载,这个拦截器只在当前session中有效.

 

配置log4j.properties:

log4j.rootLogger=info,appender1,appender2
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss:SSS}][%c] %m%n
log4j.appender.appender2=org.apache.log4j.FileAppender
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.appender2.layout.ConversionPattern=[%d{HH:mm:ss}][%c] %m%n
log4j.appender.appender2.File=HongtenLog4j.log

Hibernate事件框架之拦截器使用源代码 使用拦截器时按如下步骤进行: (1)定义实现Interceptor接口的拦截器类 (2)通过Session启用拦截器,或者通过Configuration启用全局拦截器请看示例代码 立即下载

相关推荐

Unity游戏开发客户端Unity基础

Unity游戏开发客户端面经 之 Unity 篇

Sea3752的博客 2万+

Hibernate4 拦截器(Interceptor) 实现实体类增删改的日志记录

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34198881的博客 235

Halcon实战:5分钟搞定线序颜色检测(附完整代码解析)

本文详细介绍了如何使用Halcon在5分钟内实现工业级线序颜色检测的高效方案。通过机器视觉技术,结合实战项目经验,提供完整的代码解析和优化技巧,帮助开发者快速构建鲁棒性强、准确率高的检测系统,适用于电子制造和汽车线束等行业。

weixin_29098367的博客 441

Hibernate 拦截器

通过使用 Hibernate 拦截器,你可以轻松地扩展 Hibernate 的功能并添加自定义行为。这在需要跟踪实体变化、执行审计日志记录等场景下特别有用。如果你需要更详细的信息或特定场景下的配置,请随时告诉我。

qq_33240556的博客 1204

以LAN8720A为例的以太网硬件设计方案

输入时钟(XTAL1/CLKIN,XTAL2):推荐外加25MHz(性价比较高)晶振为PHY芯片提供时钟,PHY芯片内部PLL将其倍频为50MHz来使用,亦可使用直接使用50MHz晶振。三位MODE通过高低电平组合分别对应以上8种模式 ,包含10M半双工,10M全双工,100M半双工,100M全双工,是否启用自协商协议,CRS是否有效等。VDDCR:1.2V电源,可由芯片内部稳压电源提供,亦可由外部电源提供,由外部电源提供可降低芯片功耗。REF_CLK:参考时钟,由MAC或外部时钟晶振向PHY芯片提供。

weixin_46154042的博客 5884

30天入门 SAP BTP 开发系列之八:动手在 SAP BTP 上开发第一个 ABAP 透明表

ABAP Cloud 环境下创建透明表的方法与数据迁移实践 本文介绍了在 SAP BTP ABAP 环境中创建透明表并迁移数据的完整流程。与传统的 SE11 事务码不同,ABAP Cloud 需通过 ABAP Development Tool 创建数据库表,使用代码定义表结构。作者详细演示了如何: 在开发包中创建名为 Z优快云_TRAVEL 的透明表 使用 ABAP 代码定义表字段和约束 通过 ABAP 类实现数据从标准表/DMO/TRAVEL 到新建表的迁移 验证数据迁移结果 文中还提供了相关技术概念的

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1785

Hibernate拦截器示例–审核日志

Hibernate具有强大的功能,称为“ 拦截器 ”,可拦截或挂钩其他类型的Hibernate事件,例如数据库CRUD操作。 在本文中,我将演示如何使用Hibernate拦截器实现应用程序审核日志功能,它将所有Hibernate保存,更新或删除操作记录到名为“ auditlog ”的数据库表中。 Hibernate拦截器示例–审核日志 1.创建一个表 创建一个名为“ auditlo...

一名可爱的技术搬运工 591

Agentic AI应用架构师如何提升AI应用的灵活性

可扩展性(Scalability):快速添加新功能或扩展任务范围(如Agent从“客服”扩展到“供应链管理”);可修改性(Modifiability):调整Agent的决策逻辑或动作策略,无需重构整个系统;鲁棒性(Robustness):在环境异常或数据噪声下保持性能稳定;自适应(Self-Adaptation):自主学习新场景,无需人工干预。状态空间(S):Agent能感知的所有内部/外部状态(如用户需求、环境数据);动作空间(A):Agent能执行的所有动作(如调用工具、发送消息);

项目管理的博客 581

hibernate的拦截与监听

拦截器(Interceptor)org.hibernate.Interceptor接口定义了Hibernate中通用拦截机制创建Session对象的时候,所有的Session对象或者这个Session对象的所有持久化操作的动作都会被指定的拦截器进行拦截. Interceptor接口的方法 afterTransactionBegin()当一个事务时候启动时,会立刻调用这个方法,这个方法可以改...

iteye_13327的博客 173

OpenHarmony深度定制:从系统到模块的全景剖析与自定义模块实战

目标:在中新增一个算法库,让产品可直接调用。关闭不用的 20+ 系统部件,ROM 缩小 50 %;为自家芯片新增专用驱动模块,快速点亮开发板;内将核心算法库以部件形式集成,实现商业闭源。万物互联时代,差异化才是护城河。

m0_67505153的博客 1032

【离线OCR】微信离线实现图片OCR文本和表格识别

基于微信本地OCR引擎(由最新版微信自动安装)。通过Python对其官方调用逻辑进行完整翻译和封装,使开发者可以用简单的API调用其强大的OCR功能。

专注于医院数据分析技术与系统开发的创作与分享。 2623

根据hibernate拦截器实现可配置日志的记录

对于日志和事件的记录在每个项目中都会用到,如果在每个manager层中触发时间记录的话,会比较难以扩展和维护,所以可配置的日志和事件记录在项目中会用到! 首先在spring的配置文件中加入hibernate拦截器 Java代码 <bean<wbr>id=</wbr>"sessionFactory"<wbr></wbr&g...

iteye_14984的博客 79

第六部分:VTK进阶(第182章 体素化与隐式建模)

本文系统介绍了基于点云构建有符号距离场(SDF)的核心原理与VTK实现方法。主要内容包括:1)SDF的基本概念与算法原理,通过体素网格隐式表达几何表面;2)关键参数配置指南,如体素分辨率、边界范围和影响半径的选择;3)点云法向估计、SDF计算与等值面提取的完整工作流程;4)常见问题解决方案与性能优化建议。文中提供了详细的C++代码示例,展示从随机点云生成SDF并重建曲面的完整过程,特别强调了法向估计、参数调优和后处理等关键环节。该方法适用于点云表面重建、几何处理等应用场景。

仰望星空的博客 528

Struts2拦截器实现异常处理

Struts2拦截器实现异常处理机制 在j2ee项目中,系统内部难免会出现一些异常,如果把异常放任不管直接打印到浏览器可能会让用户感觉莫名其妙,也有可能让某些用户找到搞定系统的方法。 所以不要在页面上输出错误信息,使用log日志的方式处理异常并记录异常。 就拿struts2+hibernate+spring项目说明:通常一个页面请求到后台以后,首先是到action(也就是所谓mvc的c

心有猛虎,细嗅蔷薇 4385

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

SSH整合:将hibernate的配置交给Spring管理+Hibernate的模板的使用

SSH整合方式二:将hibernate的配置交给Spring管理(Struts2+Spring+Hibernate) SSH方式:不带hibernate配置文件 一、创建web项目,引入jar和jsp页面 1、第一步:创建web项目,引入jar包 (1)Struts2的jar包: jar包路径:struts-2.3.24-all\struts-2.3.24\apps\struts2-blank\WEB-INF\lib Struts2当中有一些包需要了解的: struts2-convention-plug

程序员猫爪 688

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Struts2拦截器实现异常处理机制

http://bbs.itcast.cn/thread-10364-1-1.html Struts2拦截器实现异常处理机制   在j2ee项目中,系统内部难免会出现一些异常,如果把异常放任不管直接打印到浏览器可能会让用户感觉莫名其妙,也有可能让某些用户找到破解系统的方法。 所以不要在页面上输出错误信息,使用log日志的方式处理异常并记录异常。 就拿struts2+hibern

走马观花 609

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

spring正和strust2、hibernate小案例

title: spring整合strust2、hibernate小案例 date: 2018-3-7 17:10:27 categories: Spring tags: Spring spring正和strust2、hibernate小案例 echo原创,欢迎转载,转载请声明文章来源。更多案例、资料请联系QQ:1280023003 这个案例主要为了整合三大框架,使用了annot...

xlecho的博客 507

笔记一:搭建一个简单的Spring+hibernate+struts2项目

最近在学习用struts+spring+hibernate来做开发,把学习过程记录一下,以便以后回顾: 整个项目搭建完成的结构如图: 下面是搭建过程: 第一步、新建一个employeeMgmt的web项目 第二步、导入spring相关jar包、hibernate相关jar包、struts相关jar包,还有整合log4j的jar包、以及数据库所用的jar包,jar包结...

diankanjian5536的博客 261

SSH项目整合:无障碍整合Struts2+Spring+Hibernate(详解+案例+源代码)

SSH整合方式一:无障碍整合 一、SSH框架的简述 1、SSH框架整合开发原理图

程序员猫爪 1208

ssh mysql truncate_SSH入门笔记

一、Oracle数据库基础Oracle数据库的主要特点如下:(1)支持多用户、大事务量的事务处理。(2)在保持数据安全性和完整性方面性能优越。(3)支持分布式数据处理。将分布在不同物理位置的数据库用通信网络连接起来,在分布式数据库管理系统的控制下,组成一个逻辑上统一的数据库,完成数据处理任务。(4)具有可移植性。Oracle可以在Windows、Linux等多个操作系统平台上使用,而SQL Ser...

weixin_34079177的博客 296

Struts2 框架(一)

1、Struts2 介绍 Struts2 概念 常见的web 层的框架:Structs2、Structs1、Webwork、SpringMVC Web 层框架基于前端控制器模型设计 Struts2 入门,下载Struts2 安装包并解压。下面是解压后的目录: 创建项目,引入jar 包 创建jsp 页面 编写action 类 对Action 进行配置,在src 下创建名称为struts...

Ydecube的博客 565
上一篇: Ext.namespace
下一篇: Log4j使用总结
forlab
博客等级 码龄15年 2粉丝 114原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值