在我的Struts2应用程序中,我想审核所有使用Hibernate拦截器的CURD操作,请帮助我如何实现。如何在Struts2中实现hibernate拦截器
0
A
回答
0
您可以创建通过扩展EmptyInterceptor
拦截器,阅读文档:
Chapter 12. Interceptors and events
的文档提供了有关如何使用拦截器来实现审计的例子。
而且这里是类似的功能又如:Hibernate interceptor example – audit log
0
您可以通过实现拦截器或延长EmptyInterceptor
创建XXXDAO
类。 如果使用Interceptor
接口,则使用下面的重写方法将数据保存在单独的表中。
public boolean onLoad(Object o, Serializable srlzbl, Object[] os, String[] strings, Type[] types) throws CallbackException {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean onFlushDirty(Object o, Serializable srlzbl, Object[] os, Object[] os1, String[] strings, Type[] types) throws CallbackException {
throw new UnsupportedOperationException("Not supported yet.");
}
public boolean onSave(Object o, Serializable srlzbl, Object[] os, String[] strings, Type[] types) throws CallbackException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void onDelete(Object o, Serializable srlzbl, Object[] os, String[] strings, Type[] types) throws CallbackException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void onCollectionRecreate(Object o, Serializable srlzbl) throws CallbackException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void onCollectionRemove(Object o, Serializable srlzbl) throws CallbackException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void onCollectionUpdate(Object o, Serializable srlzbl) throws CallbackException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void preFlush(Iterator itrtr) throws CallbackException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void postFlush(Iterator itrtr) throws CallbackException {
throw new UnsupportedOperationException("Not supported yet.");
}
public Boolean isTransient(Object o) {
throw new UnsupportedOperationException("Not supported yet.");
}
public int[] findDirty(Object o, Serializable srlzbl, Object[] os, Object[] os1, String[] strings, Type[] types) {
throw new UnsupportedOperationException("Not supported yet.");
}
public Object instantiate(String string, EntityMode em, Serializable srlzbl) throws CallbackException {
throw new UnsupportedOperationException("Not supported yet.");
}
public String getEntityName(Object o) throws CallbackException {
throw new UnsupportedOperationException("Not supported yet.");
}
public Object getEntity(String string, Serializable srlzbl) throws CallbackException {
throw new UnsupportedOperationException("Not supported yet.");
}
public void afterTransactionBegin(Transaction t) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void beforeTransactionCompletion(Transaction t) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void afterTransactionCompletion(Transaction t) {
throw new UnsupportedOperationException("Not supported yet.");
}
public String onPrepareStatement(String string) {
throw new UnsupportedOperationException("Not supported yet.");
}
如果您扩展EmptyInterceptor
不需要重写所有的方法,所需的方法可以在DAO类中重写。
比如我有存储fieldName
,fieldValue
,fieldType
,className
在我的审计表中,save()
方法。
//Audit save Pojo
public class AuditSave{
private String className;
private String fieldName
private String fieldValue
private String fieldType
//setter's and getter's
}
//AuditDAO class
public class AuditDao exteds EmptyInterceptor{
public boolean onSave(Object o, Serializable srlzbl, Object[] os, String[] strings,
Type[] types) throws CallbackException {
Session session = HibernateUtil.getSessionFactory().openSesson();
String className = o.getClass().getName();
try{
Transaction tx = session.beginTransaction();
for(int i = 0;i < os.length ;i++){
AuditSave auditSave = new AuditSave();
auditSave.setClassName(className);
auditSave.setFieldName((String)strings[i]);
auditSave.setFieldValue((String)os[i]);
auditSave.setFieldType(types[i].toString());
session.save(auditSave);
tx.commit();
}catch(Exception e){
tx.rollback();
e.printStackTra;
}
if(session.isOpen())
session.close();
}
return true;
}
// same as update,delete
对于删除使用onDelete()
方法, 对于更新使用findDirty()
方法
相关问题
- 1. paramsPrepareParamsStack拦截器在struts2中?
- 2. Fileuploader拦截器Struts2
- 3. Hibernate拦截器
- 4. Hibernate拦截器
- 5. struts2的拦截
- 6. struts2的拦截器堆栈
- 7. Struts2拦截器和注释
- 8. Struts2:拦截器和参数
- 9. struts2拦截器的问题
- 10. 如何在Hibernate拦截器中获取Hibernate会话?
- 11. * JSP呈现后的Struts2拦截器*如何?
- 12. 注释中的Struts2令牌拦截器
- 13. hibernate拦截器后保存?
- 14. 如何在struts2拦截器中获得struts.action.extension的值?
- 15. struts 2拦截器与hibernate拦截器不同吗?
- 16. struts2默认拦截器堆栈配置
- 17. 问题与Struts2的拦截器为了
- 18. struts2检查权限拦截器
- 19. Struts2的拦截器不起作用
- 20. Struts2令牌拦截器总是失败
- 21. Struts2的拦截器溢出异常
- 22. 如何为ILogger拦截拦截器
- 23. 如何使用Spring在Hibernate拦截器Bean中注入EntityManager?
- 24. HQL的Hibernate拦截器/监听器
- 25. Struts2 - 实现ModelDriven - 创建一个访问模型属性的拦截器
- 26. 如何拦截Hibernate生成的SQL?
- 27. 如何实际拦截res.render
- 28. Hibernate拦截器帖子插入
- 29. 带注释的Hibernate拦截器
- 30. Hibernate 4 SessionFactory作用域拦截器