传智播客学习笔记5.19
HIBERNATE
汤阳光老师
TreeSet
第一种排序方式
<set name="users" sort="natural">----------该方法不推荐
</set>
内存中排序。影响效率
要求实体实现comparable接口
第二种排序方式
<set name="users" order-by="age">
</set>
sql查询时使用order by子句指定顺序
基于主键的一对一映射
基于外键的一对一映射
不管是多对一还是一对一,有外键的那个表所对应的实体始终能维护关系
维护关系?
重写hashcode和equals方法时,除了id,最好再加入关键业务数据
继承映射的两种方法
一般一个继承结构定义一个映射文件
Hibernate Template
* 索引(有序)集合
例如Group中的users希望以user的age升序排列.
有两种方式实现:
a) 使用sort属性实现在内存中排序;
b) 使用order-by属性实现: 在使用sql进行查询时使用order by子句指定顺序。
有序集合对于List或数组无效,因为列表元素的顺序由列表索引指明。
如果使用的是Set或Map类型的集合,并且在实体中对这个集合属性进行了初始化,
应是SortedSet或SortedMap实现类的实例(TreeSet或TreeMap)。
** sort属性
可以用于set或map映射,默认为unsorted,即不排序;可以设为natural,要求实
体要实现java.lang.Comparable接口。分类集合的行为象TreeSet或者TreeMap,
这是从数据库中取出记录后再在内存中进行排序。(在查询时有效)
** order-by属性
在set、bag或map映射中使用order-by属性,指定查询时生成的sql的order by子
句,这是在执行sql查询时指定排序(推荐)。如果使用了order-by,则返回的就
是可以保存顺序的集合实现类。
* 一对一映射:User与IdCard
有两种映射方式:基于主键和一对一和基于外键和一对一(用数据库说明)。不
管哪种方式,都是有外键的那个表对应的实体(IdCard)来维护关系;只为只有
IdCard能维护关系,所以如果要做单向关联,只能做从IdCard到User的单向关联。
不管是多对一还是一对一&#x