nhibernate学习之集合组合依赖
还是学习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学习之性能改善1 ,nhibernate性能之二级缓存篇 ,nhibernate学习之简单组合的映射
3.通过parent为依赖组合对象映射一个指向容器对象的引用
CompositeUser.cs
public class CompositeUser
{
int _uid;
UserName _name;
public int Uid
{
get
{
return _uid;
}
set
{
_uid = value;
}
}
public UserName Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
}
UserName.cs
public class UserName
{
private string _firstName;
private string _lastName;
CompositeUser _user;
public string FirstName
{
get
{
return _firstName;
}
set
{
_firstName=value;
}
}
public string LastName
{
get
{
return _lastName;
}
set
{
_lastName = value;
}
}
public CompositeUser User
{
get
{
return _user;
}
set
{
_user = value;
}
}
}
映射文件:CompositeUser.hbm.xml
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="NhibernateSample1.CompositeUser,NhibernateSample1" table="CompositeUser" lazy="false">
<id name="Uid" column="Uid" unsaved-value="0">
<generator class="native" />
</id>
<component name="Name" class="NhibernateSample1.UserName,NhibernateSample1">
<parent name="User"></parent>
<property name="FirstName" column="FirstName"></property>
<property name="LastName" column="LastName"></property>
</component>
</class>
</hibernate-mapping>
注意parent是指向容器对象的引用
加载一个CompositeUser对象,结果如图
4. 集合组合依赖
Composite.cs
public class CompositeUser
{
int _uid;
UserName _name;
ISet _userNames = new HashedSet();
DateTime _birthDay = DateTime.Now;
public int Uid
{
get
{
return _uid;
}
set
{
_uid = value;
}
}
public ISet UserNames
{
get
{
return _userNames;
}
set
{
_userNames = value;
}
}
public DateTime BirthDay
{
get
{
return _birthDay;
}
set
{
_birthDay = value;
}
}
}
UserName.cs
public class UserName
{
private string _firstName;
private string _lastName;
CompositeUser _user;
public string FirstName
{
get
{
return _firstName;
}
set
{
_firstName=value;
}
}
public string LastName
{
get
{
return _lastName;
}
set
{
_lastName = value;
}
}
public CompositeUser User
{
get
{
return _user;
}
set
{
_user = value;
}
}
}
映射文件CompositeUser.hbm.xml
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="NhibernateSample1.CompositeUser,NhibernateSample1" table="CompositeUser" lazy="false">
<id name="Uid" column="Uid" unsaved-value="0">
<generator class="native" />
</id>
<set name="UserNames" table="UserNames" lazy="true">
<key column="Uid"/>
<composite-element class="NhibernateSample1.UserName,NhibernateSample1">
<property name="FirstName" column="FirstName"></property>
<property name="LastName" column="LastName"></property>
</composite-element >
</set>
<property name="BirthDay" type="DateTime"></property>
</class>
</hibernate-mapping>
注意:Composite可以包含集合也可以不包含集合,上面这样的配置就不包括集合,映射的属性可以选择为List,map,bag,idbag
运行添加一个Composite的测试代码,会在数据库中建立两个数据表 CompositeUser和UserNames
效果图
转载于:https://www.cnblogs.com/wangzhanjianshe/archive/2008/02/21/2326478.html
nhibernate学习之集合组合依赖相关推荐
- NHibernate学习笔记(二):one-to-one关系映射
上一篇:NHibernate学习笔记(一):初识NHibernate 本文的内容:1.介绍NH如何处理对象间one-to-ont的映射关系: 经验教训: 1.操作一对一关联关系中的一个对象时,得在程序 ...
- 《强化学习周刊》第12期:强化学习应用之组合优化
No.12 智源社区 强化学习组 强 化 学 习 研究 观点 资源 活动 关于周刊 强化学习作为人工智能领域研究热点之一,它在组合优化领域中的应用研究进展与成果也引发了众多关注.为帮助研究与工程人员 ...
- python学习笔记——集合与字典
python学习笔记--集合与字典 1. 集合的基本概念 1.1 set(x)函数 1.2 集合类型的10个操作函数 2. 字典的基本概念 2.1 字典的索引 2.2 字典的操作 2.3 字典小结 1 ...
- SQL学习之“集合运算”
本篇文章记录学习SQL集合运算的过程与心得. 对于集合这个概念,印象最深的就是数学课里学的,简单的说就是把研究对象当做元素,则一些元素组成的整体就叫集合. 而在数据库领域,则表示记录的集合,具体来说, ...
- 【组合数学】排列组合 ( 排列组合内容概要 | 选取问题 | 集合排列 | 集合组合 )
文章目录 一.排列组合内容概要 二.选取问题 三.集合排列 四.环排列 五.集合组合 参考博客 : [组合数学]基本计数原则 ( 加法原则 | 乘法原则 ) [组合数学]集合的排列组合问题示例 ( 排 ...
- 强化学习应用于组合优化问题_如何将强化学习应用于现实生活中的计划问题
强化学习应用于组合优化问题 by Sterling Osborne, PhD Researcher 作者:斯特林·奥斯本(Sterling Osborne),博士研究员 如何将强化学习应用于现实生活中 ...
- gradle 上传jar包_Gradle学习记录014 关于依赖的声明
详细学习Gradle构建的依赖声明.该学习记录基于Gradle官方网站资料.本篇参考链接如下: https://docs.gradle.org/current/userguide/declaring_ ...
- Spring集合类型依赖查找
集合类型依赖查找接口 - ListableBeanFactory 根据 Bean 类型查找 获取同类型 Bean 名称列表 getBeanNamesForType(Class) getBeanName ...
- Java学习---day14_集合框架03
Java学习-day14_集合框架03 Set集合 Set集合中,没有下标的概念 Set集合,是一个去重复的集合.在Set集合中不会添加重复的元素的 在向一个Set集合中添加元素的时候,会先判断这个元 ...
最新文章
- 在3D世界中创建不同的相机模式——检查对象是否可见
- “远程银行”优秀厂商认证!网易云信入选《区域性银行数字化厂商全景报告》...
- android studio下NDK开发
- 需要多快的速度,才能在抽走桌布之后保持桌面物体不掉?
- vue设置img大小的属性_Vue.js自定义标签属性并获取属性,及绑定img的src属性的坑...
- 13产品经理要懂的-人性的恶要怎么利用
- (转)MySQL命令行--导入导出数据库
- No portmap or rpcbind service is running on this host
- 必背单词_考研英语语法如何高效自学? 真题必背单词Day12
- pyqt5 登录跳转
- 微信统一支付接口返回“签名错误”的可能原因
- [Linux实用工具]Windows下同步Linux文件(Linux安装Samba和配置)
- 求字符串中ASCII码值最大和ASCII码值最小的字符
- MP3中设置播放顺序的软件《闪存式MP3伴侣》
- 在计算机系统中 cpu指什么地方,在计算机中cpu指的是什么
- Flutter学习(三)
- Java计算文章多少字_java计算中文字数的代码实例
- 安利7个冷门好用的在线工具,每一个都足够惊艳
- 【微信小程序】开发入门篇(一)
- Linux下打开chm文件