日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Hibernate组件(Component)映射

發(fā)布時間:2025/6/15 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate组件(Component)映射 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

組件(Component)映射

Component(組件)是一個被包含的對象,它作為值類型被持久化,而非一個被引用的實(shí)體?!癱omponent(組件)”這一術(shù)語指的是面向?qū)ο蟮暮铣筛拍?#xff08;而并不是系統(tǒng)構(gòu)架層次上的組件的概念)。在hibernate中可借助Component節(jié)點(diǎn)的定義,完成對復(fù)雜數(shù)據(jù)表的細(xì)分。在hibernate語義中,將某個實(shí)例對象中的一個邏輯組成稱為Component(組件)。Component(組件)與實(shí)體對象的根本差別就在于Componet(組件)沒有標(biāo)識符(identity),它作為一個邏輯組成完全從屬于實(shí)體對象。

還是以我第一個hibernate實(shí)例為例來說明組件映射:

User實(shí)體類如下:

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();??
  • ????}??
  • }??
  • ?測試程序運(yùn)行后,數(shù)據(jù)庫中生成了user表,創(chuàng)建語句如下:

    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;??
  • ?數(shù)據(jù)庫中記錄如下所示:

    +----+------------+-----------+----------+
    | id | first_name | last_name | birthday |
    +----+------------+-----------+----------+
    |? 1 | long?????? | xiao????? | NULL???? |
    +----+------------+-----------+----------+
    1 row in set (0.00 sec) 《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的Hibernate组件(Component)映射的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。