对象关系映射英语Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。

       JAVAORM主流的有一下几种框架:

数据持久层框架——Hibernate

    Hibernate是一种Java语言下的对象关系映射解决方案。 它是使用GNU宽通用公共许可证发行的自由、开源的软件。它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。

数据持久层框架——IBATIS   

    iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。

      iBATIS 目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby。下面是iBATIS的架构图

JAVA数据持久层框架——MyBATIS

    MyBatis 的前身就是iBatis。是一个数据持久层(ORM)框架。

JDBC框架——SimpleJDBC

    SimpleJDBC是一个用于简化JDBC代码的简单框架,需Spring集成。SimpleJDBC让你用简单的SQL语句完成增删改查,同时支持强类型和Java泛型,仅需注入一个Db实例。

设计思想

  1. 契约优于配置,表名和类名一致,字段名和属性名一致;

  2. 不需编写DAO,为一两行SQL编写一个DAO方法不值;

  3. 简单的SQL语句,而不是经过ORM改造的HQL;

  4. 没有Attach/Detach状态,均为原始Bean无CGLIB代理;

  5. 没有一级/二级Cache,Cache应当用memcached,用不上memcached则说明压力小到根本无需Cache;

  6. 外键也映射到简单字段,而非对象,不支持一对多或多对一的级联查询,永远不用担心查出额外对象;

  7. 泛型和强类型支持,有SQL语句,但无JDBC代码;

  8. 不支持join等复杂查询,必须增加表的冗余以便使用简单查询。

哪些项目无法使用SimpleJdbc

  1. 没有用MySQL做为数据库;

  2. 没有用Spring;

  3. 使用了EAR而不是WAR;

  4. 必须使用Join等复杂查询;

  5. 在遗留数据库上开发。

以上说明该项目不Simple,因此无法使用SimpleJdbc

JAVA的ORM框架——JOOQ

  jOOQ 高效的合并了复杂SQL、类型安全、源码生成、Active Records、存储过程以及高级数据类型的 Java 类库。