日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate组件(Component)映射

發布時間:2025/6/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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;//Name是另一個類??
  • ????private?Date?birthday;??
  • ???????//setter和getter方法省略??
  • }??
  • ?Name類如下:

    Java代碼 ?
  • package?eg;??
  • public?class?Name?{??
  • ??
  • ????private?String?firstName;??
  • ????private?String?lastName;??
  • ??
  • ??//省略setter和getter方法??
  • }??
  • ?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)映射的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。