我可以使用Hibernate Envers的Audited注释而不包括整个Hibernate发行版吗?

时间:2017-08-30 13:44:18

标签: hibernate jpa annotations hibernate-envers

在基于客户端 - 服务器的企业项目中,我使用Hibernate和Envers。客户端开发人员希望拥有一个包含所有实体的共享库,以便他们可以在客户端开发中使用它们,而不包括任何服务器端依赖项。由于这些实体使用@Audited注释进行注释,因此客户端库将包含可接受的Envers依赖项。

然而,Envers本身包含各种依赖项:hibernate-core,hibernate-jpa-api,javassist等等,它们也将被包含在内。

有没有办法只在我的库中包含注释而不实际包含整个服务器端的东西?

2 个答案:

答案 0 :(得分:0)

在这种情况下,最终将取决于客户端的上下文。

但假设您的客户端使用某些协议与您的服务器端后端通信,您可以将org.hibernate.envers注释打包到您在客户端部署中包含的单独工件中,就像我怀疑您正在做的那样使用JPA注释。

您唯一需要注意的是,在升级hibernate-envers工件时,您需要重新打包该特殊的jar工件,以考虑任何注释更改。

我知道用户已经请求能够通过XML映射配置Envers。希望和目标是尝试将其作为Hibernate 7中orm.xml配置的一部分包含在内。

答案 1 :(得分:0)

在最终的解决方案中,我最终包含了" hibernate-envers"依赖于我的Maven pom.xml。在依赖声明下面,我使用了一堆"排除"标签,以便排除那些仅在实际运行Hibernate时至关重要但只在使用注释和可能验证实体时不重要的依赖项。通过这个我能够使用所有Hibernate注释(不仅@Audited),但仍然保持足迹相对较小。 我从@Naros'开始首先接受(感谢建议),但这导致我包含越来越多的各种Hibernate注释所需的源代码依赖项。当然这取决于你想要实现的目标,但对我个人来说,基于Maven的解决方案效果更好。这是为我工作的POM:

addEventListener