社区
Java EE
帖子详情
用多表实现ORM的类继承,怎样确定具体类
xuejie09242
2009-11-25 04:04:00
一个节目单列表,每个节目条目不同类型,所以建立了多个表实现,一个父类表,多个子类表,节目单与条目表(父类表)建立外键连接,
问题:在得到节目单列表时,如何创建合适的子类对象?
因为子类数目属性差别可能很大,有可能还在新建不同的条目。
...全文
102
13
打赏
收藏
用多表实现ORM的类继承,怎样确定具体类
一个节目单列表,每个节目条目不同类型,所以建立了多个表实现,一个父类表,多个子类表,节目单与条目表(父类表)建立外键连接,问题:在得到节目单列表时,如何创建合适的子类对象? 因为子类数目属性差别可能很大,有可能还在新建不同的条目。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xuejie09242
2009-11-26
打赏
举报
回复
呵呵,谢谢!
hbwhwang
2009-11-25
打赏
举报
回复
跟我理解的意思差不多
我以前也做过类似的设计,一个登记主表,根据主表里面的一个字段判别使用哪种类型的附表。
没有什么好的解决办法,跟你目前使用的方法没有什么区别。增加一种附表,就得改程序加一个case。
建议你看看ibatis3,里面提供了一种相对比较优雅的解决方案,可以把这种变化放到xml文件中。
xuejie09242
2009-11-25
打赏
举报
回复
问题是这样的:
大体是做一个屏幕控制和发送的程序。有多个显示屏,类似火车站外面LED显示屏,要做成节目单的形式,控制其显示内容。插入内容可能是标语,口号,广告,或者天气预报,节日,倒计时,还有从数据库实时查询出来的数据,按预先设置好的顺序显示,要求客户端控制这些节目单的生成,和条目信息按照相应接口通过UDP协议发送,并在客户端模拟显示,动态更新其状态。
发送的内容可能有两种形式,一是发送文字,有多种字体可选,16点阵和24点阵字体。可以以点阵形式发送,控制屏幕上每一点的亮暗。其中实时查询的数据是每20s要更新一次,查询的内容可能要显示多屏。
现在的想法是,根据条目的不同,分成不同的类,但每一种做为节目单上的一个条目。有些条目是固定的,如标语口号等,可以预先设置要发送的数据内容,而有些如日期,有其固定的算法,默认取当前日期,可能显示年月日时分秒,或星期几等。实时数据显示要存储其查询要求,在显示的时候,根据定义取得相应的数据,并将其分隔成多屏。
另外,每一个条目还可能是按发送固定次数,固定的时间段显示,或每天内只是固定时间段显示。
目前的划分是,将每一个节目单条目作为一个类,同时有个辅助类确定其是否符合显示条件。条目类中包含一个显示条目类,作为各种显示条目的父类。根据内容的不同,这个条目可能是标语口号等固定内容类,也可能是日期,节日等动态内容,也可能是实时数据。
类和数据库设计中,如何根据一个显示条目的ID,确定实例化哪个具体的显示条目类。
不知道我说明白了没有,呵呵。
================================
谢谢!
xuejie09242
2009-11-25
打赏
举报
回复
[Quote=引用 7 楼 hbwhwang 的回复:]
楼主的意思我是看明白了,但问题不是很明白。
主表里面加一个字段,区分类型。
得到主表记录后,根据这个字段的值,来决定取哪个子表、创建哪种子类对象。
就是工厂模式。
没有什么好的办法。
如果你用ibatis3做为ORM,它里面有一个功能支持一个主表对多个子表。
[/Quote]
ibatis3我没用过,现在这种方式在插入的时候没问题,一次插入几个表就行了。但在查询一个节目单的时候,得到一个条目ID,要知道具体是哪种条目还有些费事,具体在创建的时候,只能根据type类型,用个case,然后根据不同的值,再到不同的表中实例成不同的类。这感觉总有点不太自然,如果多个子类,就要 多一个case。
songqingpeng2009
2009-11-25
打赏
举报
回复
一个类别表 所有类别都用这张表;一个节目单表
class Type {
Type type;
set<Type>
set<Jiemu>
}
class Jiemu{
Type type
}
songqingpeng2009
2009-11-25
打赏
举报
回复
自连接表
hbwhwang
2009-11-25
打赏
举报
回复
楼主的意思我是看明白了,但问题不是很明白。
主表里面加一个字段,区分类型。
得到主表记录后,根据这个字段的值,来决定取哪个子表、创建哪种子类对象。
就是工厂模式。
没有什么好的办法。
如果你用ibatis3做为ORM,它里面有一个功能支持一个主表对多个子表。
zl3450341
2009-11-25
打赏
举报
回复
[Quote=引用 3 楼 crazylaa 的回复:]
引用 2 楼 warison2008 的回复:
子类表(子类id,子类代码,子类名称,父类id,子类的父(pid))
同意,一课树就搞定了。子类下还想建多少个子类都可以。为了方便查询,可以在子类里面加上 子类的父id的路径 字段。
[/Quote]
这种可以
zl3450341
2009-11-25
打赏
举报
回复
[Quote=引用 4 楼 kqwwee 的回复:]
弄棵树,建那么多表干什么啊。一张表啊(id,名字,引用本表id,)不就得了
[/Quote]
!!!一张表
kqwwee
2009-11-25
打赏
举报
回复
弄棵树,建那么多表干什么啊。一张表啊(id,名字,引用本表id,)不就得了
crazylaa
2009-11-25
打赏
举报
回复
[Quote=引用 2 楼 warison2008 的回复:]
子类表(子类id,子类代码,子类名称,父类id,子类的父(pid))
[/Quote]
同意,一课树就搞定了。子类下还想建多少个子类都可以。为了方便查询,可以在子类里面加上 子类的父id的路径 字段。
道光2008
2009-11-25
打赏
举报
回复
子类表(子类id,子类代码,子类名称,父类id,子类的父(pid))
道光2008
2009-11-25
打赏
举报
回复
一个父类表,多个子类表?没必要
两个表即可
父类表(父类id,父类名称)
子类表(子类id,子类名称,父类id,子类的父(pid))
SpringBoot使用Spring-data-jpa简化数据访问层
由于模板Dao的
实现
,使得这些
具体
实体的Dao层已经变的非常“薄”,有一些
具体
实体的Dao
实现
可能完全就是对模板Dao的简单代理,并且往往这样的
实现
类
可能会出现在很多实体上。Spring-data-jpa的出现正可以让这样一个...
Hibernate实战(第2版 中文高清版)
5.1.1 每个带有隐式多态的
具体
类
一张表 5.1.2 每个带有联合的
具体
类
一张表 5.1.3 每个
类
层次结构一张表 5.1.4 每个子
类
一张表 5.1.5 混合
继承
策略 5.1.6 选择策略 5.2 Hibernate
类
型系统...
MockMaker:自动实体
类
“模拟”文件播种器
让我们面对现实吧,如果您曾经
继承
过包含几十个实体
类
的大型代码库,这些实体
类
需要快速设置以用于单元/功能测试,那么您就会知道支持这些实体
类
的 PITA 有多大。 在文件之间来回跳转,保持属性、方法和实体关系...
chronomodel:具有用于ActiveRecord(5.x)的“闪回”框架的临时PostgreSQL(9.4+)系统
当前数据保存在temporal的表中,而历史记录保存在从当前模式
继承
的history模式的表中,以获取免费的自动模式更新和其他好处。 当前时间是使用current_timestamp ,因此同一记录中同一事务中的多个
winf
orm
实现
可拖动的自定义Label控件
(2)自定义的一个Label让它
继承
LabelControl控件,LabelControl控件是DevExpress控件库里面的一种,和Label控件差不多,想了解更多关于DevExpress控件,推荐到DevExpress控件论坛学习: public partial class ...
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章