JAVA持久层框架的概述(ibatis>>mybatis)
2015-06-02 10:33
543 查看
现在主流的ORM映射框架有Hibernate、Apache OJB;这些基于Java的持久层框架都提供了全自动的对象–关系映射机制,能很好的实现从对象到关系数据的持久化操作。几乎不需要写任何的SQL语句(根据配置好的映射关系文件自动生成对应的 SQL 并调用 JDBC 接口加以执行),以面向对象的形式就能实现对数据库的操作。给我们的编程带来了很大的好处,不需要再接触底层的SQL语句,同时也避免了在书写SQL语句时带来的诸多问题。
但这些ORM框架也是有它的问题的,那就是对于复杂的SQL查询、多表的联合查询实现起来很麻烦,甚至某些业务方面用Hibernate无法实现。举个例子:假如有2张几乎相同的表(在实际的项目中这样的情况是存在的),现在需要把这2张表的数据全部查询出来在页面显示,使用Hibernate可能会这样操作,首先各执行一次findAll,然后在Service中循环,再存到一个List中,最后在页面显示。这样是能实现,但是很麻烦,那么简单的方法是什么呢?使用SQL语句中的union all 关键字,一个SQL语句就能实现,所以在这种情况下使用Hibernate就不是很合适了。面对这样的需求,再次举起 Hibernate 大刀,却发现刀锋不再锐利,甚至无法使用,奈何?恍惚之际,只好再摸出JDBC 准备拼死一搏,但JDBC也很麻烦,对于返回的ResultSet也需要处理。这时如果有一种框架即能写SQL语句,又不需要处理返回结果(结果自动映射成对象)的框架就好了,这时iBatis这种“半自动化的”ORM框架就显得很重要了。
相对Hibernate等自动化的ORM框架,iBatis的着力点是POJO与数据库表之间的映射,并不会自动的生成SQL语句,也就是说对于需要程序员自己写SQL语句,但是对于传递的参数和返回的结果iBatis会自动映射成POJO类,这样程序员就只需在配置文件中写SQL语句即可,不需操心返回结果的事。这样就带来了很大的便利。
ibatis本是apahce的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名为mybatis。目前最新版本是MyBatis3.0.3。
现在主流的ORM映射框架有Hibernate、Apache OJB;这些基于Java的持久层框架都提供了全自动的对象–关系映射机制,能很好的实现从对象到关系数据的持久化操作。几乎不需要写任何的SQL语句(根据配置好的映射关系文件自动生成对应的 SQL 并调用 JDBC 接口加以执行),以面向对象的形式就能实现对数据库的操作。给我们的编程带来了很大的好处,不需要再接触底层的SQL语句,同时也避免了在书写SQL语句时带来的诸多问题。
但这些ORM框架也是有它的问题的,那就是对于复杂的SQL查询、多表的联合查询实现起来很麻烦,甚至某些业务方面用Hibernate无法实现。举个例子:假如有2张几乎相同的表(在实际的项目中这样的情况是存在的),现在需要把这2张表的数据全部查询出来在页面显示,使用Hibernate可能会这样操作,首先各执行一次findAll,然后在Service中循环,再存到一个List中,最后在页面显示。这样是能实现,但是很麻烦,那么简单的方法是什么呢?使用SQL语句中的union all 关键字,一个SQL语句就能实现,所以在这种情况下使用Hibernate就不是很合适了。面对这样的需求,再次举起 Hibernate 大刀,却发现刀锋不再锐利,甚至无法使用,奈何?恍惚之际,只好再摸出JDBC 准备拼死一搏,但JDBC也很麻烦,对于返回的ResultSet也需要处理。这时如果有一种框架即能写SQL语句,又不需要处理返回结果(结果自动映射成对象)的框架就好了,这时iBatis这种“半自动化的”ORM框架就显得很重要了。
相对Hibernate等自动化的ORM框架,iBatis的着力点是POJO与数据库表之间的映射,并不会自动的生成SQL语句,也就是说对于需要程序员自己写SQL语句,但是对于传递的参数和返回的结果iBatis会自动映射成POJO类,这样程序员就只需在配置文件中写SQL语句即可,不需操心返回结果的事。这样就带来了很大的便利。
ibatis本是apahce的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名为mybatis。目前最新版本是MyBatis3.0.3。
现在主流的ORM映射框架有Hibernate、Apache OJB;这些基于Java的持久层框架都提供了全自动的对象–关系映射机制,能很好的实现从对象到关系数据的持久化操作。几乎不需要写任何的SQL语句(根据配置好的映射关系文件自动生成对应的 SQL 并调用 JDBC 接口加以执行),以面向对象的形式就能实现对数据库的操作。给我们的编程带来了很大的好处,不需要再接触底层的SQL语句,同时也避免了在书写SQL语句时带来的诸多问题。
但这些ORM框架也是有它的问题的,那就是对于复杂的SQL查询、多表的联合查询实现起来很麻烦,甚至某些业务方面用Hibernate无法实现。举个例子:假如有2张几乎相同的表(在实际的项目中这样的情况是存在的),现在需要把这2张表的数据全部查询出来在页面显示,使用Hibernate可能会这样操作,首先各执行一次findAll,然后在Service中循环,再存到一个List中,最后在页面显示。这样是能实现,但是很麻烦,那么简单的方法是什么呢?使用SQL语句中的union all 关键字,一个SQL语句就能实现,所以在这种情况下使用Hibernate就不是很合适了。面对这样的需求,再次举起 Hibernate 大刀,却发现刀锋不再锐利,甚至无法使用,奈何?恍惚之际,只好再摸出JDBC 准备拼死一搏,但JDBC也很麻烦,对于返回的ResultSet也需要处理。这时如果有一种框架即能写SQL语句,又不需要处理返回结果(结果自动映射成对象)的框架就好了,这时iBatis这种“半自动化的”ORM框架就显得很重要了。
相对Hibernate等自动化的ORM框架,iBatis的着力点是POJO与数据库表之间的映射,并不会自动的生成SQL语句,也就是说对于需要程序员自己写SQL语句,但是对于传递的参数和返回的结果iBatis会自动映射成POJO类,这样程序员就只需在配置文件中写SQL语句即可,不需操心返回结果的事。这样就带来了很大的便利。
ibatis本是apahce的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名为mybatis。目前最新版本是MyBatis3.0.3。
原来官网:http://ibatis.apache.org/
现在官网:http://code.google.com/p/mybatis/
但这些ORM框架也是有它的问题的,那就是对于复杂的SQL查询、多表的联合查询实现起来很麻烦,甚至某些业务方面用Hibernate无法实现。举个例子:假如有2张几乎相同的表(在实际的项目中这样的情况是存在的),现在需要把这2张表的数据全部查询出来在页面显示,使用Hibernate可能会这样操作,首先各执行一次findAll,然后在Service中循环,再存到一个List中,最后在页面显示。这样是能实现,但是很麻烦,那么简单的方法是什么呢?使用SQL语句中的union all 关键字,一个SQL语句就能实现,所以在这种情况下使用Hibernate就不是很合适了。面对这样的需求,再次举起 Hibernate 大刀,却发现刀锋不再锐利,甚至无法使用,奈何?恍惚之际,只好再摸出JDBC 准备拼死一搏,但JDBC也很麻烦,对于返回的ResultSet也需要处理。这时如果有一种框架即能写SQL语句,又不需要处理返回结果(结果自动映射成对象)的框架就好了,这时iBatis这种“半自动化的”ORM框架就显得很重要了。
相对Hibernate等自动化的ORM框架,iBatis的着力点是POJO与数据库表之间的映射,并不会自动的生成SQL语句,也就是说对于需要程序员自己写SQL语句,但是对于传递的参数和返回的结果iBatis会自动映射成POJO类,这样程序员就只需在配置文件中写SQL语句即可,不需操心返回结果的事。这样就带来了很大的便利。
ibatis本是apahce的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名为mybatis。目前最新版本是MyBatis3.0.3。
现在主流的ORM映射框架有Hibernate、Apache OJB;这些基于Java的持久层框架都提供了全自动的对象–关系映射机制,能很好的实现从对象到关系数据的持久化操作。几乎不需要写任何的SQL语句(根据配置好的映射关系文件自动生成对应的 SQL 并调用 JDBC 接口加以执行),以面向对象的形式就能实现对数据库的操作。给我们的编程带来了很大的好处,不需要再接触底层的SQL语句,同时也避免了在书写SQL语句时带来的诸多问题。
但这些ORM框架也是有它的问题的,那就是对于复杂的SQL查询、多表的联合查询实现起来很麻烦,甚至某些业务方面用Hibernate无法实现。举个例子:假如有2张几乎相同的表(在实际的项目中这样的情况是存在的),现在需要把这2张表的数据全部查询出来在页面显示,使用Hibernate可能会这样操作,首先各执行一次findAll,然后在Service中循环,再存到一个List中,最后在页面显示。这样是能实现,但是很麻烦,那么简单的方法是什么呢?使用SQL语句中的union all 关键字,一个SQL语句就能实现,所以在这种情况下使用Hibernate就不是很合适了。面对这样的需求,再次举起 Hibernate 大刀,却发现刀锋不再锐利,甚至无法使用,奈何?恍惚之际,只好再摸出JDBC 准备拼死一搏,但JDBC也很麻烦,对于返回的ResultSet也需要处理。这时如果有一种框架即能写SQL语句,又不需要处理返回结果(结果自动映射成对象)的框架就好了,这时iBatis这种“半自动化的”ORM框架就显得很重要了。
相对Hibernate等自动化的ORM框架,iBatis的着力点是POJO与数据库表之间的映射,并不会自动的生成SQL语句,也就是说对于需要程序员自己写SQL语句,但是对于传递的参数和返回的结果iBatis会自动映射成POJO类,这样程序员就只需在配置文件中写SQL语句即可,不需操心返回结果的事。这样就带来了很大的便利。
ibatis本是apahce的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名为mybatis。目前最新版本是MyBatis3.0.3。
现在主流的ORM映射框架有Hibernate、Apache OJB;这些基于Java的持久层框架都提供了全自动的对象–关系映射机制,能很好的实现从对象到关系数据的持久化操作。几乎不需要写任何的SQL语句(根据配置好的映射关系文件自动生成对应的 SQL 并调用 JDBC 接口加以执行),以面向对象的形式就能实现对数据库的操作。给我们的编程带来了很大的好处,不需要再接触底层的SQL语句,同时也避免了在书写SQL语句时带来的诸多问题。
但这些ORM框架也是有它的问题的,那就是对于复杂的SQL查询、多表的联合查询实现起来很麻烦,甚至某些业务方面用Hibernate无法实现。举个例子:假如有2张几乎相同的表(在实际的项目中这样的情况是存在的),现在需要把这2张表的数据全部查询出来在页面显示,使用Hibernate可能会这样操作,首先各执行一次findAll,然后在Service中循环,再存到一个List中,最后在页面显示。这样是能实现,但是很麻烦,那么简单的方法是什么呢?使用SQL语句中的union all 关键字,一个SQL语句就能实现,所以在这种情况下使用Hibernate就不是很合适了。面对这样的需求,再次举起 Hibernate 大刀,却发现刀锋不再锐利,甚至无法使用,奈何?恍惚之际,只好再摸出JDBC 准备拼死一搏,但JDBC也很麻烦,对于返回的ResultSet也需要处理。这时如果有一种框架即能写SQL语句,又不需要处理返回结果(结果自动映射成对象)的框架就好了,这时iBatis这种“半自动化的”ORM框架就显得很重要了。
相对Hibernate等自动化的ORM框架,iBatis的着力点是POJO与数据库表之间的映射,并不会自动的生成SQL语句,也就是说对于需要程序员自己写SQL语句,但是对于传递的参数和返回的结果iBatis会自动映射成POJO类,这样程序员就只需在配置文件中写SQL语句即可,不需操心返回结果的事。这样就带来了很大的便利。
ibatis本是apahce的一个开源项目,2010年这个项目由apahce sofeware foundation 迁移到了google code,并且改名为mybatis。目前最新版本是MyBatis3.0.3。
原来官网:http://ibatis.apache.org/
现在官网:http://code.google.com/p/mybatis/
相关文章推荐
- OpenJDK与HashMap
- 【浏览器选择文件夹】springMVC上传篇
- java中 Process的使用
- eclipse怎么设置选中文件编辑的文件时,自动关联选择左侧树里的文件?
- Java中的相对路径与绝对路径
- 解析JDK、J2EE、J2SE、J2ME的区别
- struts2重定向传参数配置
- Java日志性能
- eclipse使用笔记(一):eclipse闪退解决办法
- java个人学习笔记:javaBean
- SpringMVC+ajaxFileUpload上传图片 IE浏览器弹下载框问题解决方案
- 汉诺塔递归算法
- Java—static、this、super用法总结
- JAVA 条件表达式 陷阱
- spring MVC配置详解
- java webservice 注解
- spring注入bean两种方式(属性注入,构造器注入)
- 疯狂Java学习笔记(68)-----------synchronized
- Java并发编程-CAS
- MyEclipse Hibernate Reverse Engineering 找不到项目错误