天天看點

JDK6筆記(6)----JDBC4.0進階應用(2)

版權聲明:本文為部落客chszs的原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/chszs/article/details/1559287

JDK6筆記(6)----JDBC4.0進階應用(2)

3.4)Hibernate配置檔案(Hibernate Configuration File)

在你的應用程式中典型的僅有一個hibernate.cfg.xml檔案。

在配置檔案中有幾個可選項,在

www.hibernate.org

上面有一個完整的清單。

一般來說,configuration定義了映射的檔案、資料庫的連接配接資訊、資料庫使用的哪一種SQL等。

Dialect類封裝了資料庫所用各種SQL語句的差異。例如:

在Oracle中的SELECT語句:

SELECT * FROM BOOK Where rownum<10

但是在Microsoft SQLServer中為:

SELEC TOP 10 * from BOOK

Dialect類支援絕大多數商業和開源資料庫系統。

highlight.show_sql屬性:将列印标準輸出,即列印所有執行的SQL語句。

hibernate.hbm2ddl.auto屬性:将自動建立映射檔案定義的資料庫表。

見例子:

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"

http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd

">

<hibernate-configuration>

  <session-factory>

    <property name="show_sql">true</property>

    <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>

    <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver

    </property>

    <property name="hibernate.hbm2ddl.auto">create-drop</property>

    <property name="hibernate.connection.username">sa</property>

    <property name="hibernate.connection.password">password</property>

    <mapping resource="mydb/Book.hbm.xml"/>

  </session-factory>

</hibernate-configuration>

3.5)Hibernate API

Hibernate API包含了所有的資源,如:支援持久化的,執行映射的,資料庫事務,還有兩個豐富的查詢模型。

這些資源存在于org.hibernate.* 。

(1)SessionFactory

包含了資料庫中繼資料和執行持久化操作的Java類資訊。

(2)Session

是所有持久化操作的入口點。

它提供了簡單的方法來載入和儲存對象,也作為工廠方法建立事務,查詢和條件接口。

Session存活時間很短,每個請求都會建立和銷毀它。

(3)Query

接口,使用類似SQL語言(稱為HQL,即Hibernate Query Language)來檢索對象。

(4)Criteria

接口,比查詢接口有更多的面向對象。

Criteria API在運作時動态查詢是非常有效的。

4、Hibernate Example

用Hibernate連接配接Apache Derby資料庫。

1)環境變量的設定

在MS-DOS環境下:

set JAVA_HOME=C:/JDK

set DERBY_INSTALL=%JAVA_HOME%/db

set CLASSPATH=%CLASSPATH%;%DERBY_INSTALL%/lib/derby.jar;%DERBY_INSTALL%/lib/derbytools.jar;

%DERBY_INSTALL%/LIB/derbynet.jar;

cd %DERBY_INSTALL%/frameworks/NetworkServer/bin

startNetworkServer.bat

現在,可以用Hibernate連接配接Derby資料庫了。

2)建立和存儲SessionFactory。應用程式将共享靜态的SessionFactory。

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

public class HibernateUtil{

  private static SessionFactory sf;

//當運作configure.buildSessionFactory()時,Hibernate會在項目的根目錄下尋找hibernate.cfg.xml檔案。

  static {

    sf=new Configuration().configure().buildSessionFactory();

    }

  public static Session currentSession(){

    return sf.openSession();

  public static void close(Session session){

    session.close();

  }

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

2)Book Manager的例子

import java.util.Date;

import org.hibernate.HibernateException;

import org.hibernate.Transaction;

import mydb.Book;

import mydb.util.HibernateUtil;

public class BookManager{

  Session s=HibernateUtil.currentSession();

  public void save(Book book){

    try{

      Transaction tx=s.beginTransaction();

      s.saveOrUpdate(book);

      tx.commit();

    }catch(HibernateException e){

      e.printStackTrace();

  public static void main(String[] args){

    Book book =new Book();

    book.setTitle("Lucas: nine months and counting.");

    book.setCreated(new Date());

    BookManager manager=new BookManager();

    manager.save(book);