Hibernate工作流程及与 MyBatis的比较
Hibernate创建步骤
(五大核心接口:Configuration/SessionFactory/Session/Transaction/Query)
Configuration类:Configuration对象用来读取配置文件并创建SessionFactory对象。一般情况下,一个应用程序会创建Configuration对象,然后建立唯一的SessionFactory实例,意味着Configuration对象只存在系统的初始化阶段,然后所有的持久化操作通过唯一的SessionFactroy实例来进行
SessionFactory接口:用来生成Session对象,并且它是一个重量级对象,占用的内存空间较大,所以一个程序只有一个SessionFactory实例
Session接口(Hibernate核心对象):Session接口是java应用程序和Hibernate进行交互时所使用的主要接口,Session对象不是线程安全的,每个调用者应使用单独的session
Transaction接口:用于管理事务,如果因为程序的异常或者其他原因导致没有执行commit()或rollback(),那么很可能会造成数据库中数据不一致现象发生
Query :查询接口,用于向数据库查询对象,包装了HQL查询语言,采用了新的面向对象的查询方式。
1.新建工程,导入需要的jar包。
2.利用MyEclipse自动生成功能在工程中创建hibernate.cfg.xml配置文件和
HibernateSessionFactory.java工具类。生成的主要内容如下:
hibernate.cfg.xml:
- <hibernate-configuration>
- <session-factory>
- <property name="connection.username">root</property>
- <property name="connection.url">
- jdbc:mysql://localhost:3306/databasename
- </property>
- <property name="dialect">
- org.hibernate.dialect.MySQLDialect
- </property>
- <property name="myeclipse.connection.profile">
- dangdang
- </property>
- <property name="connection.password">root</property>
- <property name="connection.driver_class">
- com.mysql.jdbc.Driver
- </property>
- <mapping resource="entity/User.hbm.xml" />
- </session-factory>
- </hibernate-configuration>
HibernateSessionFactory.java:
- 略。。。
3.创建UserDao接口和接口的实现类UserDaoImpl,实现类中测试:
UserDaoImpl.java:
- public class UserDaoImpl implements UserDao {
- public List<User> findAll() {
- Session session = HibernateSessionFactory.getSession();
- Transaction tx = session.beginTransaction();
- Query query = session.createQuery("from User");
- query.setFirstResult(0);//分页
- query.setMaxResults(2);
- List<User> lists = query.list();
- tx.commit();
- HibernateSessionFactory.closeSession();
- return lists;
- }
- public static void main(String[] args) {
- UserDaoImpl user = new UserDaoImpl();
- System.out.println(user.findAll().size());
- }
- }
访问的时候其工作流程:
1.读取并解析配置文件;
2.Configuration负责读取并创建映射信息,创建sessionfactory;
3.SessionFactory负责创建session;
4.Transaction负责开启事物Transaction;
5.Query负责执行持久化操作;
6.Transaction负责提交实物;
7.关闭session;
8.关闭sessionfactory。
持久化对象的三种状态:
Hibernate与Mybatis对比总结
两者相同点
- Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。
- Hibernate和MyBatis都支持JDBC和JTA事务处理。
Mybatis优势
- MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
- MyBatis容易掌握,而Hibernate门槛较高。
Hibernate优势
- Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
- Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
- Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
- Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。
他人总结
- Hibernate功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。
- Hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。
- iBATIS入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。
- iBATIS的缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。
Hibernate工作流程及与 MyBatis的比较相关推荐
- Mybatis工作流程,附带mybatis的mapper文件和config配置文件模板。mapper文件和dao接口的关系——xml中的namespace和sql标签id命名要求。
1. Mybatis工作流程 1.1 使用MySQL创建数据库girls并生成一个表boys,如下图. 1.2 创建该表对应的简单实体类Boys,如下图. 1.3 创建Dao接口以及和接口同名的map ...
- Mybatis体系结构及工作流程
相关内容: 架构师系列内容:架构师学习笔记(持续更新) Mybatis工作流程 首先在MyBatis 启动的时候我们要去解析配置文件,包括全局配置文件和映射器配置文件,这里面包含了我们怎么控制MyBa ...
- mybatis+springMVC+spring原理及工作流程
做自己没做过的事情叫做成长 做自己不愿做的事情叫做改变 做自己不敢做的事情叫做突破 共勉 引言 本人在学习ssm中,已经能熟练的编写配置文件与代码了.但于前几天朋友问其原理与工作流程时却只能答出一二, ...
- mybatis返回某一字段_8.mybatis的基本工作流程(2.0)※
mybatis的基本工作流程 1.读取配置文件,配置文件包含数据库连接信息和Mapper映射文件或者Mapper包路径. 2.有了这些信息就能创建SqlSessionFactory,SqlSessio ...
- mybatis 调用存储过程_你真的该进来了解下MyBatis的SQL工作流程了
前言 MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下: 1.Mapper接口和映射文件是如何进行绑定的 2.MyB ...
- MyBatis 的工作流程分析
我们学习了MyBatis 的编程式使用的方法,我们再来回顾一下MyBatis 的主要工作流程: 首先在MyBatis 启动的时候我们要去解析配置文件,包括全局配置文件和映射器配置文件,这里面包含了我们 ...
- MyBatis的几个重要概念和工作流程
MyBatis 几个重要的概念 Mapper 配置: Mapper 配置可以使用基于 XML 的 Mapper 配置文件来实现,也可以使用基于 Java 注解的 MyBatis 注解来实现,甚至可以直 ...
- mybatis 原理_Mybatis工作流程及其原理与解析
Mybatis简介: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis ...
- struts2、hibernate工作原理和流程
2019独角兽企业重金招聘Python工程师标准>>> struts2原理 在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Control ...
- SSH(Struts,Spring,Hibernate )和SSM(SpringMVC,Spring,MyBatis )的区别,抽丝剥茧的给你讲清楚
SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层. SSM 则指的是 SpringMVC 做前端控制器,Spring 管理各层的组件,M ...
最新文章
- 技术“摸鱼” 大神,国外小哥 5 年白拿 45 万工资!
- potplayer 多个进程_操作系统进程与线程基本概念理解
- Linux内核之浅谈内存寻址
- H3C交换机版本升级(图形化)
- DedeCMS(织梦)安全设置经验分享
- Django 基本使用及目录结构
- 爱迪生欺骗了世界! ----马云给雅虎员工演讲
- android复杂列表滑动卡顿,Android 列表滑动性能优化总结
- 华为智能家居app未能连接上远程云服务_【InForSec通讯】智能家居云平台实体间交互状态安全分析 | Usenix2019...
- 基于php-fpm的配置详解
- 解决springboot启动失败问题:Unable to start embedded container;
- 最好的5个C++ 网站
- c语言单例模式,C语言之单例模式
- 探讨OSPF次优路由选择
- maven的pom详解
- 软件测试工程师工作总结
- 白帽大会资料下载 | 让技术自生长
- 微信小程序picker组件添加默认选择(单个picker情况)
- 对视频马赛克的调研学习报告
- trueOS能装linux软件,TrueOS 17.12发布下载,一款基于FreeBSD的桌面Linux系统
热门文章
- C++程序设计-第十周循环结构程序设计上机实践项目
- 烽烟通讯2100万限售股将于3月7日疏通流畅上市
- 编写python程序、利用循环输出1+11+111+1111_《JavaScript语法基础》练习第四章第五题练习...
- cass有坐标文件生成里程文件_【视频】南方cass9.0进阶教程74.3生成里程文件3
- 拓端tecdat|R语言用关联规则和聚类模型挖掘处方数据探索药物配伍中的规律
- oracle raise默认作用,Oracle:使用RAISE_APPLICATION_ERROR的情况是什么?
- python自动化笔记_python自动化学习笔记(一)
- 分子重构技术_4. 串珠模型重构
- ubuntu下查看CPU/GPU/内存使用率
- 【RBM】代码学习--DeepLearningToolBox