您的位置:首页 > 其它

Hibernate学习22 -- 关联映射12 -- 集合映射

2009-12-04 12:45 537 查看
在对象中有普通属性,也有可能有集合属性如set、list、array、map,那我们在hibernate中该如何映射呢?我们存储应当如下面显示:





代码实现:
1) 建立一个对象,里面包含普通属性也有集合属性,如list、set、array、map,例如:CollectionMapping.java

public class CollectionMapping {

private int id;
private String name;
private Set setValue;
private List listValue;
private String[] arrayValue;
private Map mapValue;
2) 建立映射文件,例如:CollectionMapping.hbm.xml

<hibernate-mapping>

<class name="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) 测试代码:

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);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: