ORM相关框架工作原理学习总结(一)
2016-10-03 14:09
288 查看
引子:面向对象的开发思想是操作对象,对于关系型数据库数据的操作,需要编写繁琐的sql语句。这时有人会想:是否可以像操
作对象一样操作数据库库数据呢???ORM框架就这样诞生了
ORM:对象关系映射,题主接触过的是Hibernate和Mybatis这两种。主要思想:将数据库表和对象进行映射,依靠框架的API
通过对象的增删改查,达到映射数据库中表数据的增删改查。方便开发。
工作过程:1、根据数据库中的表,定义好对应的实体类。
2、配置好对应的关系实体映射文件。
3、容器启动,创建SessionFactory。
4、通过SessionFactory获取Session。
5、Session对应着一个数据库的连接,通过Session操作对象,后台自动生成sql更新数据库的数据。
Hibernate相关知识点:
get和load的区别:get会立刻返回数据库中查询的数据。load延迟加载数据,当用到的时候,再去取数据。
openSession和getCurrentSession的区别:openSession每次打开新的Session,需要手动关闭。getCurrentSession每次
从上下文中获取Session,如果没有则创建,有的话,用旧的。commit会自动关闭。
对象三种状态:瞬态、持久态、卸载
瞬态:内存无ID,Session中无缓存,数据库无数据(new得到的对象时瞬态)
持久态:内存有ID,Session中有,数据库有(save,saveOrUpdate使对象从瞬态转换为持久态,delete从持久到瞬态)
卸载:内存中有,Session没有,数据库有(commit之后)
Mybatis:类似于Hibernate。操作过程都差不多,都具备JDBC和JTA事物管理的能力。这里主要说区别:Hibernate是完全的
ORMapping框架,sql自动生成。Mybatis只是sql Mapper。针对小项目,用Hibernate会更加方便。对于大的项目,还是使用
Mybatis,毕竟手动写的,自己可以掌控。但如果用Hibernate,sql是自动生成的,不太好进行人工的优化。调优需要丰富的经
验,这些经验可能被可过很多次的人才知道。
补充:1、Hibernate是全自动的,Mybatis是半自动的
2、Hibernate的数据库移植性远大于Mybatis
3、Hibernate有完整的日志系统,Mybatis只有基本的记录功能
4、sql优化上,Mybatis更方便,可控性较强。
作对象一样操作数据库库数据呢???ORM框架就这样诞生了
ORM:对象关系映射,题主接触过的是Hibernate和Mybatis这两种。主要思想:将数据库表和对象进行映射,依靠框架的API
通过对象的增删改查,达到映射数据库中表数据的增删改查。方便开发。
工作过程:1、根据数据库中的表,定义好对应的实体类。
2、配置好对应的关系实体映射文件。
3、容器启动,创建SessionFactory。
4、通过SessionFactory获取Session。
5、Session对应着一个数据库的连接,通过Session操作对象,后台自动生成sql更新数据库的数据。
Hibernate相关知识点:
get和load的区别:get会立刻返回数据库中查询的数据。load延迟加载数据,当用到的时候,再去取数据。
openSession和getCurrentSession的区别:openSession每次打开新的Session,需要手动关闭。getCurrentSession每次
从上下文中获取Session,如果没有则创建,有的话,用旧的。commit会自动关闭。
对象三种状态:瞬态、持久态、卸载
瞬态:内存无ID,Session中无缓存,数据库无数据(new得到的对象时瞬态)
持久态:内存有ID,Session中有,数据库有(save,saveOrUpdate使对象从瞬态转换为持久态,delete从持久到瞬态)
卸载:内存中有,Session没有,数据库有(commit之后)
Mybatis:类似于Hibernate。操作过程都差不多,都具备JDBC和JTA事物管理的能力。这里主要说区别:Hibernate是完全的
ORMapping框架,sql自动生成。Mybatis只是sql Mapper。针对小项目,用Hibernate会更加方便。对于大的项目,还是使用
Mybatis,毕竟手动写的,自己可以掌控。但如果用Hibernate,sql是自动生成的,不太好进行人工的优化。调优需要丰富的经
验,这些经验可能被可过很多次的人才知道。
补充:1、Hibernate是全自动的,Mybatis是半自动的
2、Hibernate的数据库移植性远大于Mybatis
3、Hibernate有完整的日志系统,Mybatis只有基本的记录功能
4、sql优化上,Mybatis更方便,可控性较强。
相关文章推荐
- 最近一年工作中用到的工具和框架总结(javascript相关)
- Unity3D ECS框架 Entitas入门学习4 ReactiveSystem原理总结
- Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结
- PHP Yii开源框架入门学习(三)Yii的相关配置总结
- IOS对象关系映射(ORM)之coreData框架的学习——(二)原理剖析及使用步骤详解
- CCNA学习总结―EIGRP协议―EIGRP工作原理理解
- WebService学习总结(二)--相关概念及几种主流框架
- ssh相关原理学习与常见错误总结
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )
- vb.net学习总结三(DropDownList 中 添加 StringIntObject 对象的原理)
- NFramework开源AOP框架ORM的实现原理与应用-.NET教程,.NET Framework
- Hibernate框架ORM的实现原理
- [转]少走弯路:学习编译原理的相关建议
- nio socket 及其开源框架MINA学习总结(二)
- nio socket 及其开源框架MINA学习总结
- NFramework开源AOP框架ORM的实现原理与应用
- NAT(地址翻译)的相关概念及其工作原理
- EJB工作原理学习笔记!
- ORM,ASP.NET中ORM学习,ASP.NET中ORM学习心得,WEB2.0中ORM实现原理,Asp.net简单ORM示例源码详细讲解,Asp.net2.0:如何使用ObjectDataSource(配合ORM )(二)
- 学习心得 TCP/IP攻击原理分析总结