更新時間:2022-02-11 10:45:57 來源:動力節(jié)點 瀏覽951次
Hibernate 框架用于與作為Java對象的數(shù)據(jù)庫記錄進行交互,反之亦然。
它將java對象保存/更新為數(shù)據(jù)庫記錄,將數(shù)據(jù)庫記錄獲取為java對象等。
Hibernate 使用其Session對象執(zhí)行數(shù)據(jù)庫交互。會話對象是在SessionFactory的幫助下檢索的。
此SessionFactory與特定數(shù)據(jù)庫相關(guān)。
因此,為了初始化SessionFactory,需要數(shù)據(jù)庫連接參數(shù),如數(shù)據(jù)庫類型、主機、端口、用戶名、密碼等。
Hibernate 配置涉及將這些參數(shù)提供給應(yīng)用程序,以便它能夠創(chuàng)建SessionFactory。
Hibernate 可以通過以下三種方式進行配置:
使用 XML 文件
使用屬性文件
程序化配置
Hibernate 可以使用默認(rèn)命名為hibernate.cfg.xml的 XML 文件進行配置。
該文件具有各種屬性標(biāo)記,其名稱屬性引用特定屬性,值引用該屬性的值。
一個典型的 XML 配置文件如下所示。
<!DOCTYPE hibernate-configuration PUBLIC “-//Hibernate/Hibernate Configuration DTD 3.0//EN” “http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd”>
<hibernate-configuration>
<session -factory> <property name = “show_sql” >true </property> <property name = “connection.driver.class” >com.mysql.jdbc.Driver </property> <property name = “connection.url” >jdbc :mysql://localhost:3306/codippa </property> <property name = “connection.username” >root </property> <屬性名稱=
“connection.password” >root </property> <property name = “dialect” >org.hibernate.dialect.MySQLDialect </property> </session-factory> </hibernate-configuration>
如上所示使用 XML 文件配置 Hibernate 時,將需要以下代碼:
配置cfg =新配置();
cfg。配置(“hibernate.cfg.xml” );
// 建立會話工廠
SessionFactory sessionFactory = cfg. 構(gòu)建會話工廠() ;
// 獲取會話
會話會話 = sessionFactory。獲取當(dāng)前會話();
會議。開始交易();
系統(tǒng)。出來。println ( session.isConnected ( )) ;
// 關(guān)閉會話
會議。關(guān)閉();
系統(tǒng)。出來。println ( session.isConnected ( )) ;
上面的代碼創(chuàng)建一個對象并使用它的方法org.hibernate.cfg.Configuration構(gòu)建一個。現(xiàn)在,與數(shù)據(jù)庫交互并需要數(shù)據(jù)庫連接參數(shù)。org.hibernate.SessionFactorybuildSessionFactory
SessionFactory
這些是從上面創(chuàng)建的表單的配置文件中提供給它的。配置對象使用其方法
加載此文件。一旦創(chuàng)建,它就可以用來創(chuàng)建一個.configure
SessionFactoryorg.hibernate.Session
這是配置 Hibernate 的另一種方法,它是一個簡單的屬性文件,它是名稱-值對的組合。
屬性文件的快照如下所示:
hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url = jdbc:mysql://localhost:3306/codippa
hibernate.connection.username = root
hibernate。連接.密碼=根
屬性名稱是重要的,也就是說,屬性的名稱不能更改,只能更改它們的值以匹配數(shù)據(jù)庫設(shè)置。
使用屬性文件連接到數(shù)據(jù)庫所需的代碼如下所示。
代碼將類路徑中的屬性文件顯式加載到對象中,并通過其方法java.util.Properties將此屬性對象提供給 a 。從配置創(chuàng)建的方法保持不變。org.hibernate.cfg.ConfigurationsetProperties
SessionFactory
配置cfg =新配置();
屬性 p =新屬性() ;
//加載屬性文件
頁。加載(線程。currentThread ()。getContextClassLoader ()。getResourceAsStream (“hibernate.properties” ));
cfg。設(shè)置屬性( p ) ;
// 建立會話工廠
SessionFactory 工廠 = cfg。構(gòu)建會話工廠() ;
// 獲取會話
會話會話 = 工廠。打開會話();
系統(tǒng)。出來。println ( session.isConnected ( )) ;
// 關(guān)閉會話
會議。關(guān)閉();
系統(tǒng)。出來。println ( session.isConnected ( )) ;
這種方法不需要任何外部 XML 或?qū)傩晕募?/p>
所有必需的配置參數(shù)都由代碼本身提供。有關(guān)此方法的詳細信息,請參閱本文。
讓我們調(diào)整一下:
Hibernate.cfg.xml或Hibernate.properties應(yīng)該存在于src文件夾或src/main/resources文件夾下。
如果在沒有任何參數(shù)的情況下調(diào)用configure方法,那么 Hibernate默認(rèn)org.Hibernate.cfg.Configuration會搜索名為hibernate.cfg.xml的文件。
使用屬性文件或 xml 文件配置 Hibernate 時,該文件應(yīng)位于應(yīng)用程序類路徑中。
SessionFactory 負(fù)責(zé)單個數(shù)據(jù)庫。
如果您的應(yīng)用程序與許多數(shù)據(jù)庫交互,那么您將需要多個 Session 工廠。
Aorg.hibernate.Session表示單個工作單元,并為每個操作打開和關(guān)閉。
SessionFactory 是一個全局對象,應(yīng)該在應(yīng)用程序中只初始化一次。