Hibernate Map 映射
Map对象中保存key/value形式的一对对象,key与value都是Object类型的变量。二者是一一对应关系,key值不能重量。
(1)、HashMap
HashMap是基于哈希表的Map接口的实现,允许null作为key或者value的值。不记录key或value对加入的顺序且不保证线程安全,查找key/value对的效率比较高。
(2)、LinkedHashMap
LinkedHashMap是HashMap的子类,内部使用链表保存数据LinkedHashMap对象中保存的key/value对有固定的顺序。
(3)、TreeMap
TreeMap实现了Map与SortedMap接口,内部使用红黑树算法来排序加入的对象,还可以自定义排序规则实现按顺序功能并使用TreeMap对象的firstKey()、lastKey()、headMap()和tailMap()等方法取出对应索引位置的对象。
Map映射的使用方法如下:
public class User {
private String id;
private String username;
private String password;
private List emails = new ArrayList();
public String getId() {
....
对应的get/set方法省略
}
public class EMail {
private String userId;
private String emailAddress;
private String usage;
....
对应的get/set方法省略
}
<hibernate-mapping>
<class name="com.kkoolerter.hibernate.beans.User" table="tb_user">
<id name="id">
<generator class="uuid"/>
</id>
<property name="username" />
<property name="password"/>
<map name="emails" table="tb_email">
<key column="userid" foreign-key="id"/>
<map-key type="java.lang.String" column="c_usage" />
<element type="java.lang.String" column="emailaddress"></element>
</map>
</class>
</hibernate-mapping>
Map对象中保存key/value形式的一对对象,key与value都是Object类型的变量。二者是一一对应关系,key值不能重量。
(1)、HashMap
HashMap是基于哈希表的Map接口的实现,允许null作为key或者value的值。不记录key或value对加入的顺序且不保证线程安全,查找key/value对的效率比较高。
(2)、LinkedHashMap
LinkedHashMap是HashMap的子类,内部使用链表保存数据LinkedHashMap对象中保存的key/value对有固定的顺序。
(3)、TreeMap
TreeMap实现了Map与SortedMap接口,内部使用红黑树算法来排序加入的对象,还可以自定义排序规则实现按顺序功能并使用TreeMap对象的firstKey()、lastKey()、headMap()和tailMap()等方法取出对应索引位置的对象。
Map映射的使用方法如下:
public class User {
private String id;
private String username;
private String password;
private List emails = new ArrayList();
public String getId() {
....
对应的get/set方法省略
}
public class EMail {
private String userId;
private String emailAddress;
private String usage;
....
对应的get/set方法省略
}
<hibernate-mapping>
<class name="com.kkoolerter.hibernate.beans.User" table="tb_user">
<id name="id">
<generator class="uuid"/>
</id>
<property name="username" />
<property name="password"/>
<map name="emails" table="tb_email">
<key column="userid" foreign-key="id"/>
<map-key type="java.lang.String" column="c_usage" />
<element type="java.lang.String" column="emailaddress"></element>
</map>
</class>
</hibernate-mapping>
转载于:https://blog.51cto.com/wujuxiang/409160