Hibernate中的基本映射和多对一关联映射

    Hibernate最核心的思想就是面向对象,最直接的体现方式就是映射文件,本篇博客介绍Hibernate中关于实体与关系的几种映射方式。

 一、基本映射:

    这种映射是最简单的映射,在映射文件中采用<class>标签表示。<class>标签中的name属性是实体的包路径,可以使用table属性设置为表的名称。实体的主键采用<id>标签,普通属性采用<property>标签映射,其中可以使用column属性重新修改属性在数据库表中的字段名称。

<hibernate-mapping package="com.bjpowernode.hibernate">
	<class name="User1" table="t_user1">
		<id name="id" column="user_id" length="32" access="field">
			<generator class="uuid"/>
		</id>
		<property name="name" length="30" unique="true" not-null="true"/>
		<property name="password"/>
		<property name="createTime" type="date" column="create_time"/>
		<property name="expireTime"/>
	</class>
</hibernate-mapping>

另外这里实体的设计需要注意:

         1、实现无参的默认构造函数

         2、提供一个标识

         3、建议不要使用final修饰实体类

         4、建议为实体类生成getter和setter方法

  二、多对一关联映射:

   在数据库中就存在多对一的关系,在Hibernate中自然也存在多对一的关系,如下图所示:

    一个用户只能属于一个组,而一个组确可以有多个用户,再比如职工和部门,一个职工只能属于一个部门,一个部门确可以有多个职工。在数据库设计中是在多的一端加入外键,与一的一端建立联系,在Hibernate中同样也是如此,编写的方式就是在多的一端加入<many-to-one>标签,如下所示:

  <many-to-one name="group" column="groupid"cascade="save-update"></many-to-one>

    这里cascade表示是级联的含义,级联是两个对象之间的操作联动关系,对一个对象执行了操作之后,对其指定的级联对象也需要执行相同的操作,它只影响添加、删除、修改,级联的取值all、none、sava-update、delete:

        all:代表在所有的情况下都执行级联操作

        none:代表在所有的情况下都执行级联操作

        save-update:表示在保存和更新的时候执行级联操作

        delete:在删除的时候执行级联操作

    在User一端加上这个<many-to-one>标签,在数据库中就会多出一个groupid字段,当使用了级联操作,对象模型就会保存在关系模型中,Group和User都是Persistent状态的对象了,及时没有保存Group也不会抛出TransientObjectException异常。

    使用了多对一的关联映射,多的一端维护表之间的关系,Hibernate会自动在多的一端添加一个外键,在进行一下添加和删除操作的时候我们不需要考虑表结构,非常方便。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值