`
wlcome998
  • 浏览: 31521 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

请教一个系统设计的问题

阅读更多
当使用Hibernate开源框架去做一个大中型系统的持久层时,我们一开始做的究竟应该是先设计数据库,然后按照数据库,使用工具将数据库映射成对象;还是完全撇开传统的关系数据库思想,使用Evans DDD的设计先建立实体之间关系图(或建立域模型),那么之后的数据库应如何生成,感觉始终都要面对RDB设计这样的问题。比较RDB是主流的数据库。
不知道大家在平时的设计时一般按哪样的流程去做,能否介绍下大家在使用Hibernate设计时的流程和思路。
最近一直在思考,如何使得关系数据库设计和Hibernate理念结合后产生的性能最好,能体现出Hibernate的优势和性能。
分享到:
评论
33 楼 huanghanjun 2008-08-15  
在路上主动和你套近乎的陌生人,就不要傻不拉叽的给人电话号码了,你会被短信电话骚扰致死的。


  在场上不要标榜自己多能喝,很男人的与人划拳喝酒了,真正在乎你的人是不会看着你喝到醉醺醺的。



  告别灰姑娘和白马王子的白日梦吧,你的脚没那么小,穿不进那水晶鞋。



  有给男友买进口剃须刀的钱,不如给老爸买双袜子,他穿着你老妈补过几次的袜子,你注意了吗。


  有份稳定的工作,多赚点钱,女人一定要经济独立,才有独立的人格,防止以后成了娜拉,鲁迅爷爷说过娜拉出走后要么回来,要么沦为娼。


  中年男人,特指大款,请你吃饭唱歌泡吧,拒绝吧,你算计不过他们的。



  曾经背叛过你的男人想回头,对其说不。


  你曾经背叛的男人请你回头,对其说不。



  学点衣装搭配,不要再红陪紫好死不死的穿着出门了。



  对于年少时幼稚男对你的山盟海誓,一笑而过吧,他说这些话肯定没经过大脑。



  大事坚持原则,小事学会变通。



  没必要和男友争个面红耳赤,你对了,他会认为你争强好胜得理不饶人,你错了,他会认为你无理取闹没完没了。



  有钱买条高档项链,总比戴着块假玉让人看着有品味。



  别再动不动就学野蛮女友暴打你男人了,打坏了没有替身给你抗米面袋。



  不要爱上有家室的男人,等他老婆孩子老父母全家总动员时,你会死的很惨。



  每年做个身体检查,尤其是肝、肾、乳腺。


  偶尔和妈妈一起下厨,永远比和姐妹淘无事生非的在一起胡吃海喝来得开心。



  对于你真正要与其结婚的男友,要忠诚。


  不要再认为你在玩别人的感情,对手可能比你道行要高。



  想嫁给他,要做好安全措施;不想嫁给他,就更要做好安全措施。



  不要再当月光族,你该学着攒些嫁妆钱了。



  不要老买速溶咖啡在家喝,偶尔去趟星巴克,他会认为你懂得生活。


  永远记住,和男生一起没白没黑的网游,只属于大学时代。



  除非真有必要,没必要时时更换最新款手机,否则别人会认为你是卖手机的。



  了解父母的身体状况。



  此时的你至少该有张驾照,无论你是否有车。



  至少有一个和你暧昧的异性朋友(没有性关系的那种),既可以是你的精神百宝箱也可以当精神垃圾桶。



  不要和女友的男友走得太近,背后会挨姐们儿的骂。



  不要指望你的男友挣钱洗衣做饭家务样样精通,他没有超人的内裤可以穿在外面。


  不要反复强调结婚以后你的男友一定要孝顺你的父母,甚至扬言要把父母接来一起住,让老公和岳父岳母相处,人与人是相互的,要是他把自己的父母也接来,你们家将会热闹得超乎想象。



  不要才开始相处就提结婚,也不要连续两次拒绝你男友的求婚。



  不要再想你这辈子必须找个梁朝伟或是郭台铭,因为你不是刘嘉玲。



  不要找比自己小三岁以上的男孩,因为你也不是王菲。



  买份保险,如果单位办了社保,就不必了。


  给妈妈买些实用的东西,她会觉得比花要好几百倍。



  有自己去SPA的时候不如陪妈妈去洗个澡,给她搓搓背。



  万事随缘,但不要放弃努力。



  不要给自己太大压力,不要学做咄咄逼人的女强人,你会越来越孤独。



  有剩余资金,可以考虑买房了,结婚的房子不一定完全由男友负担。


  无需把男人看得太复杂,人与人之间往往是彼此复杂化,当然,也不要当他们是白痴。



  不要时时缠着男友,留给他点空间,感情会更深。



  没事去看看男友的父母,比单纯巴结他管用的多。



  男友多再不是你可以骄傲的本钱,只会被认为不靠谱。



  对男友好不是件做作事儿,尤其人多的时候,对男友呼来喝去,他会很没面儿,也只会让人觉得你很没品。



  此时的你再是闲人一个,没人会再夸你是乖乖女。



  不要以为自己吸烟很有魅力,对皮肤不好,而且显得很风尘。


  假如你还认字,那么经常看看书,提升一下自我修养。



  别瞧不起你正经上班但挣得不多的姐们儿,人家吃碗面条,都是自个儿的血汗钱。



  在朋友面前不要炫耀和自以为事(这样是很令人反感的)。



  关心一点国家大事吧,别说俄国总统还是普京,政治不只是男人的事。



  常关心一下你的男友,但关心不等于唠叨加监视。



  和男友出去吃饭,不要因为自己是女孩,就不愿意埋单,觉得他请你是应分的,凭什么呀,你又一点也没少吃。



  学学化妆吧,素颜美女是要拼年龄的,你很快就没这优势了。


  多半男人认为,女人晚上也要和白天一样有魅力***。


  如果你没有林妹妹那般才情容貌和身世,就不要动不动的流泪了,即使你做的出葬花吟,估计你也不想步林妹妹吐血后尘,关键是宝哥哥最后还娶了别人。



  至少要保留一种健康的爱好,如:游泳,慢跑,乒乓等,记住逛街不算。


  不要羡慕谁的好姐们儿比你多,她们的闹心事和这个数目也是成正比的。



  永远不要认为别人的老公比你的好,因为他们爱的不是你。



  保养一下头发吧,顶着一头烂草,彩妆也彩不起来。



  多夸夸你的男友,你的一句话或许就是他的动力,会为你带来经济效益的。



  想继续发展的男友最好带给父母看一看,老人的眼睛有时候确实比你雪亮。



  不要再学男人说脏话了,你不是小太妹,会成为老太姐的。



  以精打细算为荣,以乱吃零食为耻。



  衣服不用一天一换,花枝招展的容易让人眼晕。



  和男友的男友要保持一定距离,太远他会说你对他朋友不热情,太近事儿可就大了。



  没有任何一件事,任何一个男人,值得你彻夜不眠或街头买醉,或者买安眠药。



  女人,光鲜儿就那几年,以后拼的是道行而不只是脸蛋。



  永远高雅的微笑。
32 楼 coolnight 2008-05-26  

强烈建议使用数据库驱动(或者hbm驱动,但是hbm要根据数据库的设计来)

个人觉得这是最保险、最直观、最快速的做法

除非你的系统很小、不需要考虑性能问题

31 楼 maming2000 2008-05-21  
改造旧系统是不能或很难生成自己想要的结构的,对新系统用对象建模应该做对象缓存,应用服务器共享缓存达到性能优化。
30 楼 Joo 2008-05-20  
抛出异常的爱 写道
数据库驱动
页面驱动
数据模型驱动
领域模型驱动
。。。。。。。。。。。。。。。
你用哪种?

这么多糊弄人的名词 用得着这么复杂么
29 楼 gblyh 2008-05-20  
感觉两者都需要兼顾,一个良好的设计必定你的闹钟都会既有领域模型,又有数据库模型,我们团队的方式一般都是兼顾,不过一般我们在数据库设计的时候也做了不少重构工作,兼顾领域模型和数据库模型,因为对于一些结构双方的映射方式还是有不少选择的。我觉得你们不管用哪种,肯定要先出一个设计,然后做映射,能端到端走通了的话,就可以进行开发
28 楼 sslaowan 2008-04-12  
其实领域模型中的实体和实体关系模型中的实体能有多大区别呢?
领域中有些对象是要建模为每个都是不同的,那就建成实体咯。
然后实体和实体之间有关系,就有了实体关系模型中的关系
就有了领域模型中的关联关系。
对象中有继承关系,实体关系模型没有,但有很多策略可以进行映射[Fowler02]

然后对象建模-->实体关系模型
27 楼 ff_ff 2008-01-09  
先设计实体,由实体生成表 吧。
26 楼 wlcome998 2007-12-18  
是pro hibernate系列的书
25 楼 fangzhouxing 2007-12-17  
引用
最近偶然看到一本外文书,


请问是那本书?能给出书名吗?
24 楼 wlcome998 2007-12-17  
个人感觉像是对前两种方法的一种优化或者折中
23 楼 wlcome998 2007-12-17  
谢谢大家的讨论,最近偶然看到一本外文书,作者是参与Hibernate设计的开发人员,书中也对这设计的方式进行了讨论,作者就认为没有一成不变的设计方式,要根据具体的情况来做具体的设计方式,归纳为三种
1.POJO-Driven Approach
In the POJO-driven approach you start with an object/domain model, and using JSR-220 annotation or Javadoc metadata comments, you define how each field in a class maps to a database column. At runtime, Hibernate uses the annotations to dynamically create the mappings.
这种方法适用于数据模型还没创建和设计或者不明确的新应用程序
2.Data Model–Driven Approach
In the model-driven approach you start with a database schema for the chosen database system, and using a tool like Middlegen or Hibernate Synchronizer, you generate mappings and POJOs for each table being mapped. This approach provides a fast start-up time for development。
这种适合已建立明确的数据库或者数据模型的web开发,并能快速的开发。
但也指出使用这种设计的方式会造成域模型的semantic(语义)不够丰富,达不到你原先设想的那样。
3. 作者自己推荐的是一种是第三种方式,称为HBM-Driven Approach。
The two previous approaches, taking either a domain-model or data-model approach, typically result in HBM mappings that are not quite complete. Every time I use either of the approaches above in a moderately complex application, I find myself fine-tuning the HBM files to either
get more accurate POJOs (in the data-driven approach) or more efficient, manageable database
schema (in the POJO-driven approach). The third approach suggested here takes the stand that object-relational mapping is an inescapable, necessary evil that should be taken into consideration early and in a head-first fashion in the development of your application.By
creating detailed, accurate HBM files you will end up with both a domain model and a database schema that meets your application needs and ensures the longevity of the data
22 楼 fangzhouxing 2007-12-15  
使用Hibernate时,应该先设计领域模型,从领域模型生成数据库表。

通过下列代码可以自动生成数据库表:
Configuration config = 
AnnotationConfiguration().configure("/hibernate.cfg.xml");

	SchemaExport schemaExport = new SchemaExport(config);
	// script, export, justDrop, justCreate
	schemaExport.execute(false, true, false, true);



然后再检查生成的数据库表,必要时进行优化(如添加索引等)。
21 楼 javali 2007-12-14  
基于数据库设计和基于领域模型设计,你真的没有必要把它分得那么清,楼主的意思可能是先有表呢还是先有对象,不管你是先建表还是后建表,数据表都是当你分析了业务逻辑后得来的,其实你已经不知不觉从领域模型开始了。
正如抛出异常的爱所言:
领域不是目的,目的是更好的抽象业务。
20 楼 yimlin 2007-12-14  
针对你的需求,我觉的你可以采用数据库设计方式。
19 楼 yimlin 2007-12-14  
通常决定是否基于数据库设计和基于领域模型设计取决于你的分析结果——分析模型。

众所周知:数据库设计基于两种设计粒度:表和字段;

如果分析模型和数据库存在如下差异,则应当考虑采用领域模型:
1. 表粒度所能提供的结构化能力无法支持分析模型,比如一个分析模型的数据是分布在多张表中,或者一张表中表示的分析模型有多种(即ORM所支持的几种继承能力,以及component)
2. 字段粒度所能提供逻辑无法支持分析模型,存在较多逻辑计算依赖多个字段甚至是不定字段。

如果以上两种情况都满足,那么采用领域模型设计,无疑拥有较好的设计开发成本,同时设计和分析的差异性在较小范围内,沟通成本也将保持较低的范围内
18 楼 lihy70 2007-12-13  
同学,表的设计不错!
17 楼 wlcome998 2007-12-13  
不太理解异常兄的意思
下面一个基于B/S的学生在线评价教师的系统
evaluate_detalis表格是评价指标
1、evaluate_process表格是学生首先从界面里面选择所在班级的任课教师和相应的课程的每一个指标对其进行评价(选择评价等级 优良中差)
2、evaluate_result表格存放的信息是 当学生评价完毕时管理员对该老师的课程进行结束评价的操作,系统自动计算出每一个评价指标的加权评价等级并将结果写到这个表格里面

以下是这个系统可能的关系。。
针对这样的系统 如果使用Hibernate设计持久层 遵循怎样的设计流程最好呢
16 楼 抛出异常的爱 2007-12-12  
1.领域常用的是充血模型。
2.把一个表的内容尽量的减少。
3.由2之后把常用的统计查询用视图来表现
(如果业务充许的话还可以用影射视图缓存)
15 楼 wlcome998 2007-12-12  
赐教了 异常兄不妨介绍下关于持久层方面的一些设计经验
14 楼 抛出异常的爱 2007-12-11  
两个不在同一个层次上。。。。
就如同别人说打地基时用的黄色的大理石。。。
可以让建筑物更高贵一样。。。(跟本没人看的见。。。。)

PS:OO不是目的,目的是把不好理解,容易出问题的部分封装。
领域不是目的,目的是更好的抽象业务。

相关推荐

    问题请教工程,问题请教工程

    在IT行业中,问题请教工程是一项常见且至关重要的任务。它涉及到技术咨询、故障排查、解决方案设计等多个环节,是提升技术水平和团队协作效率的关键。在这个场景下,"问题请教工程"可能指的是开发者或工程师在遇到...

    请教Farrow结构滤波器设计的设计-lagrange插值.pdf

    请教Farrow结构滤波器...小弟要设计一个基于Farrow结构的抽取滤波器,用在一个数字中频接受系统中,实现任意采样率的转换,不太明白滤波器的系数如何计算出来,有没有人做过呢?matlab中有函数或者工具箱可以实现吗?

    某小学综合布线系统设计.doc

    某小学的综合布线系统设计是一个涉及多个子系统、多个环节的综合性项目,旨在提供一个适应未来发展、易于管理和维护的信息传输环境。通过合理的规划和设计,可以显著提高学校的信息化水平,为教学和管理工作提供有力...

    电子系统设计-单片机

    本教程旨在为初学者提供一个深入理解单片机基础知识的平台,以简单易懂的方式讲解单片机的工作原理和应用。通过学习,你可以掌握以下几个核心知识点: 1. 单片机结构:了解单片机的基本架构,包括CPU、ROM、RAM、I/...

    视频监控系统设计实现分析范文.doc

    预期目标是构建一个实用且可行的视频监控系统架构,实现基本的监控功能,并通过实际操作验证其性能。 三、系统设计与实现 1. 系统设计:视频监控系统采用分散到集中管理模式,通过网络连接各个监控点,提供统一管理...

    C语言银行管理系统设计.doc

    C语言银行管理系统设计 一、需求分析 银行存取款管理系统设计的目的是为了解决银行在存取款方面的不便之处,提高...同时,该系统也可以为银行提供一个强大的存取款管理工具,帮助银行更好地管理客户信息和交易记录。

    三层楼电梯plc控制系统设计与调试.pdf

    电梯PLC控制系统设计与调试是电气工程领域中的一个重要实践项目,尤其在当今高层建筑日益增多的社会背景下,电梯的安全、高效运行至关重要。本文将基于提供的文件信息,深入探讨三层楼电梯的PLC控制系统的设计原理、...

    立式组合机床的液压系统设计.doc

    立式组合机床的液压系统设计是一项重要的工程任务,旨在将理论知识应用于实际生产环境中。该设计的目的是让学生在学习液压传动课程后,能够利用所掌握的液压基础知识,设计出一台专用铣床的液压系统,从而提升实践...

    立式组合机床的液压系统设计实用.pdf

    设计的目标是创建一个能够执行特定动作序列的液压系统,包括快进、工进、快退以及原位停止。此外,系统还需要具备工件松开和液压泵卸荷的功能。设计中考虑的主要参数如下: 1. 动力滑台采用平面导轨,静摩擦系数和...

    答辩pptweixin217基于微信小程序的学生签到系统设计与实现ssmweixin217PPT.ppt

    系统的开发过程中,也遇到了许多挑战,例如中文乱码问题、程序对应数据库的数据安全问题、程序开发中框架的使用问题等,但是通过不断地学习和实践,最后终于解决了这些问题,开发出了一个功能齐全的签到系统。...

    基于WEB的教学资源管理系统论文

    系统设计遵循了软件工程的流程,包括需求分析、概要设计、详细设计、编码、测试和维护。在需求分析阶段,重点考虑了用户群体——教师和学生的需求,确保系统功能满足他们的实际应用,如快速查找、浏览和下载教学公告...

    小型超市零售管理系统数据库系统设计

    这一阶段大概了解了目前超市销售管理的现状,了解了超市销售方面的业务,同时也发现了其中存在的一些问题。经过近两天时间的实践,了解了很多关于超市的知识,收获挺多的。 需求分析成果如下。 系统要处理的基本对象...

    明镜小区住户信息管理系统设计与实现.pdf

    《明镜小区住户信息管理系统设计与实现》 在当今信息化社会,传统的住户信息管理方式已经无法满足日益增长的管理需求。明镜小区住户信息管理系统旨在解决这一问题,通过设计和实施一套高效、便捷的管理系统,以提升...

    图书馆书籍借阅系统设计与实现(两个版本) winform

    设计本系统模拟学生在图书馆借阅图书的管理内容,包括查询图书馆、借书、借阅后得查询、统计、超期罚款等的处理情况, 简化的系统需要管理的情况如下。  1 可随时查询处可借阅图书的详细情况,如图书编号(bno)、...

    liegie_文件有点问题请教一下_

    1. **模型建立**:首先,需要建立一个固态系统的模型,这可能是一个简单的晶格结构,如立方晶体,或者是更复杂的多原子结构。这个模型包括原子的位置、类型以及相互作用力场的参数。 2. **哈密顿量**:在量子力学中...

    基于SpringBoot的青岛黄海学院在线答疑系统设计与实现+毕业论文

    1.答疑功能:学生帐号可以在前端对加入的课程提出问提请教,教师或者管理员账号登录,可以看到学生的问题...5.主题讨论功能:学生可根据自己兴趣爱好,创建一个话题,其他学生甚至老师都可以在该话题下进行回复讨论。

    C语言学生管理系统课程设计报告书

    本次课程设计的目标是使用C语言开发一个“学生信息管理系统”,该系统具备数据库管理的基本功能,如数据库的建立、记录的增删改查、显示以及保存和备份。通过这个项目,学生可以深入理解C语言的编程知识,包括条件...

    设备管理系统课程设计报告

    自己在课程设计的时候通过向老师同学请教,然后完成了这个设计。

    Verilog简易电梯控制系统设计(两层,含附加项蜂鸣器和流水灯)

    1. 实现2层楼的简易电梯控制系统。 2. 电梯有4个按键。 1楼外只有向上按键(KEY0),2楼外只有向下按键(KEY1),电梯内还有2个按键分别为1楼按键(KEY2)和2楼按键(KEY3)。所有楼层外和电梯内的按键产生的信号作为给...

Global site tag (gtag.js) - Google Analytics