nhibernate学习之集合组合依赖

1.学习目标
还是学习compenent的用法,上节实现了简单字段的组合,这节中将讨论两个问题:1.依赖对象有一个指向容器对象的引用。2。集合依赖
2.开发环境和必要准备
开发环境为:windows 2003,Visual studio .Net 2005,Sql server 2005 developer edition
必要准备:学习前六篇nhibernate学习系列Nhibernate学习之起步篇-1 ,Nhibernate学习起步之many-to-one篇 ,Nhibernate学习之many-to-many篇 ,nhibernate学习之三级联(Ternary Associations)篇Nhibernate学习之性能改善1nhibernate性能之二级缓存篇 ,nhibernate学习之简单组合的映射
3.通过parent为依赖组合对象映射一个指向容器对象的引用
CompositeUser.cs
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->nhibernate学习之集合组合依赖publicclassCompositeUser
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
int_uid;
nhibernate学习之集合组合依赖UserName_name;
nhibernate学习之集合组合依赖
publicintUid
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
get
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
return_uid;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
set
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖_uid
=value;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖
publicUserNameName
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
get
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
return_name;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
set
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖_name
=value;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}
UserName.cs
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->nhibernate学习之集合组合依赖publicclassUserName
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
privatestring_firstName;
nhibernate学习之集合组合依赖
privatestring_lastName;
nhibernate学习之集合组合依赖CompositeUser_user;
nhibernate学习之集合组合依赖
publicstringFirstName
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
get
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
return_firstName;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
set
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖_firstName
=value;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
publicstringLastName
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
get
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
return_lastName;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
set
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖_lastName
=value;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
publicCompositeUserUser
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
get
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
return_user;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
set
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖_user
=value;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}
映射文件:CompositeUser.hbm.xml
nhibernate学习之集合组合依赖<?xmlversion="1.0"encoding="utf-8"?>
nhibernate学习之集合组合依赖
<hibernate-mappingxmlns="urn:nhibernate-mapping-2.2">
nhibernate学习之集合组合依赖
<classname="NhibernateSample1.CompositeUser,NhibernateSample1"table="CompositeUser"lazy="false">
nhibernate学习之集合组合依赖
<idname="Uid"column="Uid"unsaved-value="0">
nhibernate学习之集合组合依赖
<generatorclass="native"/>
nhibernate学习之集合组合依赖
</id>
nhibernate学习之集合组合依赖
<componentname="Name"class="NhibernateSample1.UserName,NhibernateSample1">
nhibernate学习之集合组合依赖
<parentname="User"></parent>
nhibernate学习之集合组合依赖
<propertyname="FirstName"column="FirstName"></property>
nhibernate学习之集合组合依赖
<propertyname="LastName"column="LastName"></property>
nhibernate学习之集合组合依赖
</component>
nhibernate学习之集合组合依赖
</class>
nhibernate学习之集合组合依赖
</hibernate-mapping>
注意parent是指向容器对象的引用
加载一个CompositeUser对象,结果如图
nhibernate学习之集合组合依赖
4. 集合组合依赖
Composite.cs
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->nhibernate学习之集合组合依赖publicclassCompositeUser
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
int_uid;
nhibernate学习之集合组合依赖UserName_name;
nhibernate学习之集合组合依赖ISet_userNames
=newHashedSet();
nhibernate学习之集合组合依赖DateTime_birthDay
=DateTime.Now;
nhibernate学习之集合组合依赖
publicintUid
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
get
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
return_uid;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
set
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖_uid
=value;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
publicISetUserNames
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
get
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
return_userNames;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
set
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖_userNames
=value;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
publicDateTimeBirthDay
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
get
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
return_birthDay;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
set
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖_birthDay
=value;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}
UserName.cs
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->nhibernate学习之集合组合依赖publicclassUserName
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
privatestring_firstName;
nhibernate学习之集合组合依赖
privatestring_lastName;
nhibernate学习之集合组合依赖CompositeUser_user;
nhibernate学习之集合组合依赖
publicstringFirstName
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
get
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
return_firstName;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
set
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖_firstName
=value;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
publicstringLastName
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
get
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
return_lastName;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
set
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖_lastName
=value;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
publicCompositeUserUser
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
get
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖
return_user;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖
set
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖
nhibernate学习之集合组合依赖{
nhibernate学习之集合组合依赖_user
=value;
nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}

nhibernate学习之集合组合依赖}
映射文件CompositeUser.hbm.xml
nhibernate学习之集合组合依赖<?xmlversion="1.0"encoding="utf-8"?>
nhibernate学习之集合组合依赖
<hibernate-mappingxmlns="urn:nhibernate-mapping-2.2">
nhibernate学习之集合组合依赖
<classname="NhibernateSample1.CompositeUser,NhibernateSample1"table="CompositeUser"lazy="false">
nhibernate学习之集合组合依赖
<idname="Uid"column="Uid"unsaved-value="0">
nhibernate学习之集合组合依赖
<generatorclass="native"/>
nhibernate学习之集合组合依赖
</id>
nhibernate学习之集合组合依赖
<setname="UserNames"table="UserNames"lazy="true">
nhibernate学习之集合组合依赖
<keycolumn="Uid"/>
nhibernate学习之集合组合依赖
<composite-elementclass="NhibernateSample1.UserName,NhibernateSample1">
nhibernate学习之集合组合依赖
<propertyname="FirstName"column="FirstName"></property>
nhibernate学习之集合组合依赖
<propertyname="LastName"column="LastName"></property>
nhibernate学习之集合组合依赖
</composite-element>
nhibernate学习之集合组合依赖
</set>
nhibernate学习之集合组合依赖
<propertyname="BirthDay"type="DateTime"></property>
nhibernate学习之集合组合依赖
</class>
nhibernate学习之集合组合依赖
</hibernate-mapping>
注意:Composite可以包含集合也可以不包含集合,上面这样的配置就不包括集合,映射的属性可以选择为List,map,bag,idbag
运行添加一个Composite的测试代码,会在数据库中建立两个数据表 CompositeUser和UserNames
效果图
nhibernate学习之集合组合依赖nhibernate学习之集合组合依赖