iBatis 和 ORM学习

总结:ibatis是一个持久层框架,核心技术sqlMap和DAO. ibatis属于半自动化ORM(object-relationship map)的解决方案,开发人员依然要在sqlMap文件中编写sql语句,这与全自动化的ORM例如Hiberate不同,全自动化能实现POJO到数据库表的全套映射。


下面资料来自网络,摘抄的重点信息。

1. ibatis是什么?

ibatis本是apache的一个开源项目,2010年这个项目由apache software foundation 迁移到了google code,并且改名为mybatis。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO). 相对Hibernate和Apache OJB等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。

2. 全自动化的hibernate和OJB原理

"全自动化" 纵观目前主流的 ORM,无论 Hibernate 还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过 Hibernate或者OJB 提供的方法完成持久层操作。程序员甚至不需要对 SQL 的熟练掌握,Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的 SQL 并调用 JDBC 接口加以执行。

这一层与通过 Hibernate 实现 ORM 而言基本一致,而对于具体的数据操作,Hibernate使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的 Java对象会自动生成SQL 语句,而ibatis 则要求开发者编写具体的 SQL 语句。相对Hibernate等“全自动”ORM机制而言,ibatis 以 SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM实现的一种有益补充,ibatis 的出现显得别具意义。

3. 半自动化的ibatis原理

ORM 实现而言,“全自动”ORM 实现了 POJO 和数据库表之间的映射,以及 SQL 的自动生成和执行。而ibatis 的着力点,则在于POJO 与 SQL之间的映射关系。也就是说,ibatis并不会为程序员在运行期自动生成 SQL 执行。具体的 SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定 POJO

4. ORM

ORM (object-relationship mapping) 对象和数据库模型(表)之间的关系映射对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射

数据库中的每一张都与一个具体的实体类进行映射,表中的字段与类的属性一一对应。一般的ORM包括四个部分

  •   一个对实体类进行CRUD操作的API(每个实体类的.xml文件实现了实体类对应的数据库中的表的操作) 例如ProductDao.java
  •   一个API用来规定类与类属性相关的查询(可以通过Spring框架实现bean的建立,然后使用property进行属性的设置,查询)
  •   一个规定Mapping的工具(sqlMapConfig.xml)
  •   一种可以让ORM实现事务对象的技术(transaction manager)

5. Ibatis的ORM机制

应用层中,开发人员操作的传统意义上的数据对象(实体类对象),代码简洁清晰。
数据库操作在映射文件中定义,实现了数据存储逻辑与上层逻辑代码中的分离。
底层的数据操作的SQL通过SqlMapConfig.xml可配置,可以控制最终的数据操作方式,使数据库获得最佳的数据库执行性能。这是全自动ORM难以实现的。



你可能感兴趣的:(iBatis 和 ORM学习)