首页 > 代码库 > Java之旅hibernate(3)——第一个hibernate的样例

Java之旅hibernate(3)——第一个hibernate的样例

 在解说样例之前。我们首先来理解一下hibernate的工作原理。理解原理将会帮助我们更好地理解hibernate和运用hibernate。

 1.      原理图

  利用hibernate进行数据的持久化操作,必定离不开与数据库打交道。依据上张图我们来看看hibernate是怎样工作的。

技术分享

  ?  Congratulation

技术分享

  一个使用hibernate的程序必须引入这三个核心文件。

  Configuration读取Hibernate的配置文件和映射文件里的信息。即载入配置文件和映射文件。并通过Hibernate配置文件生成一个多线程的SessionFactory对象;

  Configurationcfg = new Configuration().configure();这是读取配置的写法。

  具体功能的具体解释:

  Configuration类负责配置并启动Hibernate。创建SessionFactory对象。在Hibernate的启动过程中。Configuration类的实例首先定位映射文档位置、读取配置。然后创建SessionFactory对象。

  ?  SessionFactory

  这是创建session必须的对象,也就是说SessionFactory对象生成一个线程Session对象。详细的获取是:

         SessionFactoryfactory = cfg.buildSessionFactory();

  详细作用:

  SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理。并负责创建Session对象。这里用到了工厂模式。须要注意的是SessionFactory并非轻量级的,由于普通情况下,一个项目通常仅仅须要一个SessionFactory就能够了。当须要操作多个数据库时。能够为每一个数据库指定一个SessionFactory。SessionFactroy产生Session 实例的工厂。

  ?  Session

  session =factory.openSession();

  Session对象生成Query对象或者Transaction对象。可通过Session对象的get(),load(),save()。update()。delete()和saveOrUpdate( )等方法对PO(PO是持久化对象)进行载入、保存、更新、删除等操作;在查询的情况下。可通过Session 对象生成一个Query对象,然后利用Query对象运行查询操作;假设没有异常,Transaction对象将提交这些操作结果到数据库中。

  详细作用:

  Session接口负责运行被持久化对象的操作,它有get( ),load( ),save( ),update( )和delete( )等方法用来对PO 进行载入、保存、更新及删除等操作。

但须要注意的是Session对象是非线程安全的。

  ?  Transaction

  在hibernate中。session创建事务对象。而且事务是没有自己主动提交的,我们仅仅能手动去控制。故而session中的事务须要我们手动开启和关闭。

技术分享

  详细作用:

  Transaction接口负责事务相关的操作。用来管理Hibernate事务,它的主要方法有commit()和rollback(),能够使用Session的beginTransaction()方法生成。它是可选的,开发者也能够设计编写自己的底层事务处理代码。

  ?  Query

  Query接口负责运行各种数据库查询。它能够使用HQL语言,用来对PO进行查询操作。它能够使用Session的createQuery()方法生成

  ?  Hibernate的配置文件和映射文件

   配置文件

   Hibernate配置文件主要用来配置数据库连接參数,比如,数据库的驱动程序。URL,username和password、数据库方言等。它有两种格式:hibernate.cfg.xml和hibernate.properties。

   这两种的配置内容基本一致,仅仅是前者比后者在使用上面更加的方便而已。使得映射配置比之前更加的方便。

hibernate.cfg.xml能够在其<mapping>子元素中定义用到的xxx.hbm.xml 映射文件列表。而使用hibernate.properties则须要在程序中以硬编码方式指明映射文件。

在普通情况下。hibernate.cfg.xml 是Hibernate的默认配置文件。

   映射文件

   而映射文件是:映射文件(xxx.hbm.xml)用来把PO与数据库中的数据表、PO之间的关系与数据表之间的关系。以及PO的属性与表字段一一映射起来,它是Hibernate的核心文件。

   讲到这里不得不提PO,PO就是持久化对象(Persistent Objects,PO)。能够是普通的JavaBean,惟一特殊的是它们与(仅一个)Session相关联。JavaBean在Hibernate中存在三种状态:暂时状态(transient)、持久化状态(persistent)和脱管状态(detached)。当一个JavaBean对象在内存中孤立存在不与数据库中的数据有不论什么关联关系时,那么这个JavaBean对象就称为暂时对象(TransientObject);当它与一个Session相关联时。就变成持久化对象(Persistent Object);在这个Session被关闭的同一时候,这个对象也会脱离持久化状态。变成脱管对象(Detached Object)。能够被应用程序的不论什么层自由使用,比如,可用做与表示层打交道的传输数据对象(Data transfer Object)。

         关于hibernate的三种状态我们会在之后进行具体的解说。

 2.      代码展示

  不知不觉中说了这么多,代码展示仅仅好放到下一篇了~


Java之旅hibernate(3)——第一个hibernate的样例