Dav*_*cía 4 java spring hibernate jpa spring-data
我需要审核一些数据库表的所有更改.例如,对于给定的员工,我需要知道所有地址以及修改此字段的日期.实际上我正在使用Spring Data,Hibernate和JPA.一个很好的选择是使用Hibernation Envers,但问题是我无法使用Spring Data获取历史记录.另一种选择是拥有一个Employee_history表,但我没有看到从两个不同的表中获取Employee记录的方法(我想在Employee表中插入,但从Employee和Employee_history中获取数据).有没有其他方法可以实现这一目标?
使用Spring Data Envers :)
"这个项目是Spring Data JPA项目的扩展,允许访问由Hibernate Envers管理的实体修订版."
https://github.com/SpringSource/spring-data-envers
您必须回答的第一个问题应该是您需要的审核级别。简单的更改列表就足够了吗?字符串表示足够好吗?或者您是否希望能够支持实体的修订,以便您能够“毫无麻烦”地返回并获取修订 X 的数据?
如果更改列表就足够了并且您无论如何都使用休眠,那么我会选择HibernateEventListener(而不是 JPA),只是因为您已经获得了 postevents 中的所有更改。无需自己创建增量。
另一方面,Envers 非常容易集成和配置。使用 @Audited 注释您的实体足以获得“完整”修订支持。我认为,您不能直接使用 Spring Data 来查询修订实体这一事实是次要的,因为您始终可以编写您的AuditReaderRepositorybean 并直接使用 hibernate 审核查询接口。在这种情况下,调整两个修订版之间的更改列表将由您完成,这基本上意味着获取修订版并确定它们之间的增量。在这种情况下,Envers 的主要优点是用户表示仍然是一个 User 类,而不仅仅是一个 String (创建者 fe)
这取决于您想要支持哪个级别的审计,我会选择所需的最小实现。www 中有一些关于选择哪种审核策略的好博客。
| 归档时间: |
|
| 查看次数: |
7560 次 |
| 最近记录: |