zoukankan      html  css  js  c++  java
  • 20160509-hibernate-集合映射

    集合映射
    集合映射(set, list, array,bag, map)
    <set name=”employees” >
            <key column=”depart_id”/>
            <one-to-many class=”Employee”/>
            <!-- <element type="string" column="name"/> -->
            <!--
                <composite-element class=”YourClass”>
                    <property name=”prop1”/>
                    <property name=”prop2”/>
                </composite>
            -->
    </set>
    <bag name="employees " order-by="id desc">
            <key column=”depart_id”/>            
            <one-to-many class=”Employee”/>
    </bag>
    <map name="employees ">
            <key column=”depart_id”/>
            <map-key type="string" column="name"/>
            <one-to-many class=”Employee”/>
    </map> 
    这些集合类都是Hibernate实现的类和JAVA中的集合类不完全一样,set,list,map分别和JAVA中的Set,List,Map接口对应,bag映射成JAVA的List;这些集合的使用和JAVA集合中对应的接口基本一致;JAVA的实体类中集合只能定义成接口不能定义成具体类, 因为集合会在运行时被替换成Hibernate的实现。
    集合的简单使用原则:大部分情况下用set,需要保证集合中的顺序用list,想用java.util.List又不需要保证顺序用bag。
     
    cascadeinverse (Employee – Department)
         Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade:
    none,all,save-update ,delete, lock,refresh,evict,replicate,persist,
    merge,delete-orphan(one-to-many) 。一般对many-to-one,many-to-many不设置级联,在<one-to-one>和<one-to-many>中设置级联。
     
        linverse表“是否放弃维护关联关系”(在Java里两个对象产生关联时,对数据库表的影响),在one-to-many和many-to-many的集合定义中使用,inverse=”true”表示该对象不维护关联关系;该属性的值一般在使用有序集合时设置成false(注意hibernate的缺省值是false)。
    one-to-many维护关联关系就是更新外键。many-to-many维护关联关系就是在中间表增减记录。
    注: 配置成one-to-one的对象不维护关联关系
     
     
  • 相关阅读:
    《分析服务从入门到精通读书笔记》第五章、创建多维数据集之浏览数据(1)
    灵活运用SQL Server2008 SSIS变量
    SSIS几个通用属性
    [原创]Silverlight开发实践系列导航(提供源码)
    【转】Scott_ASP.NET MVC框架(第四部分) 处理表单编辑和提交场景
    C#数据结构(二)栈和队列
    C#数据结构(一)线性表
    django学习(一)
    谈谈电子商务网站的促销规则(定价策略)设计(三)
    GAE使用中的问题
  • 原文地址:https://www.cnblogs.com/xiaoduc-org/p/5473079.html
Copyright © 2011-2022 走看看