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基础--Hibernate(你必须要懂得基础)

01_Hibernate概述 作者: 风离紫竹--tryzq521@126.com 1.Hibernate是一款工作在持久化层的大型、开源、免费的ORM框架。 2.持久化 ...
  • u011200604
  • u011200604
  • 2016年06月17日 00:01
  • 3843

Hibernate自学详细笔记

Hibernate详细自学笔记,初学者快来看看吧!!!!
  • wangyang1354
  • wangyang1354
  • 2015年08月31日 21:23
  • 1280

Spring和Hibernate的注解整合 hibernate3和hibernate4/5的区别

现在,ssh框架中注解的使用已经非常普遍了,在此我介绍一下spring整合hibernate注解时的配置: hibernate和spring的注解方式请网上搜索。 当你分别把spring和hibern...
  • jintaohahahaha
  • jintaohahahaha
  • 2016年10月19日 09:33
  • 4395

Hibernate底层技术简介 CGLIB

    从可以看到,基于ASM的开发很复杂,需要了解JVM的底层编码。CGLIB以ASM为基础, 对ASM的功能进行了扩展和封装,提供了更友好的API,部分通用的模版和高级的功能实现。CGLIB的具体...
  • nomad2
  • nomad2
  • 2007年01月21日 12:16
  • 3852

Hibernate5总结及新特性

1. 明确Hibernate是一个实现了ORM思想的框架,它封装了JDBC,是程序员可以用对象编程思想来操作数据库。 2. 明确ORM(对象关系映射)是一种思想,JPA(Java Persistenc...
  • elementf
  • elementf
  • 2017年06月09日 14:13
  • 592

Hibernate学习笔记(十)Hibernate 高级配置

一:配置数据库连接池 反问数据库,需要不断的创建和释放连接,假如访问量大的话,效率比较低级,服务器消耗大; 使用数据库连接池,我们可以根据实际项目的情况,定义连接池的连接个数,从而可以实现从连接池...
  • z956281507
  • z956281507
  • 2017年07月05日 16:43
  • 105

hibernate5(1)新特性展示

在hibernate5中,有了一些新的变动: - 新引导 API - Spatial/GIS 支持 - Java 8 支持 - 扩展 AUTO id 生成支持 - 命名策略分离 - 属性转...
  • qwe6112071
  • qwe6112071
  • 2016年03月30日 01:02
  • 9865

hibernate快速入门案例

开发流程 1.创建一个项目 2.画出简单的项目框架图 3.引入hibernate开发包(http://www.hibernate.org) hibernate开发方式的三种方式: 1由Domain...
  • lightsu_1029
  • lightsu_1029
  • 2016年02月23日 21:54
  • 756

Hibernate5.x 基本开发

简介:  Hibernate 不仅仅管理Java类到数据库表的映射(包括Java数据类型到SQL数据类型的映射),还提供数据查询和获取数据的方法,可以大幅度减少开发时人工使用SQL和JDBC处理数据的...
  • fanfan4569
  • fanfan4569
  • 2016年11月06日 15:43
  • 1815

hibernate5(2)初入门配置实例

入门实例:向数据库插入一个对象1. 第一步需要引入我们的jar包,推荐使用maven管理项目,直接在pom.xml中添加 UTF-8 5.1.0.Final...
  • qwe6112071
  • qwe6112071
  • 2016年03月30日 01:08
  • 18603
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate基础_5
举报原因:
原因补充:

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