Hibernate集合组件映射
集合的映射
set
list
array
map
?
配置:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.bjsxt.hibernate.CollectionMapping" table="t_collection_mapping"><id name="id"><generator table="t_set_values"><key column="set_id"/><element type="string" column="set_value"/></set><list name="listValues" table="t_list_values"><key column="list_id"/><list-index column="list_index"/><element type="string" column="list_value"/></list><array name="arrayValues" table="t_array_values"><key column="array_id"/><list-index column="array_index"/><element type="string" column="array_value"/></array><map name="mapValues" table="t_map_values"><key column="map_id"/><map-key type="string" column="map_key"/><element type="string" column="map_value"/></map></class></hibernate-mapping>
?POJO
package com.bjsxt.hibernate;import java.util.List;import java.util.Map;import java.util.Set;public class CollectionMapping {private int id;private String name;private Set setValues;private List listValues;private String[] arrayValues;private Map mapValues;public String[] getArrayValues() {return arrayValues;}public void setArrayValues(String[] arrayValues) {this.arrayValues = arrayValues;}public int getId() {return id;}public void setId(int id) {this.id = id;}public List getListValues() {return listValues;}public void setListValues(List listValues) {this.listValues = listValues;}public Map getMapValues() {return mapValues;}public void setMapValues(Map mapValues) {this.mapValues = mapValues;}public Set getSetValues() {return setValues;}public void setSetValues(Set setValues) {this.setValues = setValues;}public String getName() {return name;}public void setName(String name) {this.name = name;}}?
测试类:
package com.bjsxt.hibernate;import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import junit.framework.TestCase;import org.hibernate.Session;public class CollectionMappingTest extends TestCase {public void testSave() {CollectionMapping c = new CollectionMapping();c.setName("xxx");Set setValues = new HashSet();setValues.add("a");setValues.add("b");c.setSetValues(setValues); List listValues = new ArrayList(); listValues.add("c"); listValues.add("d"); c.setListValues(listValues); String[] arrayValues = new String[]{"e", "f"}; c.setArrayValues(arrayValues); Map mapValues = new HashMap(); mapValues.put("key_1", "value_1"); mapValues.put("key_2", "value_2"); c.setMapValues(mapValues); Session session = null;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();CollectionMapping c = (CollectionMapping)session.load(CollectionMapping.class, 1);for(Iterator iter = c.getSetValues().iterator();iter.hasNext();){System.out.println((String)iter.next());}//System.out.println("list=" + c.getListValues().get(1));}catch(Exception e) {e.printStackTrace();}finally {HibernateUtils.closeSession(session);}}}?
?
配置文件中会发现list-index属性,这是为了保存插入的顺序.