频道栏目
首页 > 资讯 > Java > 正文

集合映射

12-12-25        来源:[db:作者]  
收藏   我要投稿
集合映射
一、Set
[java] 
<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>  
 
映射文件
二、List
[java]  
<?xml version="1.0"?>  
  
<!DOCTYPE hibernate-mapping PUBLIC  
  
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"     "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  
          <hibernate-mapping package="com.hbsi.list">  
  
          <class name="Person" table="p">  
  
          <id name="id" column="id">  
  
          <generator class="native"/>  
  
          </id>  
  
          <property name="name" column="name" type="string"/>  
  
          <bag name="hobbies">  
  
          <key column="p_id"/>  
  
          <element column="hobbies_name" type="string"/>  
  
          </bag>  
  
          <!--  <list name="hobbies" table="p_hobbies">  
  
          <key column="p_id"/>  
  
          <list-index column="position"/>  
  
          <element type="string" column="hobbies_name"/>  
  
          </list>  
  
          -->  
  
          </class>  
  
          </hibernate-mapping>  
 
三、Map
[html]  
<?xml version="1.0"?>  
  
<!DOCTYPE hibernate-mapping PUBLIC  
  
      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  
          "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  
          <hibernate-mapping package="com.hbsi.map">  
  
          <class name="Person" table="p2">  
  
          <id name="id" column="id">  
  
          <generator class="native"/>  
  
          </id>  
  
          <property name="name" column="name" type="string"/>  
  
          <map name="hobbies" table="p2_hobbies">  
  
          <key column="p_id"/>  
  
          <map-key type="int" column="hobbies_id"/>  
  
          <element column="hobbies_name" type="string"/>  
  
          </map>  
  
          </class>  
  
          </hibernate-mapping>  
 
四、这些集合类都是Hibernate实现的类和JAVA中的集合类不完全一样,set,list,map分别和JAVA中的Set,List,Map接口对应,bag映射成JAVA的List;这些集合的使用和JAVA集合中对应的接口基本一致;在JAVA的实体类中集合只能定义成接口不能定义成具体类, 因为集合会在运行时被替换成Hibernate的实现。
集合的简单使用原则:大部分情况下用set,需要保证集合中的顺序用list,想用java.util.List又不需要保证顺序用bag。
五、cascade和inverse (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>中设置级联。
inverse表“是否放弃维护关联关系”(在Java里两个对象产生关联时,对数据库表的影响),在one-to-many和many-to-many的集合定义中使用,inverse=”true”表示该对象不维护关联关系;该属性的值一般在使用有序集合时设置成false(注意hibernate的缺省值是false)。
one-to-many维护关联关系就是更新外键。many-to-many维护关联关系就是在中间表增减记录。
注: 配置成one-to-one的对象不维护关联关系
 
相关TAG标签
上一篇:Linux下使用裸设备创建oracle表空间
下一篇:排序算法之选择排序(JAVA)
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站