Hibernate学习笔记(七)【映射值类型集合】
2012-10-31 21:02
316 查看
Set
说明:
1.值类型,就说Image类就行String类型一样当值搞了,一切受包含它的类控制
2.他是在数据库中有表的,并且可延时加载(默认),数据库有 ID 和 MONKEY_ID
3.elemet,你懂的,实体类可没这个。
4.Set是hibernate里的Persistent类,Hash的 也就是无序的
Bag
说明:
和上一个唯一的区别是他可以放相同的元素,上面那个是Set你懂的
List
说明:
1.它的数据库没有ID主键,多了个POSITIOM的字段,显然他可以排序;Image类中是没有position属性的。存是按放入的先后顺序来的
2.对了Bag和List 在Monkey中都是包含了一个List的图片集合,但是BAG无序,List存的时候哪个先存,拿的时候可以get(0)这样取。
Map
说明:
1.数据库有个ID和MONKEY_ID,组成联合主键
2.处理的时候 得到一个Map images=monkey.getImages() 他有Set keys = images.keySet();显然这个是我们IMAGE_NAME 无序
这么多无序了,我们怎么对集合排序呢?有2种策略:
1.在数据库查的时候排好序,这个只有List不支持,因为他完全由自己排序
说明是的每次查的时候在屁股后面加了双引号里的语句
2.也可以内存排序,其实就是查出来后,用Comparator给查出来的集合排了一把
两个都用,纯粹傻逼,当然肯定是sort有效果,但愿Hibernate不会去排序查
排序的时候,集合的实现类就可以用TreeSet TreeMap叻,完全排序完成。如 Monkey类里面有成员 private Map images=new TreeMap();
备注:文章示例代码来源:《Hibernate逍遥游记》孙卫琴,可能有部分改造,解释部分纯属个人经验。
<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学习笔记:集合映射之映射Map
- hibernate学习笔记12--Hibernate中使用的集合类型
- [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系
- HIbernate学习笔记(七) hibernate中的集合映射和继承映射
- hibernate集合映射学习笔记
- 【Hibernate学习笔记】Hibernate的内置映射类型
- Hibernate学习笔记:集合映射之映射Map
- Hibernate 学习笔记07 --集合映射_&_继承映射
- 20,21,22-Hibernate容器映射技术(Set、List、Map) -mldn学习笔记 -hxzon
- Guava学习笔记【7】:Guava新增集合类型-Multiset
- [Guava学习笔记]Collections: 不可变集合, 新集合类型
- 关于Hibernate中对集合类型的映射
- [Spring Data MongoDB]学习笔记--_id和类型映射
- Hibernate学习6—Hibernate 映射类型
- Hibernate学习笔记:继承映射之每个子类一张表
- python核心编程学习记录之映射和集合类型
- IOS开发学习笔记(十一)——ObjectC中集合类型的使用
- 学习笔记之 O/R 映射技术的王牌Hibernate框架
- Guava学习笔记:Guava新增集合类型