hibernate基础_7

原创 2005年05月20日 17:42:00

同一对多映射相对应,hibernate也提供多对一的映射。

为了实现多对一映射,我构建了下面两个样例类

public class Resident2 {
    private int id;
    private String name;
    private Room2 room;
}

public class Room2 {
    private int roomNum;
    private String address;
}

可以看到,这里Resident2同Room2是多对一的关系,而这种关系是通过在每一个Resident2对象中持有一个Room2的引用来实现的。这里,用到的数据表同"hibernate基础_6"中用到的相同。

Room.hbm.xml描述符很简单

<id name= "roomNum" column= "roomNum" unsaved-value= "0" >
      <generator class= "increment" />
      <!--why must be increment-->
</id>

唯一值得注意的是unsaved-value= "0" 这句,由于要实现联级操作,所以必须得对Room的id赋值。至于为什么赋为0,大家可以参考前面的hibernate基础。

Resident.hbm.xml就比较复杂了

<many-to-one name= "room"
                     column= "roomNum"
                     class= "manytoone.Room2"
                     cascade= "all" />

其实复杂也就是多出了这么一句话。cascade说明我们需要对该映射进行联级操作。至于谁是主操作方,可以通过inverse来说明。这里没有写出,因为狠明显是要操作Resident2来实现对Room2的存储与更新。如果要写,加入inverse= "false" ,即代表Resident2为主操作方。

其他的属性描述就不再冗述了

在客户端,我们如此调用

Room2 r1 = new Room2();
r1.setAddress("minhang.sjtu.D23");

Resident2 res1 = new Resident2();
res1.setId(120);
res1.setName("D");
res1.setRoom(r1);

//res2, res3的声明类似于res1

session.save(res1);
session.save(res2);
session.save(res3);

及实现了联级存储。相信有了"hibernate基础_6"作为参考,这篇文章应该不会很难理解

不过,同"hibernate基础_6",我同样有个问题,就是Room2的id为什么必须是increment才可以联级存储成功(在我的机器上是这样的),这样局限性太大了吧。肯定是我哪里没弄好,还请了解的达人给我留个言,解答一下。

Hibernate基础知识(7)

一、Hibernate注解应用 1、 使用注解配置 PO对象        @Entity 实体类       @Table 生成目标表       @Id 主键       @Genera...

Hibernate基础:快速入门(7):查询数据

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

Hibernate的关联映射(7)-双向1-1关联

双向1-1关联 双向1-1关联需要修改两端的持久化代码,让两个持久化类都增加引用关联实体的属性,并为该属性提供setter和getter方法; -------------------------...
  • an_2016
  • an_2016
  • 2016年07月14日 21:46
  • 176

SSH进阶(7)——Hibernate使用EHCache进行二级缓存

二级缓存也称为进程级的缓存或SessionFactory级的缓存,二级缓存可以被所有的session共享。二级缓存的生命周期和SessionFactory的生命周期一致,SessionFactory可...

chapter7 Hibernate查询

回顾 写出下面两个类的Hibernate配置文件,注意关联的配置 预习检查 ·                    Hibernate支持哪两种查询? ·                  ...

hibernate7-10

2 3 4 5 6 7 8 9 10 11 12 131更新一个持久化对象,不需要显示调用update方法,session.commit时,会先flush 2更新一个游离状态的...

Jboss7上+maven搭建struts2+spring3+hibernate3完整能运行

今天在家本想学了一段时间的maven之后,有xiang

identifier of an instance of com.you.hibernate.model.TStudentInfo was altered from 6 to 7

1、错误描述Exception in thread "main" org.hibernate.HibernateException: identifier of an instance of com....

Hibernate学习笔记7--关联关系之多对一

关系映射 .多对一(Employee-Department) 1.建表示在员工表中添加一个外键 表示Employee-Department之间的多对一的关系,可以在Employee中建一个dep...
  • Hollboy
  • Hollboy
  • 2013年05月25日 23:17
  • 1763

Hibernate3.2(7):延迟加载

我们看看temp库里的user表里的数据: 新建一个工程,取名hibernate3.2,添加Hibernate支持(jar包,HibernateSessionFactory.java和hib...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate基础_7
举报原因:
原因补充:

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