實際上,set這種集合對映我們在前面已經學習關聯關係對映時已經用過了,實體類(實體類都在在資料庫中有對應的表)中有一對多或者多對多的關係,並且我們可以通過某一側訪問到另一側,就是通過在類中設定 set集合並配置set對映來實現的。
在hibernate配置中有兩種資料型別,一種是值型別,另一種是實體型別,實體型別都有對映檔案,而值型別則沒有,我們前面使用的就是實體型別,如下就是實體型別:
public
class
order
implements
serializable
而對於的對映檔案則為(訂單和訂單項的關係為一對多關係)
name="orderlines"
cascade="all"
inverse="true">
column="order_id"/>
class="orderline"/>
set>
我們這裡要討論的則是另一種值型別,值型別配置稍微有些不一樣。
使用者表items_set,使用者表中儲存使用者的id與姓名
create
table items_set(
id number(10) primary
key,
name varchar2(20)
);
表images_set,用以儲存路徑,該表中使用items_id作為外來鍵對應使用者表中的主鍵,並使用items_id和filename作為聯合主鍵。
create
table images_set(
filename varchar2(20),
items_id number(10) references items_set(id),
primary
key(items_id, filename)
);
itemsset類,該類中有儲存image的乙個set集合,而儲存的型別為string,此為值型別,但是image在資料庫中有表的。
public
class
itemsset
配置 itemssetx.hbm.xml 對映檔案,並將對映檔案加入到核心配置檔案hibernate.cfg.xml中
設定父表:name=」itemsset」 table=」items_set」
設定子表:name=」images」 table=」images_set」,這其中表示了在itemsset類中,有images屬性getter和setter方法。
set:配置集合對映關係,指定屬性以及表名。如果不加級聯(cascade),則缺省級聯為查詢級聯,增刪改不級聯,為級聯新增」all」值,則級聯所有操作。
key標籤:指示子表的外來鍵
element標籤:配置值型別的集合對映,column指定子表中的字段
<?xml version="1.0" encoding="utf-8"?>
package="com.li.set.pojo">
name="itemsset"
table="items_set">
name="id"
type="integer"
column="id">
class="assigned">
generator>
id>
name="name"
column="name"
type="string"/>
name="images"
table="images_set"
cascade="all"
inverse="false">
column="items_id"/>
column="filename"
type="string"
not-null="true"/>
set>
class>
5 03 集合框架 set集合
一 set集合概述 乙個不包含重複元素的 collection。更確切地講,set 不包含滿足e1.equals e2 的元素對e1和e2,並且最多包含乙個 null 元素。正如其名稱所暗示的,此介面模仿了數學上的 set 抽象。在所有構造方法以及 add equals 和 hashcode 方法的...
集合4 集合 Collection介面 Set介面
儲存無序的 不可重複的資料 三種實現類 注 1.set介面中沒有額外定義新的方法,使用的都是collection中宣告過的方法 2.向set中新增的資料,其所在類一定要重寫hashcode 和equals 且重寫的hashcode 和equals 盡可能保持一致 相等的物件具有相等的雜湊碼 以has...
Python基礎學習08 集合
是乙個無序的不重複的元素序列。建立空集合 set1 set print set1的資料型別為 type set1 建立存在資料的集合 set2 print set2的資料型別為 type set2 print set2 set2 建立多資料的集合 set3 集合中存在3個 1 print set3的...