JavaShuo
欄目
標籤
Hibernate 映射文件配置
時間 2019-11-11
標籤
hibernate
映射
文件
配置
欄目
Hibernate
简体版
原文
原文鏈接
對象關係的映射是用一個XML文檔來講明的。映射文檔可使用工具來生成,如XDoclet,Middlegen和AndroMDA等。
下面從一個映射的例子開始講解映射元素,映射文件的代碼以下。
Java代碼
<?xml version=
"1.0"
?>
<!--
全部的XML映射文件都須要定義以下所示的DOCTYPE。
Hibernate會先在它的類路徑(classptah)中搜索DTD文件。
-->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
<!--
hibernate-mapping有幾個可選的屬性:
schema屬性指明瞭這個映射的表所在的schema名稱。
default
-cascade屬性指定了默認的級聯風格 可取值有 none、save、update。
auto-
import
屬性默認讓咱們在查詢語言中可使用非全限定名的類名 可取值有
true
、
false
。
package
屬性指定一個包前綴。
-->
<hibernate-mapping schema=
"schemaName"
default
-cascade=
"none"
auto-
import
=
"true"
package
=
"test"
>
<!--用
class
元素來定義一個持久化類 -->
<
class
name=
"People"
table=
"person"
>
<!-- id元素定義了屬性到數據庫表主鍵字段的映射。-->
<id name=
"id"
>
<!-- 用來爲該持久化類的實例生成惟一的標識 -->
<generator
class
=
"native"
/>
</id>
<!-- discriminator識別器 是一種定義繼承關係的映射方法-->
<discriminator column=
"subclass"
type=
"character"
/>
<!-- property元素爲類聲明瞭一個持久化的,JavaBean風格的屬性-->
<property name=
"name"
type=
"string"
>
<column name=
"name"
length=
"64"
not-
null
=
"true"
/>
</property>
<property name=
"sex"
not-
null
=
"true"
update=
"false"
/>
<!--多對一映射關係-->
<many-to-one name=
"friend"
column=
"friend_id"
update=
"false"
/>
<!--設置關聯關係-->
<set name=
"friends"
inverse=
"true"
order-by=
"id"
>
<key column=
"friend_id"
/>
<!—一對多映射-->
<one-to-many
class
=
"Cat"
/>
</set>
</
class
>
</hibernate-mapping>
組件應用的方法
組件有兩種類型,即組件(component)和動態組件(dynamic-component)。在配置文件中,component元素爲子對象的元素與父類對應表的字段創建起映射關係。而後組件能夠聲明它們本身的屬性、組件或者集合。component元素的定義以下所示:
Java代碼
<component name=
"propertyName"
class
=
"className"
insert=
"true|false"
upate=
"true|false"
access=
"field|property|ClassName"
>
<property ...../>
<many-to-one .... />
........
</component>
在這段代碼中,name是指屬性名,class是類的名字,insert指的是被映射的字段是否出如今SQL的INSERT語句中,upate指出被映射的字段是否出如今SQL的UPDATE語句中,access指出訪問屬性的策略。
Hiebernate的基本配置
Hibernate的數據庫鏈接信息是從配置文件中加載的。Hibernate的配置文件有兩種形式:一種是XML格式的文件,一種是 properties屬性文件。properties形式的配置文件默認文件名是hibernate.properties,一個properties形式的配置文件內容以下所示:
Java代碼
#指定數據庫使用的驅動類
hibernate.connection.driver_class = com.mysql.jdbc.Driver r
#指定數據庫鏈接串
hibernate.connection.url = jdbc:mysql:
//localhost:3306/db
#指定數據庫鏈接的用戶名
hibernate.connection.username = user
#指定數據庫鏈接的密碼
hibernate.connection.password = password
#指定數據庫使用的方言
hibernate.dialect = net.sf.hibernate.dialect.MySQLDialect
#指定是否打印SQL語句
hibernate.show_sql=
true
在配置文件中包含了一系列屬性的配置,Hibernate將根據這些屬性來鏈接數據庫。
在XML格式的配置文件中,除了基本的Hibernate配置信息,還能夠指定具體的持久化類的映射文件,這能夠避免將持久化類的配置文件硬編碼在程序中。XML格式的配置文件的默認文件名爲hibernate.cfg.xml,一個XML配置文件的示例以下所示:
Java代碼
<?xml version=
'1.0'
encoding=
'UTF-8'
?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
<hibernate-configuration>
<session-factory>
<!--顯示執行的SQL語句-->
<property name=
"show_sql"
>
true
</property>
<!--鏈接字符串-->
<property name=
"connection.url"
>jdbc:mysql:
//localhost:3306/STU</property>
<!--鏈接數據庫的用戶名-->
<property name=
"connection.username"
>root</property>
<!--數據庫用戶密碼-->
<property name=
"connection.password"
>root</property>
<!--數據庫驅動-->
<property name=
"connection.driver_class"
>com.mysql.jdbc.Driver</property>
<!--選擇使用的方言-->
<property name=
"dialect"
>org.hibernate.dialect.MySQLDialect</property>
<!--映射文件 -->
<mapping resource=
"com/stuman/domain/Admin.hbm.xml"
/>
<!--映射文件-->
<mapping resource=
"com/stuman/domain/Student.hbm.xml"
/>
</session-factory>
</hibernate-configuration>
properties形式的配置文件和XML格式的配置文件能夠同時使用。當同時使用兩種類型的配置文件時,XML配置文件中的設置會覆蓋properties配置文件的相同的屬性。
對象標識符號
在關係數據庫表中,主鍵(Primary Key)用來識別記錄,並保證每條記錄的惟一性。在Java語言中,經過比較兩個變量所引用對象的內存地址是否相同,或者比較兩個變量引用的對象值是否相同來判斷兩對象是否相等。Hibernate爲了解決二者之間的不一樣,使用對象標識符(OID)來標識對象的惟一性。OID是關係數據庫中主鍵在Java 對象模型中的等價物。在運行時,Hibernate根據OID來維持Java對象和數據庫表中記錄的對應關係。以下代碼所示,三次調用了Session的 load()方法,分別加載OID爲1或3的User對象。
Java代碼
Transaction tx = session.beginTransaction();
User user1 = (User)session.load(User.
class
,
new
Long(
1
));
User user2 = (User)session.load(User.
class
,
new
Long(
1
));
User user3 = (User)session.load(User.
class
,
new
Long(
3
));
System.out.println( user1 == user2 );
System.out.println( user1 == user3 );
應用程序在執行上述代碼時,第一次加載OID爲1的User對象,從數據庫中查找ID爲1的記錄,而後建立相應的User實例,並把它保存在 Session緩存中,最後將該實例的引用賦值給變量user1。第二次加載OID爲1的對象時,直接把Session緩存中OID爲1的實例的引用賦值給變量user2。所以,表達式user1==user2的結果爲true。
標識的生成可使用不一樣的策略,表1爲Hibernate內置的標識生成策略。
表1 Hibernate標識生成策略
Hibernate映射類型
在對象/關係映射文件中,Hibernate採用映射類型做爲Java類型和SQL類型的橋樑。Hibernate映射類型分爲2種:內置映射類型和自定義映射類型。
一、內置映射類型
Hibernate對全部的Java原生類型、經常使用的Java類型如String、Date等都定義了內置的映射類型。表2列出了Hibernate映射類型、對應的Java類型以及對應的標準SQL類型。
表2 Hibernate內置映射類型
二、自定義映射類型
Hibernate提供了自定義映射類型接口,容許用戶以編程的方式建立自定義的映射類型。用戶自定義的映射類型須要實現 net.sf.hibernate.UserType或net.sf.hibernate.CompositeUserType接口。具體的建立自定義映射類型的方法請參考hibernate官方文檔或相關資料,這裏再也不詳細介紹
相關文章
1.
Hibernate 映射文件配置
2.
Hibernate配置文件,映射文件
3.
Hibernate第三篇【主配置文件、映射文件、複合主鍵映射】
4.
Hibernate框架 主配置文件 Hibernate.cfg.xml 映射配置 說明
5.
Mybatis 映射文件配置
6.
XML 映射配置文件
7.
MyBatis映射文件配置
8.
Hibernate-----核心配置文件、映射文件
9.
Hibernate配置文件和映射文件詳解
10.
Hibernate配置文件與映射文件詳解
更多相關文章...
•
*.hbm.xml映射文件詳解
-
Hibernate教程
•
Hibernate映射關係
-
Hibernate教程
•
IDEA下SpringBoot工程配置文件沒有提示
•
IntelliJ IDEA 代碼格式化配置和快捷鍵
相關標籤/搜索
配置文件
SSH配置文件
映射
無配置文件設置
文件訪問映射
配置
讀寫配置文件
無dwr配置文件
配置文件詳解
配件
Hibernate
Hibernate教程
MyBatis教程
SQLite教程
文件系統
插件
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
跳槽面試的幾個實用小技巧,不妨看看!
2.
Mac實用技巧 |如何使用Mac系統中自帶的預覽工具將圖片變成黑白色?
3.
Mac實用技巧 |如何使用Mac系統中自帶的預覽工具將圖片變成黑白色?
4.
如何使用Mac系統中自帶的預覽工具將圖片變成黑白色?
5.
Mac OS非兼容Windows軟件運行解決方案——「以VMware & Microsoft Access爲例「
6.
封裝 pyinstaller -F -i b.ico excel.py
7.
數據庫作業三ER圖待完善
8.
nvm安裝使用低版本node.js(非命令安裝)
9.
如何快速轉換圖片格式
10.
將表格內容分條轉換爲若干文檔
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
Hibernate 映射文件配置
2.
Hibernate配置文件,映射文件
3.
Hibernate第三篇【主配置文件、映射文件、複合主鍵映射】
4.
Hibernate框架 主配置文件 Hibernate.cfg.xml 映射配置 說明
5.
Mybatis 映射文件配置
6.
XML 映射配置文件
7.
MyBatis映射文件配置
8.
Hibernate-----核心配置文件、映射文件
9.
Hibernate配置文件和映射文件詳解
10.
Hibernate配置文件與映射文件詳解
>>更多相關文章<<