关系图
t_CollectionMapping
id | name |
1 | xxx |
t_set_values
set_id | set_value |
1 | a |
1 | b |
t_list_value
list_id | list_value | list_index |
1 | c | 0 |
1 | d | 1 |
t_array_value
array_id | array_value | array_index |
1 | e | 0 |
1 | f | 1 |
t_map_value
map_id | map_key | map_value |
1 | k1 | v1 |
1 | k2 | v2 |
其中set、list、map、array的ID都指向CollectionMapping的id
1、实体文件
public class CollectionMapping {
private int id;
private String name;
private Set setValue;
private List listValue;
private String[] arrayValue;
private Map mapValue;
...
2、映射文件
<hibernate-mapping>
<class name="com.bjsxt.hibernate.CollectionMapping" table="t_CollectionMapping">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<set name="setValue" table="t_set_value">
<key column="set_id"/>
<element type="string" column="set_value"/>
</set>
<list name="listValue" table="t_list_value">
<key column="list_id"/>
<list-index column="list_index"/>
<element type="string" column="list_value"/>
</list>
<array name="arrayValue" table="t_array_value">
<key column="array_id"/>
<list-index column="array_index"/>
<element type="string" column="array_value"/>
</array>
<map name="mapValue" table="t_map_value">
<key column="map_id"/>
<map-key type="string" column="map_key"/>
<element type="string" column="map_value"/>
</map>
</class>
</hibernate-mapping>
3、TestCase
public class CollectionMappintTest extends TestCase {
public void testSave1() {
Session session = null;
CollectionMapping c = new CollectionMapping();
c.setName("xxx");
Set setValue = new HashSet();
setValue.add("a");
setValue.add("b");
c.setSetValue(setValue);
List listValue = new ArrayList();
listValue.add("c");
listValue.add("d");
c.setListValue(listValue);
String[] arrayValue = new String[]{"e", "f"};
c.setArrayValue(arrayValue);
Map mapValue = new HashMap();
mapValue.put("k1", "v1");
mapValue.put("k2", "v2");
c.setMapValue(mapValue);
try {
session = HibernateUtils.getSession();
session.beginTransaction();
session.save(c);
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
}
public void testLoad1() {
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
CollectionMapping c = (CollectionMapping)session.load(CollectionMapping.class, 1);
System.out.println("name=" + c.getName());
System.out.println("setvalue=" + c.getSetValue());
System.out.println("mapvalue=" + c.getMapValue());
System.out.println("listvalue=" + c.getListValue());
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
}
}