Set无序 元素不可重复

List有序 元素可重复

Bag无序 元素可重复

Map键值对

Student:

package model;

import java.util.Set;

public class Student {
    private long id;
    private String name;
    private Set<String> images;
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Set<String> getImages() {
        return images;
    }
    public void setImages(Set<String> images) {
        this.images = images;
    }
    
    
}

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="model">

<class name="Student" table="t_student">
        <id name="id" column="stuId">
            <generator class="native"></generator>
        </id>
        
        <property name="name" column="stuName"></property>
        
        <set name="images" table="t_image">
            <key column="studentId"></key>
            <element column="imageName" type="string"></element>
        </set>
    </class>

</hibernate-mapping>

Student2:

package model;

import java.util.List;

public class Student2 {
    private long id;
    private String name;
    private List<String> images;
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<String> getImages() {
        return images;
    }
    public void setImages(List<String> images) {
        this.images = images;
    }
    
    
    
}

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="model">

<class name="Student2" table="t_student">
        <id name="id" column="stuId">
            <generator class="native"></generator>
        </id>
        
        <property name="name" column="stuName"></property>
        
        <list name="images" table="t_image2">
            <key column="studentId"></key>
            <list-index column="imageIndex"></list-index>
            <element column="imageName" type="string"></element>
        </list>
    </class>

</hibernate-mapping>

Student3:

package model;

import java.util.List;

public class Student3 {
    private long id;
    private String name;
    private List<String> images;
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<String> getImages() {
        return images;
    }
    public void setImages(List<String> images) {
        this.images = images;
    }
    
    
    
}

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="model">

<class name="Student3" table="t_student">
        <id name="id" column="stuId">
            <generator class="native"></generator>
        </id>
        
        <property name="name" column="stuName"></property>
        
        <idbag name="images" table="t_image3">
            <collection-id type="long" column="imageId">
                <generator class="increment"></generator>
            </collection-id>
            <key column="studentId"></key>
            <element column="imageName" type="string"></element>
        </idbag>
    </class>

</hibernate-mapping>

Student4:

package model;

import java.util.Map;

public class Student4 {
    private long id;
    private String name;
    private Map<String,String>images;
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Map<String, String> getImages() {
        return images;
    }
    public void setImages(Map<String, String> images) {
        this.images = images;
    }
    
    
}

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="model">

<class name="Student4" table="t_student">
        <id name="id" column="stuId">
            <generator class="native"></generator>
        </id>
        
        <property name="name" column="stuName"></property>
        
        <map name="images" table="t_image4">
            <key column="studentId"></key>
            <map-key type="string" column="imageKey"></map-key>
            <element column="imageName" type="string"></element>
        </map>
    </class>

</hibernate-mapping>

StudentTest:

package service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import util.HibernateUtil;
import model.Student;
import model.Student2;
import model.Student3;
import model.Student4;

public class StudentTest {

SessionFactory sessionfactory=HibernateUtil.getSessionFactory();//获取Session工厂
    private Session session;
    
    @Before
    public void setUp() throws Exception {
        session=sessionfactory.openSession();//生成一个新的session
        session.beginTransaction();//开启事务
    }

@After
    public void tearDown() throws Exception {
        session.getTransaction().commit();//提交事务
        session.close();//关闭session
    }

@Test
    public void testSetSave(){
        Set<String> imageSet=new HashSet<String>();
        imageSet.add("image1.png");
        imageSet.add("image2.png");
        imageSet.add("image3.png");
        imageSet.add("image4.png");
        Student s1=new Student();
        s1.setImages(imageSet);
        session.save(s1);
    }
    
    @Test
    public void testSetFetch(){
        Student student=(Student) session.get(Student.class,Long.valueOf(1));
        Iterator it=student.getImages().iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
    
    @Test
    public void testListSave(){
        List<String> imageList=new ArrayList<String>();
        imageList.add("image1.png");
        imageList.add("image2.png");
        imageList.add("image3.png");
        imageList.add("image4.png");
        
        Student2 s2=new Student2();
        s2.setImages(imageList);
        session.save(s2);
    }
    
    @Test
    public void testListFetch(){
        Student2 student2=(Student2) session.get(Student2.class,Long.valueOf(2));
        Iterator it=student2.getImages().iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
    
    @Test
    public void testBagSave(){
        List<String> imageList=new ArrayList<String>();
        imageList.add("image1.png");
        imageList.add("image2.png");
        imageList.add("image3.png");
        imageList.add("image4.png");
        
        Student3 s3=new Student3();
        s3.setImages(imageList);
        session.save(s3);
    }
    
    @Test
    public void testBagFetch(){
        Student3 student3=(Student3) session.get(Student3.class,Long.valueOf(3));
        Iterator it=student3.getImages().iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
    
    @Test
    public void testMapSave(){
        Map<String,String>imageMap=new HashMap<String,String>();
        imageMap.put("i1","image1.png");
        imageMap.put("i2","image2.png");
        imageMap.put("i3","image3.png");
        imageMap.put("i4","image4.png");
        
        Student4 s4=new Student4();
        s4.setImages(imageMap);
        session.save(s4);
    }
    
    @Test
    public void testMapFetch(){
        Student4 student4=(Student4) session.get(Student4.class,Long.valueOf(4));
        Map<String,String>imageMap=student4.getImages();
        Set keys=imageMap.keySet();
        Iterator it=keys.iterator();
        while(it.hasNext()){
            String key=(String) it.next();
            System.out.println(key+":"+imageMap.get(key));
        }
    }
}

hibernate集合类型映射的更多相关文章

  1. [hibernate]基本值类型映射之日期类型

    hibernate基本值类型映射中日期类型支持date,time,timestamp这三个选项,其中 date:对应数据库中的date类型,表示只显示日期 time:对应数据库中的time类型,表示只 ...

  2. hibernate实体类型映射文件

    1.通过写hibernate映射文件.实体类型转换为数据库中的表 据实体类型而写的. 实体类型User.java package cn.wwh.www.hibernate.dd.property; i ...

  3. hibernate基本类型映射

    model包: Book.java: package model; import java.sql.Blob;import java.util.Date; public class Book {   ...

  4. Hibernate O/R 映射

    O/R 映射 目前为止我们已经通过应用 Hibernate 见识过十分基础的 O/R 映射了,但是还有三个更加重要的有关映射的话题需要我们更详细的探讨.这三个话题是集合的映射,实体类之间的关联映射以及 ...

  5. Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)

    Set类型的使用: <hibernate-mapping package="cn.model"> <class name="Department&quo ...

  6. hibernate集合映射inverse和cascade详解

    hibernate集合映射inverse和cascade详解   1.到底在哪用cascade="..."? cascade属性并不是多对多关系一定要用的,有了它只是让我们在插入或 ...

  7. Hibernate 集合映射 一对多多对一 inverse属性 + cascade级联属性 多对多 一对一 关系映射

    1 . 集合映射 需求:购物商城,用户有多个地址. // javabean设计 // javabean设计 public class User { private int userId; privat ...

  8. Hibernate集合映射

    可以在Hibernate中映射持久类的集合元素. 您需要从以下类型之一声明持久类中的集合类型: java.util.List java.util.Set java.util.SortedSet jav ...

  9. (转)Hibernate框架基础——映射集合属性

    http://blog.csdn.net/yerenyuan_pku/article/details/52745486 集合映射 集合属性大致有两种: 单纯的集合属性,如像List.Set或数组等集合 ...

随机推荐

  1. BZOJ1008 /乘法原理+快速幂 解题报告

    1008: [HNOI2008]越狱 Description 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生 ...

  2. .net winform程序下使用firefox作为Web浏览器

    在winform程序中,要在程序中展示一个web页面,最常用的就是.net自带的webbrowser,但是大家都知道它是IE,也知道IE是有多么强(er)大(bi).而且微软已经宣布了IE的死亡... ...

  3. Gradle学习系列之九——自定义Task类型

    在本系列的上篇文章中,我们学习了多Project构建,在本篇文章中,我们将学到如何自定义Task类型. 请通过以下方式下载本系列文章的Github示例代码: git clone https://git ...

  4. Array 数组常用方法

    (1)基本的数组方法 1.join() Array.join()方法将数组中所有元素都转化为字符串并连接在一起,返回最后生成的字符串.可以自己指定分隔的符号,如果不指定,默认使用逗号 var arr ...

  5. meta元素常用属性整理

    感谢菜鸟教程 参考资料:http://www.runoob.com/w3cnote/meta.html

  6. .Net实现微信公众平台开发接口(三) 之 “信息回复”

    对于每一个POST请求,开发者在响应包(Get)中返回特定XML结构,对该消息进行响应(现支持回复文本.图片.图文.语音.视频.音乐).请注意,回复图片等多媒体消息时需要预先上传多媒体文件到微信服务器 ...

  7. css中visiblity和display异同

    visiblity 是设置元素的可见性,即可见 / 隐藏:隐藏后元素所占有位置保留: display 是设置元素按什么样的方式来显示,是按块显示,显示成一条线的形式,显示为“消失”等等,当displa ...

  8. WPF后台设置xaml控件的样式System.Windows.Style

    WPF后台设置xaml控件的样式System.Windows.Style 摘-自 :感谢 作者: IT小兵   http://3w.suchso.com/projecteac-tual/wpf-zhi ...

  9. svn的管理与维护要点—纯手工编写

    由于在公司要维护阿里云的linux服务器,我们的svn服务器就安在阿里云上面.所以经常会涉及到svn的维护操作.离职的时候编写交接文档,刚好有充足的时间写一篇说明介绍,此说明纯原创,不是从网上复制,手 ...

  10. 【iOS】Quartz2D图形上下文

      一.绘图的完整过程 程序启动,显示自定义的view.当程序第一次显示在我们眼前的时候,程序会调用drawRect:方法,在里面获取了图形上下文(在内存中拥有了),然后利用图形上下文保存绘图信息,可 ...