- 浏览: 642375 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
lizhuang:
这个方法的内部实现主要是依赖于类加载器,一般的自己实现的类是用 ...
Java中getResourceAsStream的用法 -
prince4426:
回答评论都很精彩
Java中getResourceAsStream的用法 -
kexuetou:
美人如此多娇 写道可能这样总结更好,路径前不带'/',则是相对 ...
Java中getResourceAsStream的用法 -
guoxin91:
...
Java中getResourceAsStream的用法 -
美人如此多娇:
可能这样总结更好,路径前不带'/',则是相对路径;若带,则是绝 ...
Java中getResourceAsStream的用法
Hibernate常见的集合映射主要有Set,List,Array,Map,Bag等,它们的特点如下:
1) Set集合是Hibernate中基础的集合类型,元素数据一般使用外键同主表关联,Set集合非常适用于集合元素不能重复的情况。
2) Set集合是无序的,集合元素并不是按照一定的顺序排列的,而List集合是有序的,每个集合元素需要有一个表示集合序号的标识,这样可以使用该标识来获得该集合元素。
3) 数组Array使用的是List的方式来表示的。
4) Map集合的特点是使用键值对,即Key-Value结构来存放集合元素,这样就需要对应的集合元素数据库表中包含对于Key的列。
5) Set集合石无序、不能有重复元素的,Hibernate提供了一个Bag集合,用来处理重复元素的情况。值得注意的是,Bag并不是Java API,而是Hibernate提供的。Bag集合映射和List不同,List的集合元素是有序的,需要有一个集合序号来标识集合元素的位置,List元素可以重复;而Bag集合元素不需要元素序号标识,元素也是可以重复的。
首先建立数据库表,SQL语句如下:
CREATE TABLE ‘message’( 'id' int(11) NOT NULL, 'setValue' varchar(100) NOT NULL, 'listValue_id' int(11) NOT NULL, 'listValue' varchar(100) NOT NULL, 'arrayValue_id' int(11) NOT NULL, 'arrayValue' varchar(100) NOT NULL, 'mapValue_id' int(11) NOT NULL, 'mapValue' varchar(100) NOT NULL, 'bagValue' varchar(100) NOT NULL )ENGINE = InnoDB DEFAULT CHARSET = gbk CREATE TABLE 'master'( 'id' int(11) NOT NULL auto_increment, 'name' varchar(100) NOT NULL default '', PRIMARY KEY('id') )ENGINE = InnoDB DEFAULT CHARSET = gbk
建立角色的实体类,代码如下:
import java.io.Serializable; import java.util.List; import java.util.Map; import java.util.Set; @SuppressWarnings({ "unchecked", "serial" }) public class Master implements Serializable { private Integer id; //主键ID属性 private String name; //姓名name属性 private Set setValue; private List listValue; private String[] arrayValue; private Map mapValue; private List bagValue; public Integer getId() { return id; } public void setId(Integer 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; } public List getBagValue() { return bagValue; } public void setBagValue(List bagValue) { this.bagValue = bagValue; } }
类Message的Hibernate映射文件Message.hbm.xml如下:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="com.iprai.hibernate.collectionmapping" table="master" catalog="iprai"> <id name="id" type="java.lang.Integer"> <column name="id" /> <generator class="native"></generator> </id> <property name="name" type="java.lang.String"> <column name="name" length="100" not-null="true" /> </property> <!--Set类型映射--> <set name="setValue" table="message"> //定义对应的表 <key column="id" /> <element type="java.lang.String"> <column name="setValue" /> </element> </set> <!--List类型映射--> <List name="listValue" table="message"> <key column="id" /> <index column="listValue_id" /> //配置主键 <element type="java.lang.String" column="listValue" /> </List> <!--Array类型映射--> <array name="arrayValue" table="message"> <key column="id"/> <list-index column="arrayValue_id"/> <element type="java.lang.String" column="arrayValue"/> </array> <!--Map类型映射--> <map name="mapValue" table="message"> <key column="id" /> <!--配置键值对--> <map-key column="mapValue_id" type="java.lang.String" /> <element type="java.lang.String" column="mapValue" /> </map> <!--Bag类型映射--> <bag name="bagValue" table="message"> <key column="id" /> //定义主键 <element type="string" column="bagValue" /> //定义元素类型 </bag> </class> </hibernate-mapping>
JUnit测试代码如下:
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 MasterTest extends TestCase { public void testSave() { Master master = new Master(); master.setName("JavaEye"); Set setValue = new HashSet(); setValue.add("a"); setValue.add("b"); master.setSetValue(setValue); List listValue = new ArrayList(); listValue.add("c"); listValue.add("d"); master.setListValue(listValue); String[] arrayValue = new String[]{"e", "f"}; master.setArrayValue(arrayValue); Map mapValue = new HashMap(); mapValue.put("key_1", "value_1"); mapValue.put("key_2", "value_2"); master.setMapValue(mapValue); List bagValue = new ArrayList(); bagValue.add("h"); bagValue.add("i"); master.setBagValue(bagValue); 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); } } }
发表评论
-
HTTP协议解析
2010-01-27 20:39 4543掌握HTTP虽然不是必须的,但是如果你知道它的工作原理,那么在 ... -
TOMCAT指定JDK
2010-01-14 17:13 2419在windows环境下以批处理文件方式启动tomcat,只要运 ... -
Struts2的国际化
2010-01-01 11:30 1163Struts2国际化分为三类: ... -
总结Struts2的经典输入校验
2009-12-30 16:59 21181,输入校验介绍 Struts2提供了功能强大的输入校验机制 ... -
浅谈Struts2的内建校验器
2009-12-30 16:16 1311Struts2已经为我们准备了一些内建校验器,我们可以直接使用 ... -
Struts2输入校验
2009-12-30 16:12 1648struts2的输入校验针对输入进行业务规则的校验,譬如是否必 ... -
Struts2拦截器原理
2009-12-27 21:02 33461. 什么是拦截器 拦截器,在AOP(Aspect-O ... -
Struts2多文件上传
2009-12-27 17:36 1395Struts2也可以很方便地实现多文件上传。 在输入表 ... -
Struts2文件上传
2009-12-27 16:52 15181.文件上传原理 表单元素的enctype属性指定 ... -
Struts2 访问request、session和application对象
2009-12-27 15:28 3870在传统的Web开发中,经常会用到Servlet API中的Ht ... -
Struts2类型转换
2009-12-26 23:01 1687一、 struts2类型转换一 1、struts2的类型转 ... -
Struts2请求参数的接收
2009-12-26 22:24 16341)--采用基本类型接收请求参数(get/post) ... -
Struts2动态方法调用
2009-12-26 16:48 4535Struts2支持动态方法调用,它指的是一 ... -
Struts2指定多个配置文件
2009-12-26 15:50 2901如果配置文件struts.xml的内容太多,或者是 ... -
Struts2命名空间
2009-12-26 15:24 1644Struts.xml命名空间规则 包的na ... -
Struts2框架的处理流程
2009-12-26 15:07 42701. Struts2架构图 请求首先通过F ... -
Struts2的常量详解
2009-12-26 11:43 3498通常struts2加载struts2常 ... -
HTML form包含的元素
2009-12-25 17:01 1796HTML form elements Object ... -
Struts2.1.x快速入门(二)
2009-12-23 20:02 1187------------------------------- ... -
Struts2.1.x快速入门(一)
2009-12-23 17:21 1225------------------------------- ...
相关推荐
常见的集合映射类型有 Set、List、Array、Map 和 Bag 等,每种类型都有其特点和应用场景。 Set 集合映射 Set 集合是 Hibernate 中基础的集合类型,元素数据一般使用外键同主表关联。Set 集合非常适用于集合元素不...
在Hibernate的映射文件(.hbm.xml)中,我们通常使用`<set>`, `<list>`, `<map>`等标签来定义集合映射。每个标签都有对应的属性,例如: - `name`: 对象属性名。 - `table`: 所映射的数据库表名。 - `inverse`: ...
在给定的文档“JAVA培训-HIBERNATE的集合映射.doc”中,主要讲解了Hibernate如何处理不同类型的集合映射,包括Set、List、Array、Map和Bag。我们将详细讨论这些集合映射以及它们在实际应用中的使用。 首先,我们来...
Hibernate支持多种集合映射类型,包括List、Set、Map、Bag、Array等。它们之间的区别主要在于元素的唯一性、顺序性和映射到数据库的实现方式。例如,List和Array维护元素的插入顺序,而Set不允许重复元素;Map则...
在Java中,常见的集合类型有List、Set、Map等,它们在Hibernate中都有对应的映射方式。 1. **List映射**:List是最基础的集合类型,它允许元素重复并保持插入顺序。在Hibernate中,我们可以使用`<list>`标签来映射...
集合映射可以是 set、list、map、bag、array 等。级联策略控制可以控制集合元素的保存和删除。排序策略可以控制集合元素的顺序。 聚合映射 Hibernate 的聚合映射可以将多个对象聚合到一个对象中。聚合映射可以是...
在 Hibernate 中,可以通过 `<set>` 标签来配置 Set 集合的映射。下面详细介绍 `<set>` 标签的各个属性: - **name**:必须指定的属性,表示集合的名称。 - **access**:可选属性,指定访问策略。 - **table**:可...
在Hibernate中,集合可以通过`<set>`, `<list>`, `<map>`, `<bag>` 或 `<array>` 标签进行映射。每个标签对应不同的集合类型,例如: 1. `<set>`:对应Set接口,不允许有重复元素。 2. `<list>`:对应List接口,元素...
6. Bag、Set、List、Array、Map:用于表示集合类型的映射,如列表或映射关系。 NGen工具的主要功能是: 1. 预先编译:NGen会将IL(中间语言)代码转换为本机机器码,使得应用程序在运行时无需再进行JIT(Just-In-...
该属性仅存在于集合标记的元素中,如`<set>`、`<map>`、`<list>`、`<array>`和`<bag>`等。它的作用是决定是否将对集合对象的修改反映到数据库中。 - **Inverse 的作用** - **定义**:`inverse`属性决定了一端是否...
5. **集合类型**:`set`、`map`、`list`、`bag`、`array`等元素定义了集合类型在Hibernate中的实现方式。 6. **继承策略**:`subclass`、`joined-class`、`union-class`等元素用于定义不同的继承策略。 #### 三、...