zoukankan      html  css  js  c++  java
  • 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 
      UserName.cs
    映射文件:CompositeUser.hbm.xml
    <?xml version="1.0" encoding="utf-8" ?>
    <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
    UserName.cs
    映射文件CompositeUser.hbm.xml
    <?xml version="1.0" encoding="utf-8" ?>
    <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
    效果图
     
  • 相关阅读:
    「BZOJ1061」 [Noi2008]志愿者招募
    [POJ 2891] Strange Way to Express Integers (扩展中国剩余定理)
    扩展中国剩余定理学习笔记
    扩展欧几里得算法+推论
    SPOJ16607 IE1
    [Luogu P4124] [CQOI2016]手机号码 (数位DP)
    [UOJ 275/BZOJ4737] 【清华集训2016】组合数问题 (LUCAS定理的运用+数位DP)
    一些很妙的网站
    [Luogu P3157][CQOI2011]动态逆序对 (树套树)
    [Luogu P3203] [HNOI2010]弹飞绵羊 (LCT维护链的长度)
  • 原文地址:https://www.cnblogs.com/encounter/p/2188831.html
Copyright © 2011-2022 走看看