17. Collection映射

本文将介绍如何在Hibernate中使用集合映射(包括Set、List、Array和Map)来存储原始对象,通过定义类、XML配置文件以及数据库模型来实现数据持久化,并提供测试用例验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本节将介绍setlistarraymap映射。(存储原始对象而不是实体类)

1.定义CollectionMapping

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 setValue;

       private List listValue;

       private String[] arrayValue;

       private Map mapValue;

 

       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;

       }

       public Set getSetValue() {

              return setValue;

       }

       public void setSetValue(Set setValue) {

              this.setValue = setValue;

       }

       public List getListValue() {

              return listValue;

       }

       public void setListValue(List listValue) {

              this.listValue = listValue;

       }

       public String[] getArrayValue() {

              return arrayValue;

       }

       public void setArrayValue(String[] arrayValue) {

              this.arrayValue = arrayValue;

       }

       public Map getMapValue() {

              return mapValue;

       }

       public void setMapValue(Map mapValue) {

              this.mapValue = mapValue;

       }

}

2.定义CollectionMapping.hbm.xml文件

<?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_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.数据库中的存储模型

collection存储模型

4.定义ExportDB.javaHibernateUtils.javahibernate.cfg.xml文件

5.编写测试用例

package com.bjsxt.hibernate;

 

import java.util.ArrayList;

import java.util.HashMap;

import java.util.HashSet;

import java.util.List;

import java.util.Map;

import java.util.Set;

import org.hibernate.Session;

import junit.framework.TestCase;

 

public class CollectionMappintTest extends TestCase {

 

       public void testSave() {

              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 testLoad() {

              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);

              }

       }                      

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值