Hibernate继承关系的性能如何?

blurxx 2009-05-26 01:48:54
一个CMS建站系统,里面涉及的主要的PO分别有新闻(News)、产品(Product)、电影(Movie)、分类信息(infos)、图片集(Album)。



而在后台分别为四个表单,但这它们的属性都存在很多共有的东西。

比如说无论是新闻、产品、电影、图片集、还是供求信息(分类信息中的一种),都会有title,keywords,description,body,以及作者author和发布时间等等。当然它们里面也有很多不同之处。如果把它们的相同之处提取出来做一个po名为文档(Article),让这五个PO 都继承(extends) Article.

表结构:
Article对应的表
CREATE TABLE `bl_article` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) default '',
`contents` mediumtext,
`click` int(11) default '1',
`tag` varchar(255) default '',
`keywords` varchar(255) default '',
`info` varchar(500) default '',
`logtime` datetime default NULL,
..略
`admin_id` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `FKCF6F4D1E70184653` (`admin_id`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Album.java对应的表
CREATE TABLE `bl_article_album` (
`article_id` int(11) NOT NULL,
`pagestyle` int(11) default NULL,
`row` int(11) default NULL,

`album_id` int(11) default NULL,
PRIMARY KEY (`article_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='InnoDB free: 9216 kB';

News.java对应的表
CREATE TABLE `bl_article_news` (
`article_id` int(11) NOT NULL,
`page` bit(1) default NULL,
`pageSize` int(11) default NULL,
`shortTitle` varchar(125) default '',
`catalog_id2` int(11) default '0',

PRIMARY KEY (`article_id`),
KEY `FK1BB87954B86DF255` (`article_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Product.java对应的表
CREATE TABLE `bl_article_product` (
`article_id` int(11) NOT NULL,
`pname` varchar(50) default NULL,
`pimg` varchar(255) default NULL,

) ENGINE=MyISAM DEFAULT CHARSET=utf8;


略写其他表

优点:这样的继承方式让程序很方便统一的去处理各个表单。从文档的栏目,也就是分类(Catalog)、评论(Comment)可以直接和Article对一对多关系,而不必一一和它下面的子类去做一对多关联。而从验证、到持久化、再到静态化,程序都可以一个流程都下来了。

缺点:但从数据库的角度考虑,这种设计方式,随着数据量的增加,无论是添加哪类表单,Article中可以都会增加一条记录。接着再会存一条记录到相应分类的表中去。如果是一个综合大中门户型网站来使用,无论它在后台提交交友信息、新闻信息、动画信息一系列表单,最后肯定不可避免的存入Article表中一部分数据,而这样的表结构是否适合呢?
...全文
81 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧