更新時(shí)間:2022-02-11 10:45:57 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1086次
Hibernate 框架用于與作為Java對(duì)象的數(shù)據(jù)庫(kù)記錄進(jìn)行交互,反之亦然。
它將java對(duì)象保存/更新為數(shù)據(jù)庫(kù)記錄,將數(shù)據(jù)庫(kù)記錄獲取為java對(duì)象等。
Hibernate 使用其Session對(duì)象執(zhí)行數(shù)據(jù)庫(kù)交互。會(huì)話對(duì)象是在SessionFactory的幫助下檢索的。
此SessionFactory與特定數(shù)據(jù)庫(kù)相關(guān)。
因此,為了初始化SessionFactory,需要數(shù)據(jù)庫(kù)連接參數(shù),如數(shù)據(jù)庫(kù)類型、主機(jī)、端口、用戶名、密碼等。
Hibernate 配置涉及將這些參數(shù)提供給應(yīng)用程序,以便它能夠創(chuàng)建SessionFactory。
Hibernate 可以通過以下三種方式進(jìn)行配置:
使用 XML 文件
使用屬性文件
程序化配置
Hibernate 可以使用默認(rèn)命名為hibernate.cfg.xml的 XML 文件進(jìn)行配置。
該文件具有各種屬性標(biāo)記,其名稱屬性引用特定屬性,值引用該屬性的值。
一個(gè)典型的 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 時(shí),將需要以下代碼:
配置cfg =新配置();
cfg。配置(“hibernate.cfg.xml” );
// 建立會(huì)話工廠
SessionFactory sessionFactory = cfg. 構(gòu)建會(huì)話工廠() ;
// 獲取會(huì)話
會(huì)話會(huì)話 = sessionFactory。獲取當(dāng)前會(huì)話();
會(huì)議。開始交易();
系統(tǒng)。出來。println ( session.isConnected ( )) ;
// 關(guān)閉會(huì)話
會(huì)議。關(guān)閉();
系統(tǒng)。出來。println ( session.isConnected ( )) ;
上面的代碼創(chuàng)建一個(gè)對(duì)象并使用它的方法org.hibernate.cfg.Configuration構(gòu)建一個(gè)。現(xiàn)在,與數(shù)據(jù)庫(kù)交互并需要數(shù)據(jù)庫(kù)連接參數(shù)。org.hibernate.SessionFactorybuildSessionFactory
SessionFactory
這些是從上面創(chuàng)建的表單的配置文件中提供給它的。配置對(duì)象使用其方法
加載此文件。一旦創(chuàng)建,它就可以用來創(chuàng)建一個(gè).configure
SessionFactoryorg.hibernate.Session
這是配置 Hibernate 的另一種方法,它是一個(gè)簡(jiǎn)單的屬性文件,它是名稱-值對(duì)的組合。
屬性文件的快照如下所示:
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ù)庫(kù)設(shè)置。
使用屬性文件連接到數(shù)據(jù)庫(kù)所需的代碼如下所示。
代碼將類路徑中的屬性文件顯式加載到對(duì)象中,并通過其方法java.util.Properties將此屬性對(duì)象提供給 a 。從配置創(chuàng)建的方法保持不變。org.hibernate.cfg.ConfigurationsetProperties
SessionFactory
配置cfg =新配置();
屬性 p =新屬性() ;
//加載屬性文件
頁(yè)。加載(線程。currentThread ()。getContextClassLoader ()。getResourceAsStream (“hibernate.properties” ));
cfg。設(shè)置屬性( p ) ;
// 建立會(huì)話工廠
SessionFactory 工廠 = cfg。構(gòu)建會(huì)話工廠() ;
// 獲取會(huì)話
會(huì)話會(huì)話 = 工廠。打開會(huì)話();
系統(tǒng)。出來。println ( session.isConnected ( )) ;
// 關(guān)閉會(huì)話
會(huì)議。關(guān)閉();
系統(tǒng)。出來。println ( session.isConnected ( )) ;
這種方法不需要任何外部 XML 或?qū)傩晕募?/p>
所有必需的配置參數(shù)都由代碼本身提供。有關(guān)此方法的詳細(xì)信息,請(qǐng)參閱本文。
讓我們調(diào)整一下:
Hibernate.cfg.xml或Hibernate.properties應(yīng)該存在于src文件夾或src/main/resources文件夾下。
如果在沒有任何參數(shù)的情況下調(diào)用configure方法,那么 Hibernate默認(rèn)org.Hibernate.cfg.Configuration會(huì)搜索名為hibernate.cfg.xml的文件。
使用屬性文件或 xml 文件配置 Hibernate 時(shí),該文件應(yīng)位于應(yīng)用程序類路徑中。
SessionFactory 負(fù)責(zé)單個(gè)數(shù)據(jù)庫(kù)。
如果您的應(yīng)用程序與許多數(shù)據(jù)庫(kù)交互,那么您將需要多個(gè) Session 工廠。
Aorg.hibernate.Session表示單個(gè)工作單元,并為每個(gè)操作打開和關(guān)閉。
SessionFactory 是一個(gè)全局對(duì)象,應(yīng)該在應(yīng)用程序中只初始化一次。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)