| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1296 人关注过本帖
标题:应用Hibernate的一个问题
取消只看楼主 加入收藏
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
 问题点数:0 回复次数:7 
应用Hibernate的一个问题

应用Hibernate的一个问题

我用Hibernate来完成实体的持久化操作,在程序中存在一个“车站类”,但是数据库中的“车站表”是按不同的城市分为好几张表的,比如“北京车站表”、“上海车站表”。。。 用什么办法可以很方便的将“车站类”根据 所在“城市”这一个判断条件 在运行时映射到不同的数据库表?

搜索更多相关主题的帖子: Hibernate 应用 
2007-11-16 13:52
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
得分:0 
我是新手,我还是不能理解,麻烦说详细些。谢谢了!

我在大家热情的帮助下进步,谢谢你们!
2007-11-16 14:41
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
得分:0 
运行时映射到不同的数据库表

我在大家热情的帮助下进步,谢谢你们!
2007-11-16 14:58
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
得分:0 

我把我的想法描述一下:

我的程序中存在一个实体类A,我想用A来对数据库中的表T1、T2、T3(这些表的结构都是相同的,而且数量成百上千)。。。 进行持久化操作。 我想在程序运行的时候根据条件判断决定用A来持久化T1或者T2或者T3中的数据(因为特殊原因 T1、T2、T3不应该合并成一个包括所有数据的表T)。

那么、就不能用配置文件的方式来进行A到T1、T2、T3的映射了,只能在运行时来根据运行状态来进行动态的映射。

这个问题该怎样解决,是否有更好的解决办法,还希望大家多多帮忙!!



我在大家热情的帮助下进步,谢谢你们!
2007-11-16 15:51
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
得分:0 

“一个好点的想法就是把A类做成个接口,根据不同情况去实例化,然后分别对应那三张表。但是具体的可行性有待证实。” 你说的这个办法可行,我这么做过,但是还是需要很多机械性的劳动,觉得还是应该改进。

但是最好的解决办法应该是脱离配置文件的束缚、用代码来实现和配置文件同样的作用。但是这个怎么实现我没有一点头绪、还希望各位多多指点,谢谢大家!!


我在大家热情的帮助下进步,谢谢你们!
2007-11-19 09:42
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
得分:0 

现在我说所面对的主要困难是:这些同结构的表的数量多,需要上千个。所以写配置文件的办法还不是很好!


我在大家热情的帮助下进步,谢谢你们!
2007-11-19 09:46
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
得分:0 
“yy()”就代表了一个机械性的劳动:

可以用一个父类来映射表的所有字段、然后写子类继承这个基类来实现到各个具体表的映射。数量少的时候我们也许不会发现这个做法的坏处,但是当数量相当大的时候,我们总不能写上千个这样的子类。(虽然每个子类不包含任何内容,只作为一个标识类,但是仅仅写上这样的上千个类代码也该算是体力劳动了。)而且业务方法中的参数中只能使用基类作为接口参数,还会涉及到向下转型这个问题。所以这个解决方案应该不是最好的。

我在大家热情的帮助下进步,谢谢你们!
2007-11-19 11:34
liugy52
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2006-10-1
收藏
得分:0 

表容量过大的时候,SQL查询的效率就会大幅下降。


我在大家热情的帮助下进步,谢谢你们!
2007-11-19 13:11
快速回复:应用Hibernate的一个问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023798 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved