发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

hibernate对象映射的一个问题。

    
2007-05-14 12:30
赞助商链接

最近在研究hibernate。
但是我的书上面对有一个地方讲解的并不太好。
设想这样一个场景,我需要用composite组合的设计模式。
把picture的几个实例与para的几个实例按照顺序组合成一个text对象。
有一个Text(-id:String;-name:String;)类,
它由Picture(-url:String;-height:int;-weight:int;text_id:String)类与Paragragh(para:String;-text_id:String)类组成,也就是说,在hbm.xml文件中可以选用集合组件映射(component映射)或者one-to-many的模式
如果用集合组件映射,那么Text.hbm.xml文件中应该怎么来写包含关系呢?
我需要用一个list来保证Text与两个对象(picture对象与Paragraph对象)保持联系,并且最关键的是pic的实例与para的实例必须保证有正确的顺序,而不能只是pic与para实例组的内部能够保持正确的顺序。
参考书中只给了一个对象与另一个对象之间的组合的例子,如果一个对象和另外两个对象用list来组合应该怎么设计Text.hbm.xml呢?

附一个书中组合的例子按照上面的类图中的两个对象的组合关系(Text对Picture)
<list name="pic" table="picture">
<key column="text_id"/>
<composite-element
class="Picture">
<property name="url" column="rul"/>
<property name="weight" column="weight"/>
<property name="height" column="height"/>
</composite-elemnt>
</list>

但这只是两个对象之间的组合。。如果我希望按照上面说的三个对象Text同时维护Picture与paragragh里面的text_id值的组合,应该怎么来写hbm.xml呢?

可能问题让我描述得有点复杂了。。希望能看懂的高手们给个解释~
谢过~

2007-05-15 15:47

使用Set配置,如下;


<set name="someNames" table="some_names" lazy="true">
<key column=
"id"/>
<composite-element class=
"eg.Name"> <!-- class attribute required -->
<property name=
"initial"/>
<property name=
"first"/>
<property name=
"last"/>
</composite-element>
</set>

2007-05-15 20:23

恩~没看懂我的问题啊?banq同志。。
您给我的EX也是维护一组对象(someNames实例的类与这个文件所映射的类之间的关系。。)
我却需要用一个类来维持两个类之间的组合

比如表Text中插入了一幅画和一段文字和另一幅画
id|title
1 |A title

这个表写入的时候
表picture
id|text_id|contant
2 | 1 |PicUrl1
4 | 1 |PicUrl2

表paragraph
id|text_id!contantPara
3 | 1 |somewords

最后设计出来按照hibernate的composite配置方式应该出现类似这样的效果,只不过所有id都由hex算出。

我主要是不知道一个对象由两个对象乃至更多对象组合,并且要求这些组合对象中的所有对象顺序必须正确的时候应该怎么设计hibernate呢。
如果这个用java写,可以很容易的用list来达到效果,也就是组合模式应该怎么对应持久化以后的数据库呢?

hibernate     

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com