3-Hibernate mapping file
来源:互联网 发布:java path接口 编辑:程序博客网 时间:2024/05/17 06:43
- <?xml version="1.0"?>
- <!DOCTYPE hibernate-mapping PUBLIC
- "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping
- package="com.unicorn.hibernate.domain">
- <class name="Unicorn">
- <id name="id">
- <generator class="assigned"/>
- </id>
- <!-- unique確保name唯一 -->
- <property name="name" unique="true"/>
- <property name="birthday"/>
- </class>
- </hibernate-mapping>
這里的hibernate映射文件就是 用于說明Java對象與哪個表中的記錄相對應.以及Java對象的各個屬性分別對應表中的哪一列,不同性質的屬性(例如:主鍵和普通屬性)用不同的標簽來映射,如果Java對象中的某個屬性不需要保存在數據庫中,那么在Hibernate映射文件中就不需要配置這個屬性.
主鍵生成方式:<generatorclass=”native”></generator>
Class屬性有以下幾種類型:
I.Assigned
主鍵由應用邏輯產生,數據交由Hibernate保存時,主鍵值已經設置完畢,無需Hibernate干預.
II.hilo
通過hi/lo算法實現的主鍵生成機制,需要額外的數據庫表保存主鍵生成歷史狀態.
III.seqhilo
與hilo類似,通過hi/lo算法實現的主鍵生成機制,只是主鍵歷史狀態保存在Sequence中,適用于支持Sequence的數據庫,如Oracle.
IV.increment
主鍵按數值順序遞增.
此實現機制為在當前應用實例中維持一個變量以保存當前的最大值,之后每次需要生成主鍵的時候將此值加1作為主鍵.
由于各個實例各自維護主鍵狀態,不同實例可能生成同樣的主鍵,因此,如果同一個數據庫有多個實例訪問,此方式必須避免使用.
V.identity
采用數據庫提供的主鍵生成機制,如SQL Server,MySQL中的自增主鍵生成機制.
VI.sequence
采用數據庫提供的sequence機制生成逐漸.如Oracle Sequence
VII.native
由Hibernate根據數據庫適配器中的定義,自動采用identity,hilo,sequence的其中一種作為主鍵生成方式.
VIII.uuid.hex
由Hibernate基于128位惟一值產生算法,根據當前設備IP,時間,JVM啟動時間,內部自增量等4個參數生成十六進制數值(編碼后以長度為32位的字符串表示)主鍵.
一般而言,利用uuid.hex方式生成主鍵將提供最好的數據插入性能和數據庫平臺適應性.
IX.uuid.string
與uuid.hex類似,只是生成的主鍵未進行編碼(長度16位).在某些數據庫中可能出現問題(如PostgreSQL);
X.foreign
使用外部表的字段作為主鍵,此類主鍵生成機制我們將在數據關聯部分再講解.
XI.select
Hibernate3 中新引入的主鍵獲取機制,主要針對遺留系統的改造工程.
Hibernate3同時還提供了另一種與實體類型無關的映射方式:動態模型(Dynamic Model),即通過通用數據容器(如Map)對庫表記錄進行表達.
對于以上實例,動態模型方式的映射文件如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
- <hibernate-mapping>
- <class entity-name="DynamicUnicornMap " table="Unicorn">
- <id name="id" column="id" type="java.lang.Integer">
- <generator class="assigned"></generator>
- </id>
- <property name="name" column="name" type="java.lang.String"></property>
- <property name="age" column="age" type="java.lang.Integer"></property>
- </class>
- </hibernate-mapping>
此類對應的操作代碼示例如下:(以數據保存為例)
- session =sessionFactory.openSession().getSession(EntityMode.MAP);
- Map unicornMap = new HashMap();
- unicornMap .put(“name”,”unicorn”);
- unicornMap .put(“age”,new Integer(25));
- Transaction tx=session.beginTransaction();
- session.save(“DynamicUnicornMap”,unicornMap );
- tx.commit();
其中, session.save(“DynamicUnicornMap”,unicornMap);中的”DynamicUnicornMap”即配置中定義的實體名.Hibernate將根據實體名所對應的映射配置,完成動態模型的持久化操作.
- 3-Hibernate mapping file
- hibernate one-to-one mapping 的 mapping file 怎么写
- Hibernate 3学习笔记 - 简单的Persistent class和mapping file
- Mapping File
- file mapping
- File Mapping
- File Mapping
- hibernate-mapping
- Hibernate mapping
- 解决hibernate:referenced file contains errors http hibernate.sourceforge.net hibernate-mapping-3.0.dtd
- Hibernate Mapping 3 : Many To Many
- DLL file mapping
- File Mapping析疑
- File Mapping析疑
- POJ 1057 FILE MAPPING
- File mapping的用法
- 【转】File Mapping技术
- poj 1057-File mapping
- 2-Hibernate開發流程与Object限制
- Java性能的优化(上)
- P2P Links (Game Theory)
- 项目1
- Java性能的优化(下)
- 3-Hibernate mapping file
- JAVA生成EXCEL文件
- 设计模式之观察者(Observer)模式与其C++通用实现(上)
- java中的final用法
- win2003 命令行工具 waitfor 的使用
- 安装程序无法启动远程计算机上。请检查远程计算机上 TaskScheduler 事件日志。
- 设计模式之观察者(Observer)模式与其C++通用实现(中)
- 设计模式之观察者(Observer)模式与其C++通用实现(下)
- asp.net 双向探针:即看服务器又看自己