hibernate学习的那些事之对象关系映射文件--domain对象.hbm.xml

domain对象.hbm.xml

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

 

<hibernate-mapping package="com.hsp.domain">

<class name="Employee" table="employee">

<!-- id元素用于指定主键属性 -->

<id name="id" column="id" type="java.lang.Integer">

<!-- 该元素用于指定主键值生成策略hilo native increment sequence uuid -->

<generator class="sequence">   <!--主键生成策略要根据连接的数据库来修改-->

<param name="sequence">emp_seq</param>

</generator>

</id>

<!-- 对其它属性还有配置 -->

<property name="name" type="java.lang.String">

<column name="name" not-null="false"  />

</property>

<property name="email" type="java.lang.String" >

<column name="email" not-null="false"/>

</property>

<property name="hiredate" type="java.util.Date">

<column name="hiredate" not-null="false" />

</property>

</class>

</hibernate-mapping>


1、domain对象的细节

(1)需要一个无参的构造函数(用于hibernate反射该对象)

(2)应当有一个无业务逻辑的主键属性.

(3)给每个属性提供 get set方法.

(4)在domian对象中的属性,只有配置到了对象映射文件后,才会被hiberante管理.

(5)属性一般是private范围

 

 对对象关系映射文件的说明

对象关系文件中,有些属性是可以不配,hibernate会采用默认机制,比如

<class table=”?” > table 值不配,则以类的小写做表名

<property type=”?”> type不配置,则hibernate会根据类的属性类型,选择一个适当的类型

 

hibernate对象的三种状态,转换图:

 


如果判断一个对象处于怎样的状态?

主要的依据是: 1. 看该对象是否处于session, 2, 看在数据库中有没有对应的记录

瞬时态没有session管理,同时数据库没有对应记录

持久态session管理,同时在数据库中有记录

脱管态/游离态: 没有session管理,但是在数据库中有记录.


关系映射

附加一个级联操作,cascade,一般配置在one的那一方的配置文件,操作该对象时,同时会自动对其相关联的对象进行操作。

1、one to many(部门与员工)

2、many to one(员工与部门)

3、one to one(人与身份证)

A、基于主键的一对一(外键使用时配上foreign表示使用主键和外键为同一个,constrained为false时,不会显示外键,当constrained为true时,显示外键)

B、基于外键的一对一(转换成many to one的特例,必须使用时加上unique来确保外键唯一性)

4、many to many


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值