您的位置:首页 > 其它

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更方便,可控性较强。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐