java审计日志,利用Hibernate拦截机制生成审计日志

java审计⽇志,利⽤Hibernate拦截机制⽣成审计⽇志说明:本例在Eclipse3.1中新建⼀个java项⽬来进⾏测试
环境:Eclipse3.1+Oracle 10g+Hibernate2+winXP sp2
1.在Oracle中新建⼀个⽤户:
create user work identified by
caecaodb default tablespace users;
grant dba,connect,resource to work;
//⽤户授权
2.在该⽤户下新建两个表CUSTOMER,AUDIT_LOGS,sql语句如下:
create table CUSTOMER
(
ID NUMBER
not null,
NAME VARCHAR2(15)
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial
64K
minextents
1
maxextents
unlimited
);
alter table CUSTOMER
add constraint CUSTOMERS_ID primary key
(ID)
using index
tablespace USERS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial
64K
minextents
1
maxextents
unlimited
);
insert into CUSTOMERS (ID, NAME) values (1, 'my_log'); //先新建⼀条记录在表中,以便进⾏delete测试时使⽤.
//新建AUDIT_LOGS
create table AUDIT_LOGS
(
ID NUMBER not null,
ENTITY_ID NUMBER,
ENTITY_CLASS VARCHAR2(128),
MESSAGE VARCHAR2(255),
CREATED DATE
)
tablespace USERS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial
64K
minextents
1
maxextents
unlimited
)
;
alter table AUDIT_LOGS
add constraint AUDIT_LOGS_ID primary key
(ID)
using index
tablespace USERS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial
64K
minextents
1
maxextents
unlimited
);
3.在Eclipse3.1中新建⼀个java项⽬,命名为:HibernateSample,再新建⼀个源⽂件夹src,再在src下新建包hibernate.audit和l
l的内容如下:
encoding='utf-8'?>
/p>
Configuration DTD//EN"
name="tion.driver_class">oracle.jdbc.driver.OracleDriver
name="tion.url">jdbc:oracle:thin:@localhost:1521:orcl
name="tion.username">work
name="tion.password">caecaodb
name="hibernate.show_sql">true
name="dialect">net.sf.hibernate.dialect.OracleDialect
name="tion.isloation">2
resource="hibernate/audit/l"/>
resource="hibernate/audit/l"/>
4.在包hibernate.audit下新建如下内容(附相关说明)
接⼝: Auditable.java
//是为了在保存⽇志记录到表AUDIT_LOGS时得到持久类的id.
package日志审计
hibernate.audit;
public interface Auditable {
public Long getId();
}
类AuditLogRecord.java
//该类是⽇志表的持久类
package hibernate.audit;
import java.util.Date;
public class AuditLogRecord {
public Long entityid;
public String message;
public Class entityClass;
public Date created;
public AuditLogRecord(String message, Long
entityid, Class entityClass) {
entityClass;
Date();
}
public AuditLogRecord() {
}
}
类:Customer.java
//该类是实体类,实现了接⼝Auditable.java,Auditable.java主要是为了让Customer类必须有getId()⽅法,以便在保存⽇志时能得到实体类的id值
package hibernate.audit;
public class Customer implements Auditable{
Long id;
String
name; public Customer()
{}
public Customer(String name)
{
this.name=name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name =
name; } }
类:HibernateUtil.java //⽤于管理session
package hibernate.audit;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.Configuration;
public class HibernateUtil {
private static SessionFactory
sessionFactory;
public static final ThreadLocal session= new
ThreadLocal();
static {
try {
//
实例化⼀个SessionFactory对象 //System.out.println("通过静态模块创建⼀个SessionFactory"); sessionFactory

本文发布于:2024-09-21 01:46:57,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/387560.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:审计   新建   说明   记录   实体类   内容   静态
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议