版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、hibernate配置文件中映射元素詳解添加時刻 :2007-4-22本文中將講述hibernate的大體配置及配置文件的應(yīng)用,這關(guān)于正確熟練利用hibernate是相當關(guān)鍵的。配置文件中映射元素詳解對象關(guān)系的映射是用一個xml 文檔來講明的。 映射文檔能夠利用工具來生成,如 xdoclet, middlegen和 andromda等。下面從一個映射的例子開始講解映射元素,映射文件的代碼如下。?xml version=1.0?!- 所有的 xml 映射文件都需要定義如下所示的doctype 。hibernate會先在它的類路徑(classptah)中搜索dtd 文件。- !doctype hi
2、bernate-mapping public -/hibernate/hibernate mapping dtd 3.0/en http :/ hibernate-mapping有幾個可選的屬性:schema屬性指明了這個映射的表所在的schema名稱。default-cascade屬性指定了默認的級聯(lián)風格可取值有none 、save 、update。auto-import屬性默認讓我們在查詢語言中可以使用非全限定名的類名可取值有true 、false 。package屬性指定一個包前綴。- hibernate-mapping schema=schemaname default-cascade
3、=none auto-import=true package=test!- 用 class 元素來定義一個持久化類- class name=people table=person!- id元素定義了屬性到表主鍵字段的映射。- id name=id!- 用來為該持久化類的實例生成唯一的標識- generator class=native/id !- discriminator識別器是一種定義繼承關(guān)系的映射方法- discriminator column=subclass type=character/!- property元素為類聲明了一個持久化的,javabean風格的屬性 - propert
4、y name=name type=stringcolumn name=name length=64 not-null=true /propertyproperty name=sex not-null=true update=false/!- 多對一映射關(guān)系 - many-to-one name=friend column=friend_id update=false/!- 設(shè)置關(guān)聯(lián)關(guān)系 - set name=friends inverse=true order-by=idkey column=friend_id/!一對多映射 - one-to-many class=cat/set /class
5、 /hibernate-mapping組件應(yīng)用的方式組件有兩種類型,即組件(component)和動態(tài)組件( dynamic-component) 。在配置文件中,component元素為子對象的元素與父類對應(yīng)表的字段成立起映射關(guān)系。然后組件能夠聲明它們自己的屬性、組件或集合。component元素的概念如下所示:component name=propertyname class=classname insert=true|false upate=true|false access=field|property|classnameproperty ./many-to-one . /. /com
6、ponent在這段代碼中, name是指屬性名, class 是類的名字, insert指的是被映射的字段是不是出此刻sql的 insert 語句中, upate指出被映射的字段是不是出此刻sql 的 update 語句中, access指出訪問屬性的策略。hiebernate的大體配置hibernate的連接信息是從配置文件中加載的。hibernate的配置文件有兩種形式:一種是xml 格式的文件,一種是properties屬性文件。 properties形式的配置文件默許文件名是perties,一個 properties形式的配置文件內(nèi)容如下所示:# 指定利用的驅(qū)
7、動類hibernate.connection.driver_class = com.mysql.jdbc.driver r # 指定連接串hibernate.connection.url = jdbc:mysql:/localhost:3306/db # 指定連接的用戶名hibernate.connection.username = user # 指定連接的密碼hibernate.connection.password = password # 指定使用的方言hibernate.dialect = net.sf.hibernate.dialect.mysqldialect # 指定是否打印sq
8、l 語句hibernate.show_sql=true 在配置文件中包括了一系列屬性的配置,hibernate將依照這些屬性來連接。在 xml 格式的配置文件中,除了基本的hibernate配置信息,還可以指定具體的持久化類的映射文件,這可以避免將持久化類的配置文件硬編碼在程序中。xml 格式的配置文件的默認文件名為hibernate.cfg.xml,一個 xml 配置文件的示例如下所示:?xml version=1.0 encoding=utf-8?!doctype hibernate-configuration public -/hibernate/hibernate configurat
9、ion dtd 3.0/en http:/ 顯示執(zhí)行的sql 語句 - property name=show_sqltrue /property!- 連接字符串 - property name=connection.urljdbc:mysql:/localhost:3306/stu/property!- 連接的用戶名 - property name=connection.usernameroot /property!- 用戶密碼 - property name=connection.passwordroot /property!- 驅(qū)動 - property name=connection.d
10、river_classcom.mysql.jdbc.driver/property!- 選擇使用的方言 - property name=dialectorg.hibernate.dialect.mysqldialect/property!- 映射文件- mapping resource=com/stuman/domain/admin.hbm.xml /!- 映射文件 - mapping resource=com/stuman/domain/student.hbm.xml /session-factory/hibernate-configurationproperties形式的配置文件和xml
11、格式的配置文件能夠同時利用。當同時利用兩種類型的配置文件時, xml 配置文件中的設(shè)置會覆蓋properties配置文件的相同的屬性。對象標識符號在關(guān)系表中,主鍵(primary key)用來識別記錄,并保證每條記錄的唯一性。在java 語言中,通過比較兩個變量所引用對象的內(nèi)存地址是不是相同,或比較兩個變量引用的對象值是不是相同來判定兩對象是不是相等。 hibernate為了解決二者之間的不同,利用對象標識符 (oid )來標識對象的唯一性。oid是關(guān)系中主鍵在java 對象模型中的等價物。在運行時,hibernate依照 oid 來維持 java 對象和表中記錄的對應(yīng)關(guān)系。 如下代碼所示,
12、三次挪用了session的 load()方式,別離加載 oid 為1 或3的 user 對象。transaction tx = session.begintransaction(); user user1 = (user)session.load(user.class,new long(1); user user2 = (user)session.load(user.class,new long(1); user user3 = (user)session.load(user.class,new long(3); system.out.println( user1 = user2 ); sys
13、tem.out.println( user1 = user3 ); 應(yīng)用程序在執(zhí)行上述代碼時,第一次加載oid 為1 的 user 對象,從中查找id 為1 的記錄,然后創(chuàng)建相應(yīng)的 user實例,并把它保留在session緩存中,最后將該實例的引用賦值給變量user1 。第二次加載oid 為1 的對象時,直接把session緩存中 oid 為1的實例的引用賦值給變量user2 。因此,表達式user1=user2的結(jié)果為 true 。標識的生成可以使用不同的策略,表1為 hibernate內(nèi)置的標識生成策略。表1 hibernate標識生成策略標識符生成器描述increment 適用于代理主鍵
14、。由hibernate自動以遞增方式生成。identity 適用于代理主鍵。由底層生成標識符。sequence 適用于代理主鍵。hibernate根據(jù)底層的序列生成標識符,這要求底層支持序列。hilo 適用于代理主鍵。hibernate分局high/low算法生成標識符。seqhilo 適用于代理主鍵。使用一個高/低位算法來高效的生成long,short或者int類型的標識符。native 適用于代理主鍵。根據(jù)底層對自動生成標識符的方式,自動選擇identity、sequence或hilo。適用于代理主鍵。hibernate采用128位的uuid算法生成標識符。適用于代理主鍵。uuid被編碼成
15、一個16字符長的字符串。assigned 適用于自然主鍵。由java應(yīng)用程序負責生成標識符。foreign 適用于代理主鍵。使用另外一個相關(guān)聯(lián)的對象的標識符。hibernate映射類型在對象 / 關(guān)系映射文件中,hibernate采納映射類型作為java 類型和 sql 類型的橋梁。 hibernate映射類型分為 2 種:內(nèi)置映射類型和自概念映射類型。1 、內(nèi)置映射類型hibernate對所有的java 原生類型、常用的 java 類型如 string 、 date 等都定義了內(nèi)置的映射類型。表2列出了 hibernate映射類型、對應(yīng)的java 類型以及對應(yīng)的標準sql 類型。表2 hib
16、ernate內(nèi)置映射類型hibernate映射類型java類型標準sql類型大小integer/int integer 4字節(jié)long bigint 8字節(jié)short smallint 2字節(jié)byte tinyint 1字節(jié)float float 4字節(jié)double double 8字節(jié)big_decimal numeric character char(1) 定長字符string varchar 變長字符boolean/ yes_no/true_false bit 布爾類型date date 日期timestamp timestamp 日期calendar timestamp 日期calen
17、dar_date date 日期binary byte blob blob text text clob serializable blob blob clob clob clob blob blob blob class varchar 定長字符locale varchar 定長字符timezone varchar 定長字符currency varchar 定長字符二、自概念映射類型hibernate提供了自定義映射類型接口,允許用戶以編程的方式創(chuàng)建自定義的映射類型。用戶自定義的映射類型需要實現(xiàn)net.sf.hibernate.usertype或 net.sf.hibernate.compo
18、siteusertype接口。具體的創(chuàng)建自定義映射類型的方法請參考hibernate官方文檔或相關(guān)資料,這里不再詳細介紹。hibernate 實體關(guān)聯(lián)關(guān)系映射-總結(jié)hibernate 實體關(guān)聯(lián)關(guān)系映射-總結(jié)花了三天的業(yè)余時刻,終于寫完了hibernate關(guān)聯(lián)關(guān)系映射的所有實例,感覺還應(yīng)該總結(jié)一下。hibernate映射關(guān)系錯綜復(fù)雜,在實際中真的都能用到嗎?不用行嗎?在我眼里, hibernate提供這些映射關(guān)系,經(jīng)常使用確實是一對一和多對一,而且在能不用連接表的時候盡可能不要用連接表。多對多會用到,若是用到了, 應(yīng)該第一考慮底層數(shù)據(jù)庫設(shè)計是不是合理。在實際開發(fā)中,在 hibernate關(guān)聯(lián)關(guān)系
19、之外常常還有另外一種選擇方案,表各自作為單表映射,業(yè)務(wù)邏輯操縱外鍵關(guān)系(有時候確實是一個相關(guān)聯(lián)的列,但不必然要加外鍵約束),如此加倍靈活,而且數(shù)據(jù)的完整性一樣有保證。固然,“ 單表映射,業(yè)務(wù)操縱外鍵關(guān)系” 并非是說 hibernate的實體關(guān)聯(lián)功能是多余的,hibernate的實體關(guān)聯(lián)的優(yōu)勢很多,隨意拿本書都是講優(yōu)勢,用好了會讓開發(fā)人員感覺更方便,此刻我也是兩種方案結(jié)合利用。比如關(guān)于不很確信的兩個實體,常常選用單表關(guān)聯(lián)。以前在初學hibernate尚未完全弄清楚這些關(guān)聯(lián)關(guān)系的時候,確實是用單表映射,業(yè)務(wù)操縱外鍵關(guān)系做的,發(fā)覺沒有任何問題,程序一樣運行得專門好??戳诉@些是不是后悔浪費時刻學習映射
20、關(guān)系了?呵呵,hibernate的 or mapping是hibernate的靈魂,我相信hibernate的開創(chuàng)人比咱們一樣人的明白得更深刻。只有學會了這些才能體會hibernate設(shè)計者的思想。學一個東西,不但自己寫代碼,還應(yīng)該能看懂他人的代碼才行。因此系統(tǒng)學習這些關(guān)聯(lián)映射仍是大有必要的。以上都是我自己的觀點。歡迎在此交流討論。hibernate在實際項目開發(fā)中,hbm.xml包括數(shù)據(jù)庫腳本都是通過xdoclet生成的, 在此不采納 xdoclet的目的是為了便于明白得這些映射模型。實體-數(shù)據(jù)表 -映射文件三者對照看,太直觀了。瞌睡了,臨時先寫到此,有新思路了再補上。 。 。hiberna
21、te關(guān)聯(lián)關(guān)系映射目錄 單向關(guān)聯(lián) 雙向關(guān)聯(lián)hibernate 一對一外鍵單向關(guān)聯(lián)事實上,單向 1-1 與 n-1的實質(zhì)是相同的,1-1 是 n-1的特例,單向 1-1 與 n-1的映射配置也超級相似。只需要將原先的many-to-one元素增加unique=true屬性,用于表示n 的一端也必需是唯一的, 在 n的一端增加了唯一的約束,即成為單向 1-1 ?;谕怄I的單向1-1 的配置將與無連接表 n-1關(guān)聯(lián)的 many-to-one增加 unique=true屬性即可。一、模型介紹一個人( person )對應(yīng)一個地址(address )。二、實體(省略getter、setter方式)publ
22、ic class person11fk private int personid; private string name; private int age; private address11fk address11fk;public class address11fk private int addressid; private string addressdetail;三、表模型mysql desc address_11fk;+-+-+-+-+-+-+| field | type | null | key | default | extra |+-+-+-+-+-+-+| address
23、id | int(11) | no | pri | null | auto_increment | addressdetail | varchar(255) | yes | | null | |+-+-+-+-+-+-+mysql desc person_11fk;+-+-+-+-+-+-+| field | type | null | key | default | extra |+-+-+-+-+-+-+| personid | int(11) | no | pri | null | auto_increment | name | varchar(255) | yes | | null |
24、 | age | int(11) | yes | | null | | addressid | int(11) | yes | uni | null | |+-+-+-+-+-+-+四、生成的sql腳本createtableaddress_11fk ( addressid int (11) notnullauto_increment, addressdetail varchar(255) defaultnull , primarykey(addressid) ) engine=innodb auto_increment=2 defaultcharset=gbk; createtablepers
25、on_11fk ( personid int (11) notnullauto_increment, name varchar(255) defaultnull , age int (11) defaultnull , addressid int (11) defaultnull , primarykey(personid), keyfk68a8818f3f45aa77 (addressid), constraintfk68a8818f3f45aa77 foreignkey (addressid) referencesaddress_11fk (addressid) ) engine=inno
26、db auto_increment=2 defaultcharset=gbk; 五、映射方式:在 person 中添加 address 屬性,映射配置為: 六、測試方式publicclasstest_11fk publicstaticvoidmain(string args) person11fk p1= newperson11fk(); p1.setage(21); p1.setname(p1 ); address11fk add1=newaddress11fk(); add1.setaddressdetail(鄭州市經(jīng)三路); p1.setaddress11fk(add1); sessio
27、n session= hibernateutil.getcurrentsession(); transaction tx=session.begintransaction(); session.save(add1); session.save(p1); mit(); hibernateutil.closesession(); 七、測試結(jié)果1) :正常保留 . 推薦這么干 ! session.save(add1); session.save(p1);hibernate: insert into address_11fk (addressdetail) values (?)hibernate: i
28、nsert into person_11fk (name, age, addressid) values (?, ?, ?)2) :正常保留 . session.save(p1); session.save(add1);hibernate: insert into person_11fk (name, age, addressid) values (?, ?, ?)hibernate: insert into address_11fk (addressdetail) values (?)hibernate: update person_11fk set name=?, age=?, addre
29、ssid=? where personid=?3) :正常保留 ./ session.save(p1); session.save(add1);hibernate: insert into address_11fk (addressdetail) values (?)4) :發(fā)生異樣 , 不能保留 . session.save(p1);/ session.save(add1);hibernate: insert into person_11fk (name, age, addressid) values (?, ?, ?)hibernate一對一主鍵單向關(guān)聯(lián)1-1 的關(guān)聯(lián)可以基于主鍵關(guān)聯(lián),但基
30、于主鍵關(guān)聯(lián)的持久化類不能擁有自己的主鍵生成策略,它的主鍵由關(guān)聯(lián)類負責生成。另外,另外,增加one-to-one元素來關(guān)聯(lián)屬性,必須為one-to-one元素增加 constrained=true屬性,表明該類主鍵由關(guān)聯(lián)類生成。一、模型介紹一個人( person )對應(yīng)一個地址(address )。二、實體(省略getter、setter方法)public class person11pk private int personid; private string name; private int age; private address11pk address11pk;public class
31、 address11pk private int addressid; private string addressdetail;三、表模型mysql desc address_11pk;+-+-+-+-+-+-+| field | type | null | key | default | extra |+-+-+-+-+-+-+| addressid | int(11) | no | pri | null | auto_increment | addressdetail | varchar(255) | yes | | null | |+-+-+-+-+-+-+mysql desc per
32、son_11pk;+-+-+-+-+-+-+| field | type | null | key | default | extra |+-+-+-+-+-+-+| personid | int(11) | no | pri | | | name | varchar(255) | yes | | null | | age | int(11) | yes | | null | |+-+-+-+-+-+-+四、生成的sql腳本/* formatted on 2007/08/22 14:40 (qp5 v5.50) */create table address_11pk ( addressid i
33、nt(11) not null auto_increment, addressdetail varchar(255) default null, primary key (addressid) engine=innodb auto_increment=2 default charset=gbk;/* formatted on 2007/08/22 14:41 (qp5 v5.50) */create table person_11pk ( presonid int(11) not null, name varchar(255) default null, age int(11) default
34、 null, primary key (presonid), key fk68a882c591bb393e (presonid), constraint fk68a882c591bb393e foreign key (presonid) references address_11pk (addressid) engine=innodb default charset=gbk;五、映射方法:在person 中配置 id 生成策略為: address11pk . address11pk 六、測試方法public class test_11pk public static void main(str
35、ing args) person11pk p1=new person11pk(); p1.setage(21); p1.setname(p1); address11pk add1=new address11pk(); add1.setaddressdetail(鄭州市經(jīng)三路); p1.setaddress11pk(add1); session session= hibernateutil.getcurrentsession(); transaction tx=session.begintransaction(); session.save(add1); session.save(p1); mi
36、t(); hibernateutil.closesession(); 七、測試結(jié)果1) :正常保存 . 推薦這么干 ! session.save(add1); session.save(p1);hibernate: insert into address_11fk (addressdetail) values (?)hibernate: insert into person_11fk (name, age, addressid) values (?, ?, ?)2) :正常保存 . session.save(p1); session.save(add1);hibernate: insert i
37、nto person_11fk (name, age, addressid) values (?, ?, ?)hibernate: insert into address_11fk (addressdetail) values (?)hibernate: update person_11fk set name=?, age=?, addressid=? where personid=?3) :正常保存 ./ session.save(p1); session.save(add1);hibernate: insert into address_11fk (addressdetail) value
38、s (?)4) :發(fā)生異常 , 不能保存 . session.save(p1);/ session.save(add1);hibernate: insert into person_11fk (name, age, addressid) values (?, ?, ?)hibernate一對一連接表單向關(guān)聯(lián)這種情況很少見, 但 hibernate同樣允許采用連接表關(guān)聯(lián)1-1. 有連接表的 1-1 同樣只需要將n-1的 many-to-one元素增加unique=true屬性即可。一、模型介紹一個人( person )對應(yīng)一個地址(address )。二、實體(省略getter、setter方法
39、)public class person11tab private int personid; private string name; private int age; private address11tab address11tab;public class address11tab private int addressid; private string addressdetail;三、表模型mysql desc address_11tab;+-+-+-+-+-+-+| field | type | null | key | default | extra |+-+-+-+-+-+-
40、+| addressid | int(11) | no | pri | null | auto_increment | addressdetail | varchar(255) | yes | | null | |+-+-+-+-+-+-+mysql desc join_11tab;+-+-+-+-+-+-+| field | type | null | key | default | extra |+-+-+-+-+-+-+| personid | int(11) | no | pri | | | address11tab | int(11) | yes | uni | null | |+-
41、+-+-+-+-+-+mysql desc person_11tab;+-+-+-+-+-+-+| field | type | null | key | default | extra |+-+-+-+-+-+-+| personid | int(11) | no | pri | null | auto_increment | name | varchar(255) | yes | | null | | age | int(11) | yes | | null | |+-+-+-+-+-+-+四、生成的sql腳本/* formatted on 2007/08/20 16:52 (qp5 v5
42、.50) */create table join_11tab ( personid int(11) not null, address11tab int(11) default null, primary key (personid), unique key address11tab (address11tab), key fk6b44be20c4cc3d33 (address11tab), key fk6b44be209049bb1f (personid), constraint fk6b44be209049bb1f foreign key (personid) references per
43、son_11tab (personid), constraint fk6b44be20c4cc3d33 foreign key (address11tab) references address_11tab (addressid) engine=innodb default charset=gbk;/* formatted on 2007/08/20 16:53 (qp5 v5.50) */create table address_11tab ( addressid int(11) not null auto_increment, addressdetail varchar(255) defa
44、ult null, primary key (addressid) engine=innodb auto_increment=2 default charset=gbk;/* formatted on 2007/08/20 16:53 (qp5 v5.50) */create table person_11tab ( personid int(11) not null auto_increment, name varchar(255) default null, age int(11) default null, primary key (personid) engine=innodb aut
45、o_increment=2 default charset=gbk;五、映射方法:在 person 中添加 address 屬性,映射配置為: 六、測試方法public class test_11tab public static void main(string args) person11tab p1=new person11tab(); p1.setage(21); p1.setname(p1); address11tab add1=new address11tab(); add1.setaddressdetail(鄭州市經(jīng)三路); p1.setaddress11tab(add1); s
46、ession session= hibernateutil.getcurrentsession(); transaction tx=session.begintransaction(); session.save(add1); session.save(p1); mit(); hibernateutil.closesession(); 七、測試結(jié)果1) :正常保存 . 推薦這么干 ! session.save(add1); session.save(p1);hibernate: insert into address_11tab (addressdetail) values (?)hibern
47、ate: insert into person_11tab (name, age) values (?, ?)hibernate: insert into join_11tab (address11tab, personid) values (?, ?)2) :正常保存 . session.save(p1); session.save(add1);hibernate: insert into person_11tab (name, age) values (?, ?)hibernate: insert into join_11tab (address11tab, personid) value
48、s (?, ?)hibernate: insert into address_11tab (addressdetail) values (?)hibernate: update join_11tab set address11tab=? where personid=?3) :正常保存 ./ session.save(p1); session.save(add1);hibernate: insert into address_11tab (addressdetail) values (?)4) :發(fā)生異常 , 不能保存 . session.save(p1);/ session.save(add
49、1);hibernate: insert into person_11tab (name, age) values (?, ?)hibernate: insert into join_11tab (address11tab, personid) values (?, ?)hibernate一對多外鍵單向關(guān)聯(lián)這種情況很少見, 但 hibernate同樣允許采用連接表關(guān)聯(lián)1-1. 有連接表的 1-1 同樣只需要將n-1的 many-to-one元素增加unique=true屬性即可。一、模型介紹一個人( person )對應(yīng)多個地址(address ),比如家庭地址、公司地址。二、實體(省略get
50、ter、setter方法)public class person1nfk implements serializable private int personid; private string name; private int age; private set addresses=new hashset();public class address1nfk implements serializable private int addressid; private string addressdetail;三、表模型mysql desc address_1nfk;+-+-+-+-+-+-+
51、| field | type | null | key | default | extra |+-+-+-+-+-+-+| addressid | int(11) | no | pri | null | auto_increment | addressdetail | varchar(255) | yes | | null | | personid | int(11) | yes | mul | null | |+-+-+-+-+-+-+mysql desc person_1nfk;+-+-+-+-+-+-+| field | type | null | key | default | ext
52、ra |+-+-+-+-+-+-+| personid | int(11) | no | pri | null | auto_increment | name | varchar(255) | yes | | null | | age | int(11) | yes | | null | |+-+-+-+-+-+-+四、生成的sql腳本 /* formatted on 2007/08/21 10:06 (qp5 v5.50) */ create table address_1nfk ( addressid int(11) not null auto_increment, addressdeta
53、il varchar(255) default null, addresses int(11) default null, primary key (addressid), key fk9b93456dc08d1667 (addresses), constraint fk9b93456dc08d1667 foreign key (addresses) references person_1nfk (personid) ) engine=innodb auto_increment=3 default charset=gbk; /* formatted on 2007/08/21 10:07 (q
54、p5 v5.50) */ create table person_1nfk ( personid int(11) not null auto_increment, name varchar(255) default null, age int(11) default null, primary key (personid) ) engine=innodb auto_increment=2 default charset=gbk;五、映射方法:在實體類person 里面添加address 的集合,即可形成一對多關(guān)系。 六、測試方法public class test_1nfk public sta
55、tic void main(string args) address1nfk add1=new address1nfk(); address1nfk add2=new address1nfk(); person1nfk p=new person1nfk(); add1.setaddressdetail(鄭州市經(jīng)三路); add2.setaddressdetail(合肥市宿州路); p.setname(wang); p.setage(30); p.getaddresses().add(add1); p.getaddresses().add(add2); session session= hibe
56、rnateutil.getcurrentsession(); transaction tx=session.begintransaction(); session.save(add1); session.save(add2); session.save(p); mit(); hibernateutil.closesession(); 七、測試結(jié)果1) :正常保存 ./ session.save(add1);/ session.save(add2); session.save(p);hibernate: insert into person_1nfk (name, age) values (?,
57、 ?)hibernate: insert into address_1nfk (addressdetail) values (?)hibernate: insert into address_1nfk (addressdetail) values (?)hibernate: update address_1nfk set personid=? where addressid=?hibernate: update address_1nfk set personid=? where addressid=?2) :正常保存 . session.save(add1); session.save(add
58、2); session.save(p);hibernate: insert into address_1nfk (addressdetail) values (?)hibernate: insert into address_1nfk (addressdetail) values (?)hibernate: insert into person_1nfk (name, age) values (?, ?)hibernate: update address_1nfk set personid=? where addressid=?hibernate: update address_1nfk se
59、t personid=? where addressid=?3) :正常保存 . session.save(add1); session.save(add2);/ session.save(p);hibernate: insert into address_1nfk (addressdetail) values (?)hibernate: insert into address_1nfk (addressdetail) values (?)hibernate一對多連接表單向關(guān)聯(lián)一、模型介紹一個人( person )對應(yīng)多個地址(address ),比如家庭地址、公司地址。二、實體(省略gett
60、er、setter方法)public class person1ntab private int personid; private string name; private int age; private set addresses=new hashset();public class address1nfk implements serializable private int addressid; private string addressdetail;三、表模型mysql desc join_1ntab;+-+-+-+-+-+-+| field | type | null | ke
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國中端酒店行業(yè)并購重組擴張戰(zhàn)略制定與實施研究報告
- 2025-2030年中國家庭服務(wù)機器人行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實施研究報告
- 2025-2030年中國虛擬養(yǎng)老院行業(yè)營銷創(chuàng)新戰(zhàn)略制定與實施研究報告
- 2025-2030年中國新型健康服務(wù)行業(yè)營銷創(chuàng)新戰(zhàn)略制定與實施研究報告
- 2025-2030年中國礦山開發(fā)服務(wù)行業(yè)開拓第二增長曲線戰(zhàn)略制定與實施研究報告
- 建設(shè)社會主義文化強國論文
- 中國心理測試儀器行業(yè)市場深度分析及發(fā)展趨勢預(yù)測報告
- 一年級數(shù)學計算題專項練習匯編
- 大客車常用知識培訓(xùn)課件
- 年產(chǎn)40000噸環(huán)保新能源材料生產(chǎn)線項目可行性研究報告寫作模板-拿地申報
- 常見婦科三大惡性腫瘤的流行及疾病負擔研究現(xiàn)狀
- CTD申報資料撰寫模板:模塊三之3.2.S.4原料藥的質(zhì)量控制
- (正式版)JTT 1482-2023 道路運輸安全監(jiān)督檢查規(guī)范
- 圍手術(shù)期血糖的管理
- 2024年度醫(yī)療器械監(jiān)督管理條例培訓(xùn)課件
- 項目七電子商務(wù)消費者權(quán)益保護的法律法規(guī)
- 100以內(nèi)不進位不退位加減法練習題
- 企業(yè)安全生產(chǎn)評估報告
- 水庫大壩深基坑開挖專項方案樣本
- 經(jīng)橈動脈腦血管造影術(shù)前術(shù)后護理
- 運行設(shè)備巡回檢查制度模版
評論
0/150
提交評論