`
esffor
  • 浏览: 1370755 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate集合映射之List

阅读更多

使用List和Map有很多共性,比如说不能再1方设置inverse="true"

不同的是,list可以保留元素的顺序,这个使通过一个idx字段来实现的,比如说Team和Student的1对多关系,我们给team加入学生的时候,需要记录加入的顺序,这时候我们可以使用list方式,并在student表中新增加一个idx字段(但在Student实体类中不定义idx属性) 

数据库结构:

 

create table teamList (id varchar(32),teamname varchar(32));
create table studentList (id varchar(32),cardid varchar(32),name varchar(32),age int,description varchar(32), team_id varchar(32),idx int);

 

POJO

 

package Collection.List;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class Team ...{
   
private String id;
   
private String teamname;
   
private List students=new ArrayList();
public String getId() ...{
    
return id;
}

public void setId(String id) ...{
    
this.id = id;
}

public String getTeamname() ...{
    
return teamname;
}

public void setTeamname(String teamname) ...{
    
this.teamname = teamname;
}

public List getStudents() ...{
    
return students;
}

public void setStudents(List students) ...{
    
this.students = students;
}


}




package Collection.List;

public class Student ...{
  
private String id;
  
private String name;
  
private String description;
  
private int age;
  
private String cardid;
  
private Team team;
public String getId() ...{
    
return id;
}

public void setId(String id) ...{
    
this.id = id;
}

public String getName() ...{
    
return name;
}

public void setName(String name) ...{
    
this.name = name;
}

public String getDescription() ...{
    
return description;
}

public void setDescription(String description) ...{
    
this.description = description;
}

public int getAge() ...{
    
return age;
}

public void setAge(int age) ...{
    
this.age = age;
}

public String getCardid() ...{
    
return cardid;
}

public void setCardid(String cardid) ...{
    
this.cardid = cardid;
}

public Team getTeam() ...{
    
return team;
}

public void setTeam(Team team) ...{
    
this.team = team;
}

}

 

Team.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 - Hibernate Tools
-->
<hibernate-mapping>
<class name="Collection.List.Team" table="teamList" >
    
<id name="id" unsaved-value="null">
      
<generator class="uuid.hex"></generator>
    
</id>
    
<property name="teamname" type="string" column="teamname"></property>
    
<!--由于index需要team来维护,所以,使用list表示1对多时候,不能再1方设置inverse="true"-->
    
<list name="students" table="studentList" cascade="all" >
      
<key column="team_id"></key>
      
<!-- index代表key,element(或one-to-many)代表value-->
      
<!-- 这里用cardid作为key,具体的student实例作为value -->
      
<index column="idx" type="int"></index>
      
<one-to-many class="Collection.List.Student"/>
    
</list>
</class>

</hibernate-mapping>

 

Student.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 - Hibernate Tools
-->
<hibernate-mapping>
<class name="Collection.List.Student" table="studentList" >
    
<id name="id" unsaved-value="null">
      
<generator class="uuid.hex"></generator>
    
</id>
    
<property name="cardid" type="string" column="cardid"></property>
    
<property name="name" type="string" column="name"></property>
    
<property name="age" type="int" column="age"></property>
    
<property name="description" type="string" column="description"></property> 
    
<many-to-one name="team" 
                 column
="team_id"
                 class
="Collection.List.Team" 
                 cascade
="none" 
                 fetch
="join">
    
</many-to-one>
</class>

</hibernate-mapping>

 

Hibernate.cfg.xml

 

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>

<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

<session-factory>
    
<property name="connection.username">root</property>
    
<property name="connection.url">
        jdbc:mysql://localhost:3306/schoolproject?characterEncoding=gb2312
&amp;useUnicode=true
    
</property>
    
<property name="dialect">
        org.hibernate.dialect.MySQLDialect
    
</property>
    
<property name="myeclipse.connection.profile">mysql</property>
    
<property&n
分享到:
评论

相关推荐

    Hibernate集合映射与关联关系

    本主题将深入探讨Hibernate集合映射与关联关系,包括"student与Score的Map集合关系"、"student与class的多对一"以及"一对多映射"的概念。 首先,让我们理解一下Hibernate中的集合映射。在关系型数据库中,一个实体...

    [原]Hibernate集合映射

    《Hibernate集合映射详解》 Hibernate作为Java领域中的一款强大持久化框架,其核心功能之一就是对象关系映射(ORM),使得开发者可以方便地在Java对象与数据库表之间进行交互。其中,集合映射是Hibernate中非常关键...

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

    Hibernate 集合映射详解 Hibernate 是一个流行的Java持久化框架,它提供了多种集合映射类型,以满足不同的业务需求。在 Hibernate 中,集合映射是指将 Java 集合类型与数据库表之间的映射关系。常见的集合映射类型...

    hibernate集合的映射

    Hibernate集合映射是ORM的重要组成部分,它使得Java对象和数据库表之间的关系更加直观和灵活。根据实际需求选择合适的集合类型,可以有效地处理复杂的数据关系。在实际应用中,应结合业务场景、数据特性以及性能需求...

    Hibernate映射集合属性List

    这里的"List"是Java集合框架中的一个接口,用于存储一组有序的元素,而在Hibernate中,它常用来映射数据库中的数组、列表或集合类型的数据。本文将详细探讨如何使用Hibernate映射集合属性List,以及如何让Hibernate...

    hibernate map 集合映射

    Hibernate集合映射的基本概念 集合映射是Hibernate中一个核心的概念,它允许我们将数据库表中的多对一(OneToMany)、一对多(ManyToOne)、多对多(ManyToMany)等关系映射到Java对象的集合属性上。通过这种方式...

    hibernate list集合映射

    **标题:“Hibernate List集合映射”** 在Java的持久化框架Hibernate中,集合映射是将数据库中的表与Java对象的集合属性关联的过程。List集合映射是其中常见的一种方式,它允许我们将数据库中的一组相关记录映射到...

    hibernate set 集合映射

    ### Hibernate集合映射基础 1. **集合类型**:Hibernate支持多种集合类型映射,如Set、List、ArrayList、LinkedList、Map等。Set是最常见的集合映射类型,它不允许重复元素,与数据库中的唯一约束相对应。 2. **...

    Hibernate集合映射

    **标题:Hibernate集合映射** **正文:** Hibernate作为Java领域中最流行的ORM(对象关系映射)框架之一,它的核心功能之一就是实现Java对象与数据库表之间的映射。集合映射是Hibernate中一个非常关键的概念,它...

    hibernate bag 集合映射

    在Hibernate中,集合映射是指将数据库中的表与Java集合对象(如List、Set等)进行关联,方便对一组相关数据进行操作。 "bag"是Hibernate中的一种集合类型,表示无序的、可重复的对象集合。在数据库层面,这通常对应...

    hibernate关联映射实例

    这种映射可以通过集合类型如List、Set等来表示子项的集合。 2. **多对多关联映射**: 多对多关联是两个实体之间都可以有多个匹配项的情况,比如学生和课程的关系。在Hibernate中,我们可以使用`@ManyToMany`注解来...

    hibernate 集合映射

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

    JAVA培训-HIBERNATE的集合映射.doc

    ### JAVA培训-HIBERNATE的集合映射 #### 概述 本文主要聚焦于Hibernate框架下的集合映射机制,特别是针对`Set`、`List`、`Array`、`Map`、`Bag`五种集合...希望本文能帮助读者更好地理解和应用Hibernate集合映射技术。

    Hibernate教程16_集合映射

    在Java的持久化框架Hibernate中,集合映射是至关重要的一个概念,它允许我们将数据库中的表与Java对象的集合属性进行关联。本教程主要讲解了如何在Hibernate中配置和使用集合映射,以便更好地理解和应用这个强大的...

    hibernate中的集合映射范例程序

    在这个“hibernate中的集合映射范例程序”中,我们将深入探讨如何在Hibernate中进行集合映射,以及不同集合类型的应用场景。 首先,集合映射是Hibernate中处理一对多、多对多关系的核心机制。它允许我们将一个实体...

    hibernate array 数组映射

    在Java的持久化框架Hibernate中,数组映射是一种常见的数据模型转换方式,它允许我们将数据库中的数据以数组的形式存储在Java对象中。本篇将详细探讨`hibernate array 数组映射`的相关知识点,包括其原理、配置、...

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

    综上所述,"Hibernate映射配置实例大全"涵盖的内容广泛,包括基本的配置文件设置、实体类的XML和注解映射、集合映射、加载策略、事务管理和缓存配置等。通过深入学习和实践这些实例,开发者可以熟练地运用Hibernate...

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

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

Global site tag (gtag.js) - Google Analytics