eric-1001c
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
3 随笔 :: 45 文章 :: 12 评论 :: 0 Trackbacks
<
2024年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔分类
Design Pattern(1)
(rss)
UML
(rss)
互联网商业意识(2)
(rss)
随笔档案
2009年10月 (1)
2008年2月 (1)
2008年1月 (1)
文章分类
Agile(1)
(rss)
Hibernate(14)
(rss)
JavaScript(2)
(rss)
JBPM(4)
(rss)
LDAP(1)
(rss)
ThinkingInJava(6)
(rss)
UML(1)
(rss)
Web(1)
(rss)
Websphere Portal(4)
(rss)
编程技巧(1)
(rss)
文章档案
2009年10月 (3)
2008年8月 (2)
2008年7月 (3)
2008年6月 (2)
2008年5月 (1)
2008年4月 (3)
2008年3月 (8)
2008年2月 (6)
2008年1月 (7)
2007年7月 (6)
搜索
最新评论
1. re: if/else的使用心得
想请问“使用Joshua Bloch在《effective java》中介绍的方法”,在effiective java中在哪一条,我没找到,谢谢!
--Carter
2. re: 接口之完全解耦[未登录]
如果可以解释下直接QQ我吧 120482338 多谢哈
--王杰
3. re: 接口之完全解耦[未登录]
评论内容较长,点击标题查看
--王杰
4. re: Request的getParameter和getAttribute方法的区别[未登录]
第一次有这样深刻的理解,谢谢牛人
--long
5. re: Request的getParameter和getAttribute方法的区别
受教了!
--yxc
阅读排行榜
1. FlyWeight Design Pattern(享元模式)(转)(458)
2. 摩尔定律其实是个魔咒(415)
3. Web2.0企业生态系统(290)
评论排行榜
1. FlyWeight Design Pattern(享元模式)(转)(1)
2. 摩尔定律其实是个魔咒(0)
3. Web2.0企业生态系统(0)
第八章 映射组成关系
1. 建立域模型和关系数据模型有着不同的出发点:域模型是由程序代码组成的,通过细化持久化类的粒度来提高代码可重用性,简化编程;而关系数据模型是由关系数据组成的,在存在数据冗余的情况下,可以把粗粒度的表拆分成具有外键参照关系的几个细粒度表,此外在没有数据冗余的情况下应该尽可能减少表的数目,简化表之间的参照关系。
域模型中的聚集aggregation对象关系在关系数据模型中可以通过映射为组成关系来提高代码和数据库访问质量。比如说一个customer具有homeAddress和comAddress属性,从域模型出发,应该把homeAddress和comAddress抽取出来成为一个过程对象。而在关系数据模型中可以通过hibernate提供的组成关系进行映射。映射文件如下:
1
<
component name
=
"
homeAddress
"
class
=
"
com.homeAddress
"
>
2
<
parent name
=
"
customer
"
/>
3
<
property name
=
"
street
"
type
=
"
String
"
column
=
"
HOME_STREET
"
/>
4
<
property name
=
"
city
"
type
=
"
String
"
column
=
"
HOME_CITY
"
/>
5
6
</
component
>
这样进行映射后,并不需要为homeAddress和comAddress单独设置数据库表,应该把homeAddress和comAddress的属性都和customer表放在一起
而有一点要格外注意的是,域模型的组成对象homeAddress和comAddress对象除了具有一般的属性成员变量外,需要为hibernate提供一个parent属性,如下所示
1
packge com;
2
3
import
java.io.Serializabel;
4
5
public
class
HomeAddress
implements
Serializable
{
6
private
String street;
7
private
String city;
8
9
private
com.Customer customer;
10
11
public
void
setCustomer(Customer customer)
{
}
12
public
Customer getCustomer()
{
}
hibernate提供的这种组成关系映射允许嵌套使用
1
<
component
>
2
<
compoent
>
3
4
</
componet
>
5
6
</
component
>
2. 区分值value类型和实体Entity类型
Hibernate把持久化类的属性分为value和Entity类型。前者没有OID,不能被单独持久化,不能单独通过session加载,它的生命周期依赖于所属的持久化类的对象生命周期,组件类型就是一种类型;而后者有OID,可以被单独持久化。在通过Configuration类的addClass()方法加载映射文件时,只需要加载与value类型对应的实体类型,而不需要单独加载组件类。当通过hibernate进行数据库操作的时候,hibernate会自动把组件类的属性转换为实体类的属性,从而和table的列对应起来
posted on 2008-01-23 20:47
Eric-1001c
阅读(217)
评论(0)
编辑
收藏
所属分类:
Hibernate
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
相关文章:
利用回调实现Spring+Hibernate中的批量删除
(转)Spring事务传播机制解惑
(转)Spring事务传播机制解惑
Transaction always commits even if marked readOnly
利用ThreadLocal管理session
Spring的Hibernate事务管理
Hibernate的Load和get方法区别
第十三章 管理Hibernate的缓存
第十一章 Hibernate的检索方式
第九章 Hibernate的映射类型
Powered by:
BlogJava
Copyright © Eric-1001c