`
java心如止水
  • 浏览: 32275 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Hibernate三种容器(List,Set,Map)映射技术之Map映射

阅读更多

 

 环境: eclipse+myeclipse+mysql.

(1) 建表脚本

--刪除表
drop table if exists phone  ;
drop table if exists person ;


--新建表
create table person
(
 id int not null AUTO_INCREMENT primary key ,
 name  varchar(20) ,
 age int
) ;

create table phone
(
 id int ,
 name varchar(20) not null,
 numbers varchar(11) not null ,
 foreign key (id) references person(id) on delete cascade
) ;

--提交
commit ;

(2) Person.java的编写.

package org.hibernate.mapDemo.vo;

import java.util.Map;

public class Person {
 private int id ;
 private String name ;
 private int age ;
 private Map phone;
 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 int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 public Map getPhone() {
  return phone;
 }
 public void setPhone(Map phone) {
  this.phone = phone;
 }
}


(3) Person.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="org.hibernate.mapDemo.vo.Person" table="person" >
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="increment" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="name" length="20" />
        </property>
        <property name="age" type="java.lang.Integer">
            <column name="age" />
        </property>
        <map name="phone" table="phone">
         <key column="id"></key>
         <index column="name" type="java.lang.String"></index>
         <element type="java.lang.String">
          <column name="numbers"></column>
         </element>
        </map>
    </class>
</hibernate-mapping>

<4> 測試類的編寫.

package org.hibernate.mapDemo.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
import org.hibernate.mapDemo.vo.Person;

public class PersonDao {
 private Session session ;
 public PersonDao()
 {
  session = new Configuration().configure()
     .buildSessionFactory().openSession() ;
 }
 
 
 
 public void insert(Person p)
 {
  session.save(p) ;
  session.beginTransaction().commit() ;
  session.close() ;
 }
 
 public Person findbyid(int id)
 {
  String hql = "from Person as p where p.id=?" ;
  Query q = session.createQuery(hql) ;
  q.setInteger(0, id) ;
  List l = q.list() ;
  if(l.size()>0)
   return (Person)l.get(0) ;
  return null ;
 }
 
 public void update(Person p)
 {
  session.update(p) ;
  session.beginTransaction().commit() ;
  session.close() ;
 }
 
 public static void main(String[] args)
 {
  PersonDao pd = new PersonDao() ;
//插入  
//  Person p = new Person() ;
//  p.setName("zhangsan") ;
//  p.setAge(10) ;
//  p.setPhone(new HashMap()) ;
//  Map m = p.getPhone() ;
//  m.put("lisi", "123") ;
//  m.put("lisi", "123") ;
//  m.put("lisi", "124") ;
//  m.put("wangwu", "123") ;
//  m.put("wangwu", "126") ;
//  p.setPhone(m) ;
//  pd.insert(p) ;

//更新  
  Person p = pd.findbyid(1) ;
  p.setName("lisi") ;
  p.setAge(1) ;
  
  p.getPhone().put("lisi", "lis3i") ;
  p.getPhone().put("lisis2", "lisi") ;
  
  pd.update(p) ;
  
 }
 
}

注:此處免去了Hibernate.cfg.xml的編寫.

分享到:
评论
2 楼 java心如止水 2008-06-05  
学好这三种映射关系才能更好运用表的一对一,一对多,多对多
1 楼 javadev 2008-06-05  
我最常用的是SET映射,List偶尔也用,但感觉比set配置麻烦点,但map不常用。

相关推荐

    Hibernate容器映射技术(Set、List、Map)

    Hibernate容器映射技术(Set、List、Map)

    hibernate中容器映射技术

    在Java持久化框架Hibernate中,容器映射技术是将Java集合类(如Set、Map、List等)与数据库中的关联关系进行映射的一种方法。这种技术使得对象之间的复杂关系能够被有效地存储和检索,增强了数据操作的灵活性。下面...

    Hibernate常见集合映射(Set,List_Array,Map,Bag)

    常见的集合映射类型有 Set、List、Array、Map 和 Bag 等,每种类型都有其特点和应用场景。 Set 集合映射 Set 集合是 Hibernate 中基础的集合类型,元素数据一般使用外键同主表关联。Set 集合非常适用于集合元素不...

    hibernate map 集合映射

    Map映射 Map集合映射比较特殊,因为它的键和值都可以是任何对象。键通常映射到数据库的某个字段,而值则映射到另一个对象。以下是一个例子: ```xml &lt;!-- User.hbm.xml --&gt; &lt;map name="properties" table="USER_...

    hibernate set 集合映射

    在Java的持久化框架Hibernate中,集合映射是将数据库中的表关系映射到对象模型中的集合类,如List、Set、Map等。这允许我们在Java代码中操作对象集合,而Hibernate负责处理底层的SQL查询和数据存储。本文将深入探讨`...

    hibernate集合的映射

    本文将深入探讨Hibernate中的四种主要集合映射类型:Set、List、Array和Map,以及它们在实际开发中的应用场景和配置。 一、Set集合映射 Set集合映射是最常见的映射类型,它不允许重复元素。在Hibernate中,Set通常...

    hibernate 中的 set map list 代码

    总的来说,Hibernate通过Set、List和Map的映射,使得我们可以灵活地处理复杂的数据关系,实现对象模型与数据库表的无缝对接。理解并熟练运用这些映射技术,对于开发高效、稳定的Java持久化应用至关重要。在实际项目...

    Hibernate中List信息的配置

    Map映射是另一种重要的集合映射方式,它可以处理一对一、一对多乃至多对多的关系,其中每个元素由键值对组成。Map在Hibernate中的映射较为复杂,涉及`&lt;map&gt;`、`&lt;key&gt;`、`&lt;index&gt;`和`&lt;element&gt;`等多个标签。`&lt;key&gt;`...

    JAVA数据类型与Hibernate的类型映射

    对于数组和集合,如List、Set、Map等,Hibernate提供了ListType、SetType、MapType等映射类型,可以根据实际需求选择。 此外,自定义对象的映射是Hibernate映射中的一个重要部分。通过在实体类上使用@Entity注解,...

    Hibernate集合映射与关联关系

    在Hibernate中,我们可以使用集合类(如List、Set、Map等)来映射这些关系。例如,一个学生可以有多次成绩记录,这就构成了一个学生到成绩的映射关系,通常我们使用Map来表示这种关系,因为Map能确保每个学生都有...

    [原]Hibernate集合映射

    Hibernate支持多种集合映射类型,包括List、Set、Map、Bag、Array等。它们之间的区别主要在于元素的唯一性、顺序性和映射到数据库的实现方式。例如,List和Array维护元素的插入顺序,而Set不允许重复元素;Map则...

    hibernate的多种映射关系

    Hibernate 支持多种集合类型,如 List、Set、Map 等,它们可以作为一对多或多对多关系的容器。`@ElementCollection` 用于映射非实体类属性的集合,而 `@OrderColumn` 可以指定集合元素的排序方式。 6. **级联操作 ...

    hibernate中的集合映射范例程序

    在Java中,常见的集合类型有List、Set、Map等,它们在Hibernate中都有对应的映射方式。 1. **List映射**:List是最基础的集合类型,它允许元素重复并保持插入顺序。在Hibernate中,我们可以使用`&lt;list&gt;`标签来映射...

    Hibernate映射配置实例大全(详细总结)

    例如,`&lt;set&gt;`用于映射Java集合到数据库的表,`&lt;list&gt;`映射到有序的列表,`&lt;map&gt;`映射到键值对,`&lt;bag&gt;`则用于无序集合。每个集合映射都可以配置元素类型、排序规则以及关联的表。 在配置中,我们还需要关注懒加载...

    常用 Hibernate 映射配置说明.doc

    通过`set`、`list`、`map`等集合节点实现一对多的关联映射,其中`inverse`属性用于控制关联关系的维护方。 #### 7. 多对一关联 `many-to-one`节点表示多对一的关系,通常涉及外键引用。 #### 8. 多对多关联 `...

    hibernate 集合映射

    本文将深入讲解Hibernate中的集合映射,包括set、list、map和bag的配置与使用。 1. **Set集合映射** Set集合不允许有重复元素,因此在Hibernate中,set映射通常用于表示唯一性关系,如一对多关系。在Hibernate映射...

    Hibernate映射解析 七种映射关系 后端 - Java.zip

    Hibernate支持多种集合类型,如List、Set、Map等,它们对应不同的数据库表结构。比如,`@ElementCollection`用于非关联的简单类型的集合,而`@OneToMany`和`@ManyToMany`则用于关联的实体类型的集合。 以上就是...

    SSH增删改查使用Map容器

    - 对于大量的数据,Map的查找效率可能不如List或Set。 - 键的哈希冲突可能影响性能。 - 键值对的顺序可能不固定,不适合需要保持插入顺序的场景。 总结来说,SSH框架与Map容器的结合使得数据管理更为便捷,尤其是在...

Global site tag (gtag.js) - Google Analytics