package domain;
import java.util.List;
import java.util.Map;
public class Department {
private int id;
private String name;
//private Set<Employee> emps;
//private List<Employee> emps;
//private Map<Employee,String> emps;
private Employee[] emps;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="domain"> <class name="Department" table="`department`"> <id name="id" column="`id`"> <generator class="native"></generator> </id> <properties name="name"></properties> <!-- 有排序功能会出现order_col一列 <list name="emps"> <key column="depart_id"></key> <list-index column="order_col"></list-index> <one-to-many class="Employee"/> </list> --> <!-- 与List对应不会出现排序的一列 <bag name="emps"> <key column="depart_id"></key> <one-to-many class="Employee"/> </bag> --> <map name="emps"> <key column="depart_id"></key> <map-key type="String" column="name"></map-key> <one-to-many class="Employee"/> </map> <!-- 数组很List一样 --> </class> </hibernate-mapping>
package domain;
public class Employee {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
总结:
集合映射(Set\List\Array\Bag\Map)
这些集合类都是Hibernate实现的类和Java中的集合类不完全一样,set、list、map分别和java中的Set、List、Map
接口对应,bag映射成java的List这些集合的使用和java集合中对应的接口基本一致;在Java的实体类中集合只能定义成接口不能定义成具体类,因为集合会在运行时被替换成Hibernate的实现。
集合的简单实用原则:大部分情况使用set,需要保证集合中的顺序用list享用list又不需要保证顺序用bag。