- 浏览: 148179 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
flyingcatjj:
很适合我这种刚接触的
myeclipse xfire 开发webservice实例 -
tangzlboy:
非常好,非常详细,非常中用。
linux入门 -
yzz9i:
楼主说的很是详细。
myeclipse xfire 开发webservice实例 -
zqx888191:
很再理阿!
老程序员的教诲 -
simplecat123:
...
SQLite数据读取
十二 Map集合映射 Map是以键值对的形式存放数据的 现在我们假设员工数据的name为唯一的 现在我们来看映射文件 <?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 package="vo.util.bean"> <class name="Employee"> <id name="id"> <generator class="native"/> </id> <property name="name" unique="true"/> <many-to-one name="derpartment" column="depaer_id" not-null="true"/> </class> </hibernate-mapping> unique是定义其为唯一键的约束 员工实体类 package vo.util.bean; /** * 员工类 * @author Administrator * */ public class Employee { private int id; private String name; private Department derpartment; 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 Department getDerpartment() { return derpartment; } public void setDerpartment(Department derpartment) { this.derpartment = derpartment; } @Override public String toString() { // TODO Auto-generated method stub return "id="+this.id+" name="+this.name; } } 现在我们来定义部门实体 package vo.util.bean; import java.util.Map; /** * 部门类 * @author Administrator * */ public class Department { private int id; private String name; private Map<String,Employee> ems; public Map<String, Employee> getEms() { return ems; } public void setEms(Map<String, Employee> ems) { this.ems = ems; } 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; } } 这行是定义Map集合的 private Map<String,Employee> ems; 映射文件 <?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 package="vo.util.bean"> <class name="Department"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <!-- 配置一对多的映射关系 --> <!-- <set name="ems"> --> <!-- 关联关系的外键 --> <!-- <key column="depaer_id"/> --> <!-- 关联关系的实体类配置 --> <!-- <one-to-many class="Employee" /> </set> --> <map name="ems"> <key column="depaer_id"/> <map-key type="string" column="name"/> <one-to-many class="Employee"/> </map> </class> </hibernate-mapping> 分析 发现这跟List并没有太大的区别 其实map节点的里面字段属性意义都是一样的 就<map-key 这个节点有特殊之处 这是指定其键的 因为Map是以键值对的形式存在的 type是指定键的类型 当前指定为string类型 这个column是干什么用的呢?这个是指定 其键的值是以那个列为键的 当前是以员工的name这个列作为键存在的 测试类 package vo.util.test; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import org.hibernate.Session; import org.hibernate.Transaction; import vo.util.HibernateUtil; import vo.util.bean.Department; import vo.util.bean.Employee; public class OneToMany { /** * @param args */ public static void main(String[] args) { add(); query(1); } static Department add(){ Session session = null; Transaction tx = null; try{ session =HibernateUtil.getSession(); tx = session.beginTransaction(); //…你的代码save,delete,update,get… Department dpart=new Department(); dpart.setName("政企事业部"); Employee em1=new Employee(); em1.setName("员工李小仙"); em1.setDerpartment(dpart); Employee em2=new Employee(); em2.setName("员工张小三"); em2.setDerpartment(dpart); Map<String,Employee> ems=new HashMap<String, Employee>(); ems.put(em1.getName(), em1); ems.put(em2.getName(), em2); dpart.setEms(ems); session.save(dpart); session.save(em1); session.save(em2); tx.commit(); return dpart; }finally{ if(session != null)session.close(); } } static Department query(int id){ Session session=null; try{ session=HibernateUtil.getSession(); Department d=(Department)session.get(Department.class, id); System.out.println(d.getEms()); return d; }finally{ if(session != null)session.close(); } } } 通过输出发现:输出是键值对的形式输出的 end 完毕!
发表评论
-
二十六 Hibernate实践
2011-07-04 19:18 713不适合OLAP以查询分析数据为主的系统。适合OLTP联机事务处 ... -
二十五 SQL和命名查询
2011-07-04 19:17 1034SQL和命名查询 SQL查询 //根据sql语句查询 s ... -
二十四 拦截器与监听器
2011-07-04 19:14 947在保存 更新等操作的前 ... -
二十三 iterate查询与N+1次查询的问题
2011-07-04 19:13 771test.java view plaincopy to ... -
二十二 Hibernate映射文件配置
2011-07-04 19:12 874id 主键生成方式 incremen ... -
二十一 串讲Hibernate配置文件中的配置项
2011-07-04 19:11 861数据源配置 ## JNDI Datasource ... -
二十 悲观锁和乐观锁
2011-07-04 19:10 715为了避免对对象同步操作时候产生的数据不一致问题,我们对对象采用 ... -
十九 hibernate3之缓存
2011-07-04 19:09 901什么是缓存?现在我们来看一个模拟的缓存操作 模拟一个缓存例子 ... -
十八 一对一对象的懒加载
2011-07-04 17:59 727一对一对象的懒加载,对于主的一方,lazy是无效的,它在访问数 ... -
十七 懒加载
2011-07-04 17:58 722十七 懒加载 什么是hibe ... -
十六 继承映射
2011-07-04 17:56 480第一种 一个员工类它有两个子类,利用hibernate我们把 ... -
十五 cascade 级联操作与inverse表是否放弃维护关联关系
2011-07-04 17:54 848cascade 级联操作字段 Casade用来说明当对主对 ... -
十四 在hibernate中使用集合总结
2011-07-04 17:52 876集合映射(set, list, array,bag, map) ... -
十三 array数组形式的映射
2011-07-04 17:51 829数组其实跟List的集合映射没有多大的差别,当然它不可以使用b ... -
十一 集合映射 List集合
2011-07-04 17:47 1023十一 集合映射 set的 ... -
十 组件关联
2011-07-04 17:45 689组件关联 什么是组件关联呢?比如说一个用户,它的名称,有一 ... -
九 多对多关系 学生<--->老师的关系
2011-07-04 17:44 1222九 多对多关系 学生<--->老师的关系 多对多 ... -
八 一对一 用户与身份证的关系
2011-07-04 17:42 859八 一对一 用户与身份证的关系 设计用户实体 主实体 ... -
七 一对多关系 部门与员工的关系
2011-07-04 17:41 1126一对多 部门与员工的关系 相对于部门来说 一对多 根据先前 ... -
六 员工与部门——》多对以关系
2011-07-04 17:37 1017关联关系 多对一关系 员工与部门的关系 从员工角度 是 ...
相关推荐
在Hibernate的映射文件(.hbm.xml)中,我们通常使用`<set>`, `<list>`, `<map>`等标签来定义集合映射。每个标签都有对应的属性,例如: - `name`: 对象属性名。 - `table`: 所映射的数据库表名。 - `inverse`: ...
常见的集合映射类型有 Set、List、Array、Map 和 Bag 等,每种类型都有其特点和应用场景。 Set 集合映射 Set 集合是 Hibernate 中基础的集合类型,元素数据一般使用外键同主表关联。Set 集合非常适用于集合元素不...
本主题将深入探讨Hibernate集合映射与关联关系,包括"student与Score的Map集合关系"、"student与class的多对一"以及"一对多映射"的概念。 首先,让我们理解一下Hibernate中的集合映射。在关系型数据库中,一个实体...
在Java的持久化框架Hibernate中,集合映射是将数据库中的表关系映射到对象模型中的集合类,如List、Set、Map等。这允许我们在Java代码中操作对象集合,而Hibernate负责处理底层的SQL查询和数据存储。本文将深入探讨`...
这里的`<map>`元素定义了一个名为`preferences`的Map集合,`<key>`元素对应外键,`<map-key>`元素指定Map的键列和类型,`<element>`元素指定值列和类型。 总结: Hibernate集合映射是ORM的重要组成部分,它使得Java...
`<map-key>`用于映射集合中的键字段,通常在映射Map时使用。 5. **one-to-many** 和 **many-to-many**:这两个元素用于定义一对多和多对多关系。它们包含引用的实体类名和关联字段名。 6. **fetch**:这个属性用于...
Hibernate支持多种集合映射类型,包括List、Set、Map、Bag、Array等。它们之间的区别主要在于元素的唯一性、顺序性和映射到数据库的实现方式。例如,List和Array维护元素的插入顺序,而Set不允许重复元素;Map则...
Java集合框架主要包括两种类型的容器:集合(Collection)和映射(Map)。其中集合用于存储一组不重复的对象,而映射则用于存储键值对。 #### 二、集合(Collection) Java中的集合框架主要包括以下几种类型的集合...
在这个“hibernate中的集合映射范例程序”中,我们将深入探讨如何在Hibernate中进行集合映射,以及不同集合类型的应用场景。 首先,集合映射是Hibernate中处理一对多、多对多关系的核心机制。它允许我们将一个实体...
3. **Map**: Map集合用于存储键值对,`<map>`标签用来映射Map类型。它有`key`和`map-key`(或`index`)属性来分别指定键和值的映射列。 4. **Bag**: Bag是一个无序的集合,类似于Set,但允许重复元素。在Hibernate中...
Java中的Map映射机制是Java集合框架的重要组成部分,它提供了键值对的存储方式,使得可以通过键来查找和操作对应的值。Map接口是所有映射类的基础,它定义了多种方法来实现对键值对的操作。 Map接口的核心方法包括...
### 读取Excel文件将数据存入Map集合 在日常工作中,经常需要处理Excel文件,尤其是在数据统计、分析等场景中。本篇文章介绍了一个方法,该方法能够读取Excel文件并将其中的数据存储到Java中的`Map`集合里,便于...
Map集合是Java集合框架中的重要组成部分之一,主要用于存储键值对(key-value pairs)。它与Collection接口不同,Collection接口用于存储单个对象,而Map接口则是一次存储一对元素,即一个键和一个值。因此,Map集合...
Map集合由键值对组成,可以映射到具有两个外键关联的数据库表。在Hibernate中,使用`<map>`标签: ```xml <map name="studentBooks" table="STUDENT_BOOKS"> <map-key column="BOOK_NAME" type="string"/> ...
集合映射是Hibernate中一个非常关键的概念,它使得Java集合类如List、Set、Map等能够与数据库中的多对一、一对多、多对多关系对应起来。在这个主题中,我们将深入探讨Hibernate集合映射的各个方面。 首先,我们来看...
本文将详细介绍Java中Map集合的三种遍历方法及其应用场景、优缺点等,帮助读者更好地理解和掌握Map的使用技巧。 ### 一、Map简介 `Map`接口是Java集合框架的一部分,它提供了基于键值对的数据存储方式。常见的实现...
本文将深入探讨Hibernate中的关联关系、CRUD操作以及集合映射(基于注解的方式)。关联关系是数据库设计中的核心概念,而Hibernate通过注解使得这种关系在代码中得以体现,简化了开发工作。 ### Hibernate关联关系 ...
【Java Map 集合类简介】 在Java的`java.util`包中,集合类扮演着重要的角色,其中List和Map是最为常见的两种。List的实现例如ArrayList和Vector,它们都是可变大小的列表,适合存储和操作各种类型对象的序列。特别...