`
txidol
  • 浏览: 54323 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Hibernate学习笔记(七)【映射值类型集合】

阅读更多

Set

 

<hibernate-mapping >
  <class name="mypack.Monkey" table="MONKEYS" >
    <id name="id" type="long" column="ID">
      <generator class="increment"/>
    </id>
    <property name="name" type="string" >
        <column name="NAME" length="15" />
    </property>
   <set   name="images"   table="IMAGES"    lazy="true" >
        <key column="MONKEY_ID" />
       <element column="FILENAME" type="string"  not-null="true"/>
   </set>   
  </class> 
</hibernate-mapping>

说明:

1.值类型,就说Image类就行String类型一样当值搞了,一切受包含它的类控制

2.他是在数据库中有表的,并且可延时加载(默认),数据库有ID 和MONKEY_ID

3.elemet,你懂的,实体类可没这个。

4.Set是hibernate里的Persistent类,Hash的 也就是无序的

 

Bag

 

<hibernate-mapping >
  <class name="mypack.Monkey" table="MONKEYS" >
    <id name="id" type="long" column="ID">
      <generator class="increment"/>
    </id>
    <property name="name" type="string" >
        <column name="NAME" length="15" />
    </property>
   <idbag   name="images"   table="IMAGES"    lazy="true">
        <collection-id type="long" column="ID">
           <generator class="increment"/>
        </collection-id>
        <key column="MONKEY_ID" />
        <element column="FILENAME" type="string"  not-null="true"/>
   </idbag>   
  </class>
</hibernate-mapping>

说明:

和上一个唯一的区别是他可以放相同的元素,上面那个是Set你懂的

 

List

 

   <list   name="images"   table="IMAGES"    lazy="true">
        <key column="MONKEY_ID" />
        <list-index column="POSITION" />
        <element column="FILENAME" type="string"  not-null="true"/>
   </list>  

说明:

1.它的数据库没有ID主键,多了个POSITIOM的字段,显然他可以排序;Image类中是没有position属性的。存是按放入的先后顺序来的

2.对了Bag和List 在Monkey中都是包含了一个List的图片集合,但是BAG无序,List存的时候哪个先存,拿的时候可以get(0)这样取。

 

Map

 

   <map   name="images"   table="IMAGES"    lazy="true">
        <key column="MONKEY_ID" />
        <map-key column="IMAGE_NAME" type="string"/>
        <element column="FILENAME" type="string"  not-null="true"/>
   </map>   

说明:

1.数据库有个ID和MONKEY_ID,组成联合主键

2.处理的时候 得到一个Map images=monkey.getImages() 他有Set keys = images.keySet();显然这个是我们IMAGE_NAME 无序

 

这么多无序了,我们怎么对集合排序呢?有2种策略:

1.在数据库查的时候排好序,这个只有List不支持,因为他完全由自己排序

示例: <set   name="images"   table="IMAGES"    lazy="true" order-by="lower(FILENAME) desc">
              <key column="MONKEY_ID" />
              <element column="FILENAME" type="string"  not-null="true"/>
       </set>   

说明是的每次查的时候在屁股后面加了双引号里的语句

 

2.也可以内存排序,其实就是查出来后,用Comparator给查出来的集合排了一把

示例: <set   name="images"   table="IMAGES"    lazy="true" sort=mypack.selfCpmparator">
              <key column="MONKEY_ID" />
              <element column="FILENAME" type="string"  not-null="true"/>
       </set>   

两个都用,纯粹傻逼,当然肯定是sort有效果,但愿Hibernate不会去排序查

 

排序的时候,集合的实现类就可以用TreeSet TreeMap叻,完全排序完成。如Monkey类里面有成员 private Map images=new TreeMap();

分享到:
评论

相关推荐

    Hibernate学习笔记特别详细

    《Hibernate学习笔记特别详细》 Hibernate,作为一款开源的Object-Relational Mapping(ORM)框架,为Java开发者提供了强大的数据库操作支持。它简化了数据库访问的复杂性,使得开发人员可以像操作对象一样操作...

    达内HIBERNATE学习笔记

    根据提供的信息,我们可以总结出以下关于达内HIBERNATE学习笔记的重要知识点: ### 第一章:Hibernate入门 #### 1.1 学习目标 - 理解Hibernate的基本概念。 - 掌握如何使用Hibernate进行开发。 #### 1.2 对象持久...

    Hibernate学习笔记!

    **Hibernate学习笔记** Hibernate是一个强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。本笔记将深入探讨Hibernate的核心概念、配置、实体管理、查询语言以及最佳实践...

    Hibernate3 学习笔记.ppt

    使用Hibernate,开发者可以遵循一定的原则来设计持久化类,如定义get/set方法、提供默认构造器、使用集合接口类型和标识属性。此外,还需要通过Configuration类配置Hibernate,包括数据库连接信息、映射文件等。 ...

    hibernate学习笔记

    综上所述,这份"hibernate学习笔记"全面覆盖了Hibernate的主要方面,包括对象生命周期管理、对象关系映射、查询方式以及性能优化。对于希望深入理解和掌握Hibernate的开发者来说,这是一个非常宝贵的资源。

    hibernate 学习笔记3

    标题:Hibernate学习笔记3 描述:本篇笔记深入探讨了Hibernate框架中一对多关系的映射及持久化对象状态管理,结合个人理解与实践经验,旨在为读者提供一份详实的学习资料。 ### 一、一对多关系映射详解 在...

    hibernate学习笔记(全)

    【hibernate学习笔记(全)】是一份全面介绍Hibernate框架的资料,涵盖了从基础到高级的诸多知识点。Hibernate作为Java领域中一个流行的持久化框架,它极大地简化了数据库操作,使得开发者可以更加专注于业务逻辑而...

    Hibernate学习笔记_songjignhao_1

    总的来说,这篇 Hibernate 学习笔记涵盖了关联关系的多种类型和映射方法,以及查询排序、组件映射和继承映射等核心概念,为理解并熟练运用 Hibernate 提供了坚实的基础。通过实际编码和理解这些示例,开发者可以更...

    Hibernate学习笔记,使用Hibernate做数据层非常方便

    【Hibernate学习笔记,使用Hibernate做数据层非常方便】 在Java开发中,Hibernate是一个非常流行的ORM(Object-Relational Mapping)框架,它简化了数据库操作,将数据库中的表映射为Java对象,使得开发者可以像...

    Hibernate学习笔记(三)

    在本篇“Hibernate学习笔记(三)”中,我们将深入探讨Hibernate这一强大的Java对象关系映射(ORM)框架。Hibernate简化了数据库操作,使得开发者能够更专注于业务逻辑,而不是底层的SQL查询。这篇笔记主要围绕...

    Hibernate学习笔记.pdf

    《Hibernate学习笔记》 在当前的IT行业中,Java开发者经常面临的一个挑战是将面向对象的软件与关系型数据库集成,这一过程可能既复杂又耗时。Hibernate作为一个优秀的Java环境下的对象/关系型数据库映射(ORM)工具...

    传智播客2016hibernate框架学习笔记

    《传智播客2016 Hibernate框架学习笔记》是一份详实的教程,旨在帮助初学者和进阶者深入理解和掌握Hibernate框架。该资源包含了四天的学习内容,分别是day01、day02、day03和day04,涵盖了从基础到高级的多个主题。...

    struts and hibernate学习笔记

    在这些学习笔记中,我们可以期待以下主题的深入探讨: 1. **Struts2基础**:包括Struts2的架构、配置文件详解、Action类的创建、结果类型配置、Interceptor的使用以及如何整合Struts2与Spring。 2. **Struts2实战*...

    Hibernate学习笔记

    Hibernate是一个开放源代码的对象关系映射(ORM)框架,它对JDBC进行了轻量级的对象封装...总的来说,Hibernate学习笔记涵盖了从基础到高级的多个方面,对于希望掌握Hibernate的开发者来说,是一份相当全面的学习资料。

    java unix sping ajax struts hibernate 学习笔记

    这篇学习笔记涵盖了广泛的Java和JavaEE相关技术,包括Unix、Spring、Struts、Ajax、Hibernate等核心组件。让我们深入探讨一下这些技术。 首先,Unix是一个强大的操作系统,是许多服务器和开发环境的基础。在"Unix...

    2023年Java相关课程系列笔记之十四Hibernate学习笔记.doc

    在本篇“2023年Java相关课程系列笔记之十四Hibernate学习笔记”中,我们将深入探讨Java开发中常用的持久化框架——Hibernate。这个框架由梁建全老师主讲,旨在帮助开发者更高效、便捷地进行数据库操作,弥补JDBC在...

Global site tag (gtag.js) - Google Analytics