- 浏览: 632737 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
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 4470掌握HTTP虽然不是必须的,但是如果你知道它的工作原理,那么在 ... -
TOMCAT指定JDK
2010-01-14 17:13 2361在windows环境下以批处理文件方式启动tomcat,只要运 ... -
Struts2的国际化
2010-01-01 11:30 1123Struts2国际化分为三类: ... -
总结Struts2的经典输入校验
2009-12-30 16:59 20741,输入校验介绍 Struts2提供了功能强大的输入校验机制 ... -
浅谈Struts2的内建校验器
2009-12-30 16:16 1268Struts2已经为我们准备了一些内建校验器,我们可以直接使用 ... -
Struts2输入校验
2009-12-30 16:12 1578struts2的输入校验针对输入进行业务规则的校验,譬如是否必 ... -
Struts2拦截器原理
2009-12-27 21:02 32991. 什么是拦截器 拦截器,在AOP(Aspect-O ... -
Struts2多文件上传
2009-12-27 17:36 1355Struts2也可以很方便地实现多文件上传。 在输入表 ... -
Struts2文件上传
2009-12-27 16:52 14881.文件上传原理 表单元素的enctype属性指定 ... -
Struts2 访问request、session和application对象
2009-12-27 15:28 3786在传统的Web开发中,经常会用到Servlet API中的Ht ... -
Struts2类型转换
2009-12-26 23:01 1645一、 struts2类型转换一 1、struts2的类型转 ... -
Struts2请求参数的接收
2009-12-26 22:24 15841)--采用基本类型接收请求参数(get/post) ... -
Struts2动态方法调用
2009-12-26 16:48 4462Struts2支持动态方法调用,它指的是一 ... -
Struts2指定多个配置文件
2009-12-26 15:50 2829如果配置文件struts.xml的内容太多,或者是 ... -
Struts2命名空间
2009-12-26 15:24 1581Struts.xml命名空间规则 包的na ... -
Struts2框架的处理流程
2009-12-26 15:07 42221. Struts2架构图 请求首先通过F ... -
Struts2的常量详解
2009-12-26 11:43 3405通常struts2加载struts2常 ... -
HTML form包含的元素
2009-12-25 17:01 1735HTML form elements Object ... -
Struts2.1.x快速入门(二)
2009-12-23 20:02 1105------------------------------- ... -
Struts2.1.x快速入门(一)
2009-12-23 17:21 1185------------------------------- ...
相关推荐
Hibernate常见集合映射(Set,List_Array,Map,Bag)
NULL 博文链接:https://lijunabc.iteye.com/blog/443381
hibernate集合的映射 集合的映射 set list array map
Hibernate容器映射技术(Set、List、Map)
Hibernate映射集合属性List,用于映射集合属性 List Hibernate 自动生成表 不需sql
NULL 博文链接:https://lijunabc.iteye.com/blog/443278
NULL 博文链接:https://lijunabc.iteye.com/blog/443353
2,建立表的hibernate支持,生成tb_user类和对应的配置文件 3,修改配置文件使之和相应的类对应, 4,修改tb_user类,创建一个set类型的字段emailes,生成它的set和get方法 5,写测试类,对以上内容进行测试。 二、...
NULL 博文链接:https://lijunabc.iteye.com/blog/443305
-Hibernate容器-Hibernate容器映射技术(Set、List、Map)(1)映射技术-Hibernate容器映射技术(Set、List、Map)(1)(Set、List、Map)(1)
适合初学者了解在hibernate中配置set,list,map,bag等集合映射
student与Score的Map集合关系 student与class的多对一 一对多映射
JAVA培训-HIBERNATE的集合映射.doc
hibernate 对象关系映射总结hibernate 对象关系映射总结hibernate 对象关系映射总结
Hibernate Map 多对多映射
hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...
NULL 博文链接:https://lijunabc.iteye.com/blog/443317
Hibernate对象关系映射一对多 很基础等文档
便于同学们更好的学习hibernate,其中包含了hibernate的七种映射管、关系
Hibernate_容器映射技术笔记Hibernate_容器映射技术笔记Hibernate_容器映射技术笔记Hibernate_容器映射技术笔记