【前言】


      之前在浅析SSH框架的时候简单总结过一些Hibernate的知识,再次学习到Hibernate有熟悉的感觉。

      Hibernate 是一个开源的对象关系映射框架,是面向Java环境的对象/关系数据库映射工具,对象/关系映射Object/relational mapping (ORM),就是把对象模型表示的对象映射到,基于SQL的关系模型数据结构中去。它对JDBC进行了非常轻量级的对象封装,这让操作数据库变得十分简单。

      Hibernate不仅仅管理Java类到数据表的映射,还提供了数据查询和获取数据的方法,可以大幅减少开发时人工使用SQL和JDBC处理数据的时间。Hibernate解放了开发中常用的数据持久化的编程任务, 它对JDBC的又一次包装,封装的很彻底,使用很方便,是通往数据库的一座坚固桥梁。

      小编简要梳理了Hibernate知识,今后的系列博客大概就从下面的内容入手。                     

                       

java hibernate使用 java hibernate简介_Java



【体系结构】

                                       

java hibernate使用 java hibernate简介_Hibernate_02

      从表示层到数据库都为自上而下的单向依赖,持久层只单向依赖数据库。

                                        

java hibernate使用 java hibernate简介_持久化_03


  

      Hibernate使用数据库和配置信息来为应用程序提供持久化服务。

      Hibernate大致开发步骤:

      1.创建持久化类。

      2.创建对象-关系映射文件,*.hbm.xml。

      3.创建Hibernate配置文件,hibernate.cfg.xml。


      4.编写访问数据库的代码

【5个核心接口和类】


(1)SessionFactory接口:单个数据库映射关系经过编译后的内存镜像,也是生成Session的工厂。SessionFactory的初始化过程相对复杂,会耗费大量的资源。为了解决这个问题,Hibernate采用了线程安全可以并发调用,以实现SessionFactory的实例。多个线程的并发调用,可以实现Hibernate的实例共享。

(2)Session接口:应用程序与持久层之间交互操作的一个单线程对象。Session是一个持久化管理器,所有的持久化操作都是在Session的基础上完成的。Session接口对象实例中提供了持久化相关的增、删、改、查(CRUD)方面的操作。通常将每一个Session对象实例和一个数据库事务绑定。

(3)Transaction接口:通过事务API来控制事务的边界,封装了系统底层的事务操作和访问的接口。将应用系统中涉及事务功能的实现代码,从底层中抽象出来,提高了应用系统在不同的运行环境和JavaEE容器之间的移植性。

(4)Query接口:让开发者更加方便的对数据库表中的数据,以及与之对应的持久化对象进行查询操作。利用它可以使用面向对象的方式,实现对数据库的各种查询操作。

(5)Configuration:通过Configuration获取目前的配置,如数据源、数据库的URL、连接用户名及密码、数据库方言等。并可以将这些配置加载到内存中,并预启动Hibernate框架,最终达到创建SessionFactory对象的目的。

【Hibernate的优缺点分析】

      了解Hibernate优缺点,使用过程中要扬长避短。



      优点

      -提高生产力。对数据库的良好封装让使用数据库的效率得到了显著提升。

      -开发更加对象化。引入POJO对象这个概念。使用Hibernate可以使我们采用对象化思维操作关系型数据库。

      -可移植性。得益于POJO对象。


      -无侵入性,支持透明持久化。这点也得益于POJO对象。



       *POJO对象*

       Hibernate面向的对象就是POJO对象,Plain Ordinary Java Object译为简单的Java对象。任何类都没继承不需要实现任何接口,这样移植性很高,没有侵入性。实际就是普通JavaBeans,实质上可以理解为简单的实体类,POJO类方便程序员使用数据库中的数据表。我们可以很方便的将POJO类当做对象来进行使用,可以方便的调用其get、set方法。


      缺点

      -如使用数据库特性的语句,将很难调优。封装彻底的优点显而易见,但是封装彻底了灵活性就差点了。

      -对大批量数据更新存在问题。有缓存的问题。


      - 不适合对数据库进行大量统计查询。JDBC更适合大量统计查询。


【小结】 


     后续还会有Hibernate具体内容的博客,下篇见。