据我所知,配置JPA/Hibernate有两种方法:
- 通过 hibernate.cfg.xml 等基于 XML 的配置。我不喜欢他的方法,因为 XML ...
- 通过实体对象中的注释。比 XML 配置好得多,但它将我的实体耦合到 JPA。
由于我目前正在研究一种架构,其中域模型对数据库一无所知(“洋葱”架构),因此我正在寻找一种在不更改实体的情况下指定映射的方法。
当然,我可以创建单独的映射类,例如如果我有一个 Customer 域对象,请创建一个 JPA 注释的 CustomerEntity 并让存储库从一个存储库转换为另一个存储库。但这种方法感觉不太正确,因为 Customer 和 CustomerEntity 本质上是相同的。
所以看来我必须求助于 Hibernate XML 配置,但正如前面提到的,我不喜欢这种方法。 Spring有一个很好的配置方式:基于Java的配置。我想知道 Hibernate/JPA 配置是否有类似的东西,如果没有,为什么不呢?
如果以上都没有意义,我深表歉意,但欢迎任何帮助,即使它不能回答我的问题:-)
最佳答案
我从未听说过 Java EE 设计的洋葱理论
。我确实听说过The Onion
,但那是一份讽刺性时事通讯(如果是的话:-)。 Java EE 中的关注点分离通常表示为 MVC,即 Model View Controller 架构。您的 JSP 或 JSF 页面将是您的 View ,您的 @ManagedBean
Controller 将是您的 Controller ,您的模型将保存您的实体。
该模型(JPA 所在的位置)通常可以进一步分为服务层
、持久层
和 EIS(企业信息系统)或数据库层。服务层将保存您的 EJB,并用 Stateless
、Statefull
或 Singleton
进行注释,并将封装应用程序的业务逻辑。 持久层
将具有由数据库存储的@Entity注释对象。
Java EE 使用 JSR 定义这些层,并带有某种数字。例如,Java 持久性 API (JPA) 是 JSR-220。测试是针对这些 JSR 开发的,如果供应商满足这些测试,那么他们的产品可以(或多或少)替换为另一个供应商的版本。
关于Hibernate/JPA 的 Java 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35787881/