hibernate基础_5

原创 2005年05月17日 10:45:00

这次放上的是三个映射:list,map,set

之所以把这三个映射放在同一篇里,是因为它们有很多相同点。比如,它们的类中都有相应的字段来存储多于一个的同类信息;它们的描述符中类似字段的描述相近;用来存储的table都是分为两个等……

好,下面详细介绍各个映射的方法

  1. list
    list映射持久类的形式如下

    public class UploadUser_2{
        private int id;
        private String name;
        private List files = new ArrayList();
    }

    在这里,我们使用一个table来存储user的信息,用另一个table来存储files,两个table通过user的id来联接。

    通过files,我们可以为一个user存储多个文件,当然,这是有前提的。addFiles方法是这样的

    public void addFiles(int index, String name) {
       files.add(index, name);
    }

    我们可以通过一般形式的setFiles(*)对files进行存储,也可以通过user.getFiles().addFiles(*,*)来设置files的内容。两种方法的效果是相同的,前一个方法只是增加了一个引用。

    关键的描述符来了。在UploadUser_2.hbm.xml中,有关list的内容如下

    <list name= "files" table= "uploadfile_2" >
        <key column= "user_id" />
        <index column= "idx" type= "integer" />
        <element column= "filename" type= "string" not-null= "true" />
    </list >

    相信,这段代码是很容易看明白的吧。table指明了files存储的地方。key表示该table通过user_id与user的table的主键相联系。
  2. map
    map映射持久类的形式如下

    public class UploadUser {
        private int id;
        private String name;
        private Map files = new HashMap();
    }

    其他的详细描述同list映射。但是,须注意,map里面不允许同一个key对应多个value。

    同样,我们也提供了额外的addFiles方法

    public void addFiles(String name, String des) {
        files.put(name, des);
    }

    因此,这里也有两种设置files的办法。

    相应的描述如下

    <map name= "files" table= "uploadfile" >
        <key column= "user_id" />
        <index column= "filename" type= "string" />
        <element column= "filedes" type= "string" not-null= "false" />
    </map>

    这里就不再详述了。
  3. set
    set映射持久类的形式如下

    public class UploadUser_3 {
        private int id;
        private String name;
        private Set files = new HashSet();
    }

    限于Set类的方法,我们提供的addFiles方法有别于前两个映射

    public void addFiles(String fname) {
        files.add(fname);
    }

    它只有一个参数。但是注意,相同的fname只能被存储一次,这是由Set的特性决定的

    相应的描述符内容也较前两个映射小

    <set name= "files" table= "uploadfile_3" >
        <key column= "USER_ID" />
        <element type= "string" column= "FILEDES" not-null= "true" />
    </set>

好了,到此三种映射都已经介绍完毕。客户段中,我们只要创建相应的类并调用session.save(*)就可以了。存储当然也是采取联级,为几种映射的默认存储方法。

Hibernate基础知识(5)

一、多对多关联关系映射       以 学生Student选课Course为例。 1、实体类编写和多对多配置映射配置 学生类: package lsq.hibernate.manytomany; i...

Hibernate基础:快速入门(5):删除数据

数据库的操作增删改查,或者CRUD是最常见的操作。这篇文章中介绍删除数据的方法...

JAVA EE基础教程(5)hibernate的基本使用(视频笔记)

基本简介ORM的思想是讲对数据库的操作转化为对一个对象的操作。讲一个类对应为一个表,一条记录对应为一个表的行,对象的属性对应一列。这个和JDBC不一样,虽然读出和改变的都是对象,但是还是要调用upda...

hibernate--5.基础映射(字段)

1      抽象类/方法abstract—强制继承 1.1  概述          抽象就是看不懂的 抽象类:         abstract  class A{                ...

chapter5 使用Hibernate完成对象持久化

·                回顾 ·          在Struts中,循环显示List中的数据使用什么标签?   ·          如何使用MVC模式组织JavaWeb应用?  ...

hibernate学习5之one-to-many双向关联

一对多双向关联映射:  * 在一一端的集合上使用,在对方表中加入一个外键指向一一端  * 在多一端采用  Xml代码     "-//Hibernate/Hibernate...

使用Maven Hibernate5 之反向工程

在实际开发中,一般都是表结构先设计好,再实现代码,所以根据表结构生成数据库实体类比较常见。说不如做,行动吧...

Hibernate5 MSSql分页问题处理

1、前言 hibernate的分页查询,代码如下/** * 分页查询(适用于Easyui分页) * 局限:排序仅支持单表 * @param hql HQL 如:'from MyTable o'...

Spring 整合 Hibernate5 时的方式、引入关系映射文件的多种方式

相依为命 — 陈小春方式一spring配置文件 + hibernate.cfg.xml + 实体.hbm.xmlSpring 配置文件 ... ...

hibernate5(12)注解映射[4]一对一外键关联

在实际博客网站中,文章内容的数据量非常多,它会影响我们检索文章其它数据的时间,如查询发布时间、标题、类别的等。这个时候,我们可以尝试将文章内容存在另一张表中,然后建立起文章——文章内容的一对一映射一对...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate基础_5
举报原因:
原因补充:

(最多只允许输入30个字)