hibernate 中的主键一对一

:)
引用:

题记:Hibernate是个好东西,可我感觉这个好东东不好驾御,一个one-to-one就让我花费了很多时间,现在终于有点理解,所以想给大家分享分享我的观点,如有差错,还请各位批评指正!

1.关于one-to-one

持久化对象之间一对一的关联关系是通过one-to-one元素定义:

<one-to-onename="propertyName"(1)class="ClassName"(2)cascade="all|none|save-update|delete"(3)constrained="true|false"(4)outer-join="true|false|auto"(5)property-ref="propertyNameFromAssociatedClass"(6)Access="field|property|ClassName"(7)/>
(1)
name:属性的名字[POJO中的]。

(2)
class(可选-默认是通过反射得到的属性类型):被关联的类的名字。

(3)
cascade(级联)(可选)表明操作是否从父对象级联到被关联的对象。

(4)
constrained(约束)(可选)表明该类对应的表对应的数据库表,和被关联的对象所对应的数据库表之间,通过一个外键引用对主键进行约束。这个选项影响save()和delete()在级联执行时的先后顺序(也在schemaexporttool中被使用)。

(5)
outer-join(外连接)(可选-默认为自动):当设置hibernate.use_outer_join的时候,对这个关联允许外连接抓取。

(6)
property-ref:(可选)指定关联类的一个属性,这个属性将会和本外键相对应。如果没有指定,会使用对方关联类的主键[POJO中POJO类的实例]。

(7)
access(可选-默认是property):Hibernate用来访问属性的策略。

2.one-to-one分类

主键关联

惟一外键关联

主键关联不需要额外的表字段;两行是通过这种一对一关系相关联的,那么这两行就共享同样的主关键字值。所以如果你希望两个对象通过主键一对一关联,你必须确认它们被赋予同样的标识值!

另一种方式是一个外键和一个惟一关键字对应。

3.one-to-one中惟一外键关联操作

(1)数据库DDL

#
#Tablestructurefortable'author'
#

CREATETABLEauthor(
author_idchar(20)NOTNULLdefault'',
person_idchar(20)defaultNULL,
PRIMARYKEY (author_id)
)ENGINE=InnoDBDEFAULTCHARSET=gb2312;

#
#Tablestructurefortable'person'
#

CREATETABLEperson(
person_idchar(20)NOTNULLdefault'',
namechar(20)defaultNULL,
PRIMARYKEY (person_id)
)ENGINE=InnoDBDEFAULTCHARSET=gb2312;

(2)映射文件

Author.hbm.XML

<?xmlversion="1.0"?>
<!DOCTYPEhibernate-mappingPUBLIC
"-//Hibernate/HibernateMappingDTD2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">

<!--DONOTEDIT:Thisisageneratedfilethatissynchronized-->
<!--byMyEclipseHibernatetoolintegration. -->
<!--CreatedSatApr2314:28:37CST2005 -->
<hibernate-mappingpackage="po">

<classname="Author"table="author">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值