生活随笔
收集整理的這篇文章主要介紹了
Hibernate组件(Component)映射
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
組件(Component)映射
Component(組件)是一個被包含的對象,它作為值類型被持久化,而非一個被引用的實體。“component(組件)”這一術語指的是面向對象的合成概念(而并不是系統構架層次上的組件的概念)。在hibernate中可借助Component節點的定義,完成對復雜數據表的細分。在hibernate語義中,將某個實例對象中的一個邏輯組成稱為Component(組件)。Component(組件)與實體對象的根本差別就在于Componet(組件)沒有標識符(identity),它作為一個邏輯組成完全從屬于實體對象。
還是以我第一個hibernate實例為例來說明組件映射:
User實體類如下:
Java代碼 ?
package?eg;??public?class?User?{????????????private?int?id;??????private?Name?name;??????private?Date?birthday;???????????}??
?Name類如下:
Java代碼 ?
package?eg;??public?class?Name?{????????private?String?firstName;??????private?String?lastName;????????}??
?User.hbm.xml映射文件如下:
Xml代碼 ?
<?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>??????<class?name="eg.User"?>??????????<id?name="id"?>??????????????<generator?class="native"?/>??????????</id>??????????<component?name="name">??????????????<property?name="firstName"?column="first_name"?/>??????????????<property?name="lastName"?column="last_name"?/>??????????</component>??????????<property?name="birthday"?/>??????</class>??</hibernate-mapping??
?測試類如下:
Java代碼 ?
public?class?TestUser?{????????@Test??????public?void?test1(){??????????Configuration?config?=?new?Configuration();??????????config.configure();??????????SessionFactory?factory?=?config.buildSessionFactory();????????????????Session?session?=?factory.openSession();??????????Transaction?tran?=?session.beginTransaction();??????????User?user?=?new?User();??????????Name?name?=?new?Name();??????????name.setFirstName("long");??????????name.setLastName("xiao");??????????user.setName(name);??????????user.setBirthday(new?Date());??????????session.save(user);??????????tran.commit();??????????session.close();??????}??}??
?測試程序運行后,數據庫中生成了user表,創建語句如下:
Sql代碼 ?
DROP?TABLE?IF?EXISTS?`test`.`user`;??CREATE?TABLE??`test`.`user`?(????`id`?int(11)?NOT?NULL?AUTO_INCREMENT,????`first_name`?varchar(255)?DEFAULT?NULL,????`last_name`?varchar(255)?DEFAULT?NULL,????`birthday`?datetime?DEFAULT?NULL,????PRIMARY?KEY?(`id`)??)?ENGINE=InnoDB?AUTO_INCREMENT=2?DEFAULT?CHARSET=utf8;??
?數據庫中記錄如下所示:
+----+------------+-----------+----------+
| id | first_name | last_name | birthday |
+----+------------+-----------+----------+
|? 1 | long?????? | xiao????? | NULL???? |
+----+------------+-----------+----------+
1 row in set (0.00 sec)
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的Hibernate组件(Component)映射的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。