Hibernate入門—–Hiberna核心文件詳解
---ONE Goal , ONE Passion !
Hiberna核心文件詳解
映射文件: *.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
映射文件的dtd信息.打開hibernate.jar,在org.hibernate包中可找到hibernate-mapping-3.0.dtd文件,將dtd約束copy即可.
<!DOCTYPE hibernate-mapping PUBLIC
'-//Hibernate/Hibernate Mapping DTD 3.0//EN'
'http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd'>
<hibernate-mapping>
<!-- 類與表的映射製作在class元素上 -->
<!-- name:全路徑實體類名 -->
<!-- table:表名 -->
<class name="實體類名" table="數據庫中的表明" >
<!-- 主鍵的映射對應在id元素上 -->
<!-- name:對象中用於作爲主鍵的屬性名 -->
<!-- colomn:表中主鍵字段名 -->
<!-- 如果name與column值相同,可以省略column -->
<id name="id" column="id">
<!-- 將generator元素class屬性設置爲"assigned" -->
<generator class="assigned" />
</id>
<!-- 其他屬性與字段的映射製作在property元素上 -->
<!-- name:類中的屬性名 -->
<!-- column:表中的字段名 -->
<!-- 如果name與column值相同,可以省略column -->
<property name="name" />
<property name="pwd" />
</class>
</hibernate-mapping>
hibernate-mapping元素屬性
定義了映射文件的基本信息.
<hibernate-mapping package="包名" schema="數據庫schema名 " catalog="數據庫catalog名" default-access="property" default-lazy="true" default-cascade="none">
- package :爲映射文件中的類指定一個包前綴,這樣class中name可以直接寫類,不用是全類名
- schema : 指定數據庫schema名
- catalog : 數據庫catalog名
default-access : hibernate訪問屬性時的策略.
property使用getter,setter方法訪問成員變量. field使用反射的方式訪問成員變量.
- default-cascade : 是否使用默認的級聯
- default-lazy : 指定使用默認的延時加載策略.默認true
class元素屬性
來描述一個持久化的類.
<class name="持久化類或接口的類名" table="表明" catalog="數據庫的catalog名" lazy="true" rowid="" mutable="true">
- name : 持久化類或接口的類名
- table : 數據庫表名,默認爲類名
- catalog : 數據庫的catalog名
- lazy : 是否使用延遲加載
- mutable : 類的實例是否可變 ?
- rowid : 指定是否可以使用ROWID ?
class元素屬性
<id name="類中OID屬性名" column="列名" access="" type="">
- name : 類中OID屬性名
- column : 列名, 默認爲屬性名
- access : 屬性訪問策略, 會覆蓋hibernate-mapping中defalut-access屬性
- type : 屬性的數據類型,一般不寫,框架自動填裝. 類中一般使用包裝類.
主鍵生成策略——id屬性下的generator子元素
assigned :
1.策略是由程序員手工控制輸入數據模型OID的一種id生成策略.
2.默認的生成策略.
increment :
1.數據庫字段爲整形數據類型.
2.策略是由Hibernate內部控制生成OID的一種id生成策略,每次增量+ 1.
3.多個連接同時對一個表進行操作時,可能獲取到相同的max值,導致相同id的出現.不能在集羣環境下使用.
identity :
1.數據庫底層控制生成OID的一種id生成策略.
2.數據庫中id字段爲整型數值類型,並且要求設置成自增特性sequence:
- 數據庫底層控制生成OID的一種id生成策略
- 要求數據庫中id字段爲整型數值類型
- 只能應用於提供序列支持的數據庫, 如oracle.
native :
1.會根據所使用的數據庫類型,在(identity,sequence,hilo)生成策略中自動選擇對應的id生成策略
uuid :
1.要求數據庫中id字段爲字符串類型
property元素屬性
<property name="name" unique="false" not-null="true"/>
- unique : 該列是否唯一
- not-null: 該列是否允許爲空
核心配置文件: hibernate.cfg.xml
兩種格式:
1.properties屬性文件格式,鍵值對存放信息
2.xml文件格式.最常用
hibernate.cfg.xml文件一般放在src下.發佈後會在web-inf/classes路徑下.
<?xml version='1.0' encoding='utf-8'?>
映射文件的dtd信息.打開hibernate.jar,在org.hibernate包中可找到hibernate-configuration-3.0.dtd文件,將dtd約束copy即可.
<!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="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/userdb</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<!-- 可選配置 -->
<!--是否支持方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!--執行CURD時是否打印sql 語句 -->
<property name="show_sql">true</property>
<!-- 事務是否自動提交 -->
<property name="connection.autocommit">true</property>
<!-- 資源註冊 -->
<mapping resource="cn/fy/modle/UserModel.hbm.xml"/>
</session-factory>
</hibernate-configuration>