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:

[html] view plaincopy
  1. <hibernate-configuration>
  2. <session-factory>
  3. <property name="connection.username">root</property>
  4. <property name="connection.url">
  5. jdbc:mysql://localhost:3306/databasename
  6. </property>
  7. <property name="dialect">
  8. org.hibernate.dialect.MySQLDialect
  9. </property>
  10. <property name="myeclipse.connection.profile">
  11. dangdang
  12. </property>
  13. <property name="connection.password">root</property>
  14. <property name="connection.driver_class">
  15. com.mysql.jdbc.Driver
  16. </property>
  17. <mapping resource="entity/User.hbm.xml" />
  18. </session-factory>
  19. </hibernate-configuration>

HibernateSessionFactory.java:

[html] view plaincopy
  1. 略。。。

3.创建UserDao接口和接口的实现类UserDaoImpl,实现类中测试:

UserDaoImpl.java:

[java] view plaincopy
  1. public class UserDaoImpl implements UserDao {
  2. public List<User> findAll() {
  3. Session session = HibernateSessionFactory.getSession();
  4. Transaction tx = session.beginTransaction();
  5. Query query = session.createQuery("from User");
  6. query.setFirstResult(0);//分页
  7. query.setMaxResults(2);
  8. List<User> lists = query.list();
  9. tx.commit();
  10. HibernateSessionFactory.closeSession();
  11. return lists;
  12. }
  13. public static void main(String[] args) {
  14. UserDaoImpl user = new UserDaoImpl();
  15. System.out.println(user.findAll().size());
  16. }
  17. }

访问的时候其工作流程:

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的比较相关推荐

  1. Mybatis工作流程,附带mybatis的mapper文件和config配置文件模板。mapper文件和dao接口的关系——xml中的namespace和sql标签id命名要求。

    1. Mybatis工作流程 1.1 使用MySQL创建数据库girls并生成一个表boys,如下图. 1.2 创建该表对应的简单实体类Boys,如下图. 1.3 创建Dao接口以及和接口同名的map ...

  2. Mybatis体系结构及工作流程

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) Mybatis工作流程 首先在MyBatis 启动的时候我们要去解析配置文件,包括全局配置文件和映射器配置文件,这里面包含了我们怎么控制MyBa ...

  3. mybatis+springMVC+spring原理及工作流程

    做自己没做过的事情叫做成长 做自己不愿做的事情叫做改变 做自己不敢做的事情叫做突破 共勉 引言 本人在学习ssm中,已经能熟练的编写配置文件与代码了.但于前几天朋友问其原理与工作流程时却只能答出一二, ...

  4. mybatis返回某一字段_8.mybatis的基本工作流程(2.0)※

    mybatis的基本工作流程 1.读取配置文件,配置文件包含数据库连接信息和Mapper映射文件或者Mapper包路径. 2.有了这些信息就能创建SqlSessionFactory,SqlSessio ...

  5. mybatis 调用存储过程_你真的该进来了解下MyBatis的SQL工作流程了

    前言 MyBatis可能很多人都一直在用,但是MyBatis的SQL执行流程可能并不是所有人都清楚了,那么既然进来了,通读本文你将收获如下: 1.Mapper接口和映射文件是如何进行绑定的 2.MyB ...

  6. MyBatis 的工作流程分析

    我们学习了MyBatis 的编程式使用的方法,我们再来回顾一下MyBatis 的主要工作流程: 首先在MyBatis 启动的时候我们要去解析配置文件,包括全局配置文件和映射器配置文件,这里面包含了我们 ...

  7. MyBatis的几个重要概念和工作流程

    MyBatis 几个重要的概念 Mapper 配置: Mapper 配置可以使用基于 XML 的 Mapper 配置文件来实现,也可以使用基于 Java 注解的 MyBatis 注解来实现,甚至可以直 ...

  8. mybatis 原理_Mybatis工作流程及其原理与解析

    Mybatis简介: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis ...

  9. struts2、hibernate工作原理和流程

    2019独角兽企业重金招聘Python工程师标准>>> struts2原理 在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Control ...

  10. SSH(Struts,Spring,Hibernate )和SSM(SpringMVC,Spring,MyBatis )的区别,抽丝剥茧的给你讲清楚

    SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层. SSM 则指的是 SpringMVC 做前端控制器,Spring 管理各层的组件,M ...

最新文章

  1. 技术“摸鱼” 大神,国外小哥 5 年白拿 45 万工资!
  2. potplayer 多个进程_操作系统进程与线程基本概念理解
  3. Linux内核之浅谈内存寻址
  4. H3C交换机版本升级(图形化)
  5. DedeCMS(织梦)安全设置经验分享
  6. Django 基本使用及目录结构
  7. 爱迪生欺骗了世界! ----马云给雅虎员工演讲
  8. android复杂列表滑动卡顿,Android 列表滑动性能优化总结
  9. 华为智能家居app未能连接上远程云服务_【InForSec通讯】智能家居云平台实体间交互状态安全分析 | Usenix2019...
  10. 基于php-fpm的配置详解
  11. 解决springboot启动失败问题:Unable to start embedded container;
  12. 最好的5个C++ 网站
  13. c语言单例模式,C语言之单例模式
  14. 探讨OSPF次优路由选择
  15. maven的pom详解
  16. 软件测试工程师工作总结
  17. 白帽大会资料下载 | 让技术自生长
  18. 微信小程序picker组件添加默认选择(单个picker情况)
  19. 对视频马赛克的调研学习报告
  20. trueOS能装linux软件,TrueOS 17.12发布下载,一款基于FreeBSD的桌面Linux系统

热门文章

  1. C++程序设计-第十周循环结构程序设计上机实践项目
  2. 烽烟通讯2100万限售股将于3月7日疏通流畅上市
  3. 编写python程序、利用循环输出1+11+111+1111_《JavaScript语法基础》练习第四章第五题练习...
  4. cass有坐标文件生成里程文件_【视频】南方cass9.0进阶教程74.3生成里程文件3
  5. 拓端tecdat|R语言用关联规则和聚类模型挖掘处方数据探索药物配伍中的规律
  6. oracle raise默认作用,Oracle:使用RAISE_APPLICATION_ERROR的情况是什么?
  7. python自动化笔记_python自动化学习笔记(一)
  8. 分子重构技术_4. 串珠模型重构
  9. ubuntu下查看CPU/GPU/内存使用率
  10. 【RBM】代码学习--DeepLearningToolBox