ORM相关框架工作原理学习总结(一)

你。 提交于 2019-12-03 08:13:34

引子:面向对象的开发思想是操作对象,对于关系型数据库数据的操作,需要编写繁琐的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更方便,可控性较强。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!