无序集和有序集,是针对hibernate数据持久过程中,是否保持数据集合中的记录排列顺序加以区分;也就是,对于一个有序集,其中元素的排列次序将会在库表中制定的字段保存,当我们读取时,也会以同样的次序排列;排列强调的是针对现有数据,以特定的逻辑对排列次序进行调整。而排序的结果,是数据在内存中的某种排列次序,属于临时状态;
数据排列有2种方式:
- sort,Collection中的数据排序,如对一个List中的元素先后顺序进行调整(sort操作是在JVM中完成);
- order-by,对数据库执行Select SQL时,由order by子句实现的数据排序方式(order-by在数据库中完成);
Sort:
<set name="books" lazy="true" table="_books" sort="natural"> <key column="user_id"/> <element type="string" column="books"/> </set>
可排序Set实现了java.util.SortedSet接口,sort="natural"指定采用了java默认排序机制;
Order-by:
Collection的order-by排序方式,其实现原理也是借助SQL的order-by子句;
<set name="books" lazy="true" table="_books" order-by="books_desc"> <key column="user_id"/> <element type="string" column="books"/> </set>