`
xudongcsharp
  • 浏览: 470403 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hibernate简介

阅读更多
首先: 什么是Hibernate?

      Hibernate其实就是一个ORM框架。它能提供强大的对象和关系型数据库的映射以及查询功能。直白的说,Hibernate就是利用面向对象的思维开发基于关系数据库的应用程序。

       这中间还需要知道什么是持久化层?

       企业软件架构比较流行的三层结构自上而下:

                        【显示表述层】=>【业务逻辑层】=>【数据库层】。

这里业务逻辑层不仅要负责业务逻辑,而且直接访问数据库完成对业务数据的相关操作。当把数据访问的细节和业务逻辑分开并且把数据访问单独作为持久化层,重新分层后自上而下就变成:

                        【显示表述层】=>【业务逻辑层】=>【持久化层】=>【数据库层】。

这样持久化层封装数据访问细节,为业务逻辑层提供面向对象的API。这个持久化层应达到以下目标:

        1.代码重用性高,能完成对所有数据库的操作;

        2.能够支持多种数据库平台;

        3.具有独立性,持久化层的具体实现的变化不能影响上层的表现。



       Hibernate的优势在于:1.开源。2.成熟!3.流行。4.自定义API。

                                          5.  JBoss就用Hibernate3实现Entity Beans。 (什么是JBoss?了解请点击这里。 )




--------------------------------------------------------------------------------


ORM又是什么?

     ORM=Object-Relation Mapping(对象-关系映射),它是一门非常实用的工程技术。实现了 JAVA应用中的对象到关系数据库中的表的自动的(和透明的)持久化,使用元数据(meta data)描述对象与数据库之间的映射。

      ORM可以看成是一座桥。一座架于面向对象开发语言和关系型数据库之间的桥-----没办法,谁让这两种都是主流呢。它们之间的映射关系如下:

             [类]<=>[表]   [对象实例]<=>[表的行]   [属性]<=>[表的列]

中间只需制定一个映射文件(XML),然后在该文件里配置持久化类与DB表的映射关系,ORM中间件在运行时参照此文件内容,把DB中的数据加载到持久化类中。所谓中间件,比如Hibernate..................................

          ORM的优点在于:1.提高生产率。2.可维护性。3.更好的性能。


--------------------------------------------------------------------------------

Hibernate框架中重要的API

     Hibernate框架中的部分核心API,几乎在任何的实际开发中都会用到,程序员通过这些可以获取和保存持久对象,并进行事物处理。

1.Configuration(配置)

       Configuration是启动HIbernate第一个运行的类,它的作用是负责管理Hibernate的配置信息。在Hibernate启动过程中,Configuration类的实例首先定位映射文件的位置,读取配置文件的信息然后创建一个SessionFactory对象。它的内容如下:

Hibernate运行的底层信息:数据库的URL,用户名,密码,JDBC的驱动类,数据库方言(Dialect)和数据库连接池等。
Hibernate的映射文件:*.hbm.xml  。*即文件名。一般还是用Hibernate,方便规范。
      Hibernate配置调用代码:  Configuration cfg = new Configuration().configure();

2.SessionFactory(会话工厂)接口

       SessionFactory接口是用来产生Session的工厂。一个SessionFactory对象代表一个数据库,它能够让所有的客户程序在内存中共享,用来得到不同的Session对象。

       会话工厂缓存了生成的SQL语句和Hibernate运行时使用的映射元数据。

       会话工厂调用代码: SessionFactory sessionFactory = cfg.buildSessionFactory();

3.Session(会话)接口

       这是JAVA中和Hibernate进行交互的主要接口,也是持久化操作的主要API,它提供对数据持久对象进行操作的方法,可以把它想象成一个持久对象的缓冲区。Hibernate能够自动检测缓冲区中的持久对象是否已经改变,并及时刷新数据,以保证Session中的对象与数据库的同步。

       Session对象的主要功能是读取,创建和删除映射的实体对象的实例。这些操作被转化成了数据库中表的增删改查等操作。

       Session对象不是线程安全的对象,Session的实例是通过SessionFactory的openSession方法得到的。在所有工作完成后,需要关闭.

      会话调用代码: Session sess = SessionFactory.openSession();

4.Transaction(事务)接口

      在EJB中,事务处理是依靠EJB容器来处理,但是在Hibernate轻量级框架中,不依赖于容器而是用自己的API来调用底层的事务API达到事务处理的目的。这样有助于保持Hibernate应用在不同类型的执行环境或容器中的可移植性。

      Session对象的生命周期,也以Transaction对象的事务开始和结束为边界。

      sess.beginTransaction(); //开始

      sess.getTransaction().commit(); //结束

5.Query(查询)和Criteria(标准)接口

      Query接口允许对数据库及持久对象进行查询并控制查询如何执行。它可以有两种表达方式:HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量,并最终执行查询操作。

      Query接口是轻量级的。不能在Session之外使用。

      查询调用代码: Query query = session.createQuery("select * from 表名");

      Criteria接口与Query接口非常类似,它允许创建并执行面向对象的标准化查询。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics