Hibernate 不同或映射框架上的抽象

Hibernate 不同或映射框架上的抽象,hibernate,ibatis,Hibernate,Ibatis,今天我的产品的数据访问层使用Hibernate作为OR映射框架。将来我想使用其他框架,如iBatis 在这些或映射框架之上设计这样一个抽象层的最佳方法是什么 是否已有这样的框架 我想设计这样一个系统,通过简单的配置更改,我应该能够在这些或框架之间切换 我认为在hibernate/ibatis之上添加抽象是没有意义的。它们是完全不同的框架——即使您能够创建一个公共api——它将省略元数据部分(您的代码更依赖于元数据部分)。你应该认真考虑你为什么需要它以及它会是什么样子增加更多只会让事情变得更加困难

今天我的产品的数据访问层使用Hibernate作为OR映射框架。将来我想使用其他框架,如iBatis

  • 在这些或映射框架之上设计这样一个抽象层的最佳方法是什么
  • 是否已有这样的框架
  • 我想设计这样一个系统,通过简单的配置更改,我应该能够在这些或框架之间切换

  • 我认为在hibernate/ibatis之上添加抽象是没有意义的。它们是完全不同的框架——即使您能够创建一个公共api——它将省略元数据部分(您的代码更依赖于元数据部分)。你应该认真考虑你为什么需要它以及它会是什么样子增加更多只会让事情变得更加困难

    更好的解决方案是将大部分域逻辑与持久性/事务/安全性等(域驱动设计)隔离开来。这样,如果您必须更改其中一个应用程序逻辑的实现,您就可以保留应用程序逻辑的重要部分


    看一看,它不同于您正在寻找的抽象类型

    问题在于iBatis不是ORM框架,而Hibernate是。iBatis的目的是将具体的SQL语句映射到对象,而Hibernate则试图以更抽象的方式解决对象关系映射(和不匹配)

    几年前,Hibernate的核心特性子集已经标准化为JPA。以JPA的方式做事情是有意义的(因此您可以切换JPA供应商-Hibernate、EclipseLink、ObjectDB)


    然而,在不同的方法(比如Hibernate和iBatis)之上构建一些抽象并没有多大意义

    首先,我完全同意Xorty关于iBatis和Hibernate框架的回答

    除了一件事。您可以考虑在iBATS、Hibernate之间切换。
    我建议您阅读《iBatis行动》一书,第10、11章。您会发现一个iBatis配置示例,它允许您通过DAO模式配置/使用iBatis和Hibernate,以及iBatis sql映射文件、Hibernate和JDBC的实现。

    谢谢。我现在正在考虑JPA。Hibernate已经支持JPA了。我不太清楚伊巴蒂斯。从标准的角度来看,我觉得不错。JPA可以是我正在寻找的抽象概念。有什么想法吗?JPA几乎和Hibernate一样(在抽象级别上)——只是一个标准化的API。否-iBatis不支持JPA。EclipseLink、OpenJPA等是其他一些实现。对于google app engine、amazon simpledb等,JPA的实现也很有限。。是的,现在最好使用JPA2.0和hibernate作为提供者,而不是直接使用hibernate。