版權聲明:本文為部落客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);
}