Something about Hibernate

I prepared  it  for the meeting  last  week,i hope it will help us to know  Hibernate.

Eric1_Ma     6/1/2010

.什么是hibernate

1.中間件(軟件):介于數據庫同應用程序之間的軟件

2.ORM工具:位于業務邏輯層和數據庫中間,提供對象-關系的映射,將一個持久化對象保存到數據庫中稱為一條記錄,同面向關系的數據庫進行映射,可以實現內存中數據同數據庫中數據的雙向同步更新

               表現層              (web層)

               業務邏輯層

               持久化層             (jdbc  Hibernate)

               數據庫

.hibernate涉及的文件

1.POJO:Plain Old Java Objece

2.hibernate配置文件:配置數據庫連接相關的信息

  hibernate.propterties或hibernate.cfg.xml

3.bernate映射文件:配置類和表,屬性和字段等的關系

  xxx.hbm.xml

           類<---------------->表

           屬性<-------------->字段

.Hibernate的工作原理

   1.Hibernate框架根據hibernate.cfg.xml的配置的信息(URL,Driver,User,Password)來和        數據庫進行通信;

   2.Hibernate框架根據具體的映射文件(如:student.hbm.xml,該文件配置類,類的屬性和表中字段的映射關系)來對對象進行保存,更新,刪除和查詢

   3.核心接口

     1.Configuration:

                   1)對hibernate進行配置,根啟動hibernate

                   2)創建SessionFactory

     2.SessionFactory

            1)重量級的(非常占用資源),不用頻繁的創建,刪除,一般一個數據庫對應一個SessionFacory

         2)線程安全的

         3)緩存sql語句

         4)維護hibernate的二級緩存

         5)用來創建Session

   3.Session:持久化管理器

     1)輕量級的,可以頻繁的創建和刪除,一般一個事務中的操作對應一Session

     2)線程不安全

     3)維護著hibernate的一級緩存

     4)用來執行CRUD操作

          session.save();插入

          session.delete();刪除

          session.update();更新

          session.get();查詢

                a.數據庫中無對應記錄,返回null

                b.直接到數據庫中去查

                c.不使用代理類

          session.load();查詢

                a.數據庫中無對應記錄,拋出ObjectNotFoundException異常

                b.先到緩存中去查,緩存中沒有再到數據庫中查

                c.使用代理類

   4.Transaction

     hibernate中的事務控制,通過session.beginTransaction()得到

   5.Query

     通過HQL執行查詢操作(查詢的是集合)

     session.createQuery(String queryString)

     sql:select id,name,age from student(表名)

     hql:from Student(類名)

   6.Criteria:擅長于作動態查詢

.hibernate編寫步驟

1)創建配置文件

2)創建POJO類

3)創建映射文件

4)寫程序調用Hibernate的API

  a)創建Configuration

  Configuration config = new Configuration();

  config.configure(".../hibernate.cfg.xml");

  b)創建SessionFactory

  SessionFactory sf=config.buildSessionFactory();

  c)創建Session

  Session session = sf.openSession();

  d)執行CRUD操作(可能涉及到事務)

  Transaction  tran = session.beginTransaction();\

  session.save()...

  session.update()...

  ...

  tran.commit()/rollback();

  e)關閉和數據庫的鏈接

    session.close();

  1. 还没有任何评论。
(不会被公开)

  1. No trackbacks yet.


Page 1 of 0
SetPageWidth