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

问一个系统设计的问题

阅读更多
当使用Hibernate开源框架去做一个大中型系统的持久层时,我们一开始做的究竟应该是先设计数据库,然后按照数据库,使用工具将数据库映射成对象;还是完全撇开传统的关系数据库思想,先建立实体之间关系图(或建立域模型),然后根据该模型在设计数据库。
不知道大家在平时的设计时一般按哪样的流程去做,能否介绍下大家在使用Hibernate设计时的流程和思路。
最近一直在思考,如何使得数据库设计和Hibernate理念结合后产生的性能最好,能体现出Hibernate的优势和性能。
分享到:
评论
13 楼 抛出异常的爱 2007-12-26  
自从有了rake之后
改数据库逻辑已经不是难事了
不用求DBA了,
所以不从数据库开始设计是必然的事
12 楼 bukebushuo 2007-12-26  
从我做的实际项目(项目数>10)开发来看,从来没有一个项目的数据库是完美的,总是在修修补补,据我的了解,其他的项目也大抵如此,那么使用Hibernate开发的话应当如何设计?
11 楼 wlcome998 2007-12-25  
谢谢大家的讨论,最近偶然看到一本外文书,大致和楼上的表达的思想很接近,作者是参与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
10 楼 skzr.org 2007-12-23  
千万不要首先就考虑数据怎么存储

理清业务,搞清域,再适当考虑怎样存储就可以了
说白了就是首先要逻辑上没有问题再来实际的

如果需求都未搞清楚,来谈对需求的持久化那不是白搭
反过来如果业务模型搞清楚了,逻辑上无问题了,那存储实际上基本上已经定好了,剩下的就是存储细节和性能了

至于先后顺序楼上有人说得蛮好的,看习惯了,无论哪种方式,都会需要微调的

无论怎么样我们都需要搞清业务模型才能够去设计数据库,千万别从数据库入手来设计业务了,我目前所在的系统在扩展性和响应需求的时候就遇到了当初数据库设计的瓶颈了,现在数据到处都有,一片混乱,明年可能会全面整合业务了
9 楼 hbrf2007 2007-12-20  
有时对于一个相同的关系模型,可能会在数据库中建立不同的表结构,(取决于性能)所以建议在OO的开发过程中先关系后库。
8 楼 hantsy 2007-12-20  
项目中不关心数据库模型
7 楼 xiaocheng 2007-12-13  
一般清楚需求理清层次,后用ppt做表现层反映需求,
然后再建立数据库模型来反映表现层.
6 楼 wlcome998 2007-12-13  
比较同意楼上的意见

我也个人比较倾向于这种观点。。如果当关联关系过多的时候,也不妨优先考虑从域模型入手,因为ORM映射最终是需要域模型和关系模型保持对应,消除阻抗。。
5 楼 movingboy 2007-12-13  
我倒是觉得先建库还是先建Hibernate对象都可以,看团队比较习惯那种方式,毕竟最后都要达到两者一致
如果觉得某种方法麻烦,完全可以调整为另一种方法嘛
4 楼 leeking 2007-12-13  
我觉得还应该是先建立关系,然后用工具生成hibernate的配置文件
3 楼 laiseeme 2007-12-13  
我是先建数据库,关系也弄好,然后用工具自动生成
2 楼 wlcome998 2007-12-07  
你这里的数据模型是个什么概念呢 呵呵,怎么样抽象成数据模型?
1 楼 pheh 2007-12-06  
我通常是先建立数据模型,然后由hibernate帮我自动建立数据库。当然,也要根据实际情况,对自动生成的数据库进行一下微调,建索引之类的,优化一下数据库。

相关推荐

    DSP系统设计100问

    【DSP系统设计100问】是一份针对数字信号处理器(DSP)开发设计中的常见问题的集合,旨在帮助新手理解并解决在实际工程中遇到的各种挑战。以下将详细阐述其中涉及的一些关键知识点: 1. **时钟和电源设计**: - 时钟...

    液压系统设计及常见问题

    液压系统设计及常见问题

    基于PLC的智能排号系统设计毕业设计.doc

    本文主要介绍了基于PLC的智能排号系统设计的毕业设计,旨在解决传统排队繁杂问题的过程。智能排号系统是基于分布式控制系统理论的智能系统,主要包括主屏显示器、窗口显示器和智能叫号系统器组成立体网络式通信控制...

    高并发系统设计思路

    ### 高并发系统设计思路 #### 设计原则 在高并发系统的架构设计中,核心的原则是围绕着如何更合理地分配资源来进行。这不同于解决资源不足的问题,而是着重于现有资源的有效利用。以下几点是设计时需重点考虑的: ...

    Java高校学生考勤管理系统设计与实现毕业论文

    4.2 系统布局设计 13 4.3 总体结构图 14 4.4 本人主要工作任务 15 第5章 详细设计 16 5.1 引言 16 5.2 系统功能流程图 16 5.3系统目录结构设计 17 5.4 数据库设计与实现 17 5.4.1 实体模型 17 5.4.2 E-R模型 18 ...

    dsp系统设计100问

    从给定的文件信息中,我们可以总结出一系列关于DSP(数字信号处理器)系统设计的关键知识点,涵盖时钟和电源管理、干扰与板的布局、以及DSP性能等方面。 ### 一、时钟和电源 #### 1. 时钟设计与电源设计注意事项 -...

    毕业答辩-基于J2EE的财务管理系统设计与实现.doc

    基于J2EE的财务管理系统正是这种趋势下的产物,它为用户提供了一个在线的财务管理平台,支持用户轻松记录和管理自己的收支情况。 本文首先介绍了项目的意义和功能概述。基于J2EE的财务管理系统不仅操作简单,成本低...

    Matlab下视频处理系统设计与实现.pdf

    文章在系统设计方面,提出了一个基于Android的网络问政管理系统设计,该系统能收集网络问政信息,搭建问政管理人员和群众之间的桥梁,方便了联络员管理网络问政,更好地为群众服务。该系统在需求分析、业务流程等...

    数据仓库olap系统设计文档模板

    5. OLAP立方体设计:OLAP立方体是预计算的结果集,包含了用户常问问题的答案,以提升查询速度。设计时需考虑哪些度量和维度组合,以及如何分层、切片和 dice(多维分析操作)。 6. 系统架构设计:选择合适的OLAP...

    信息系统分析与设计题库与答案.doc

    题库共有19道题,每道题都包含了一个问题和四个选项,答案也随附在每道题的后面。 资源的内容可以分为多个章节,包括信息系统的基本概念、信息系统的类型、信息系统的开发和维护等方面。 在第一章节中,题库涵盖了...

    最优控制系统设计PPT学习教案.pptx

    本资源是一个关于最优控制系统设计的PPT学习教案,总共85页。下面是对该资源的详细知识点总结: 一、最优控制系统设计的概念 在古典控制理论中,反馈控制系统的传统设计方法存在许多局限性,其中最重要的一点是...

    基于中文医疗知识图谱的智能问答系统设计与实现方法.pdf

    "基于中文医疗知识图谱的智能问答系统设计与实现方法" 智能问答系统是一种基于知识图谱的智能系统,能够通过人机交互的方式,提供快速准确的答案,缓解医疗资源紧缺的矛盾。本文主要介绍了基于中文医疗知识图谱的...

    操作系统课程设计有限缓冲区问题的实现

    在本设计中,我们实现了一个有限缓冲区问题的解决方案。具体来说,有两个线程在一个地址空间内运行:生产者线程(producer)负责生产产品并将它们放置到空缓冲区中,供消费者线程(consumer)消费;消费者线程从缓冲...

    系统设计中的6W理论

    通过不断地问自己这六个问题,开发团队可以确保系统设计始终围绕用户需求,避免偏离初衷,同时保持项目管理的有序性。 例如,在名为"系统设计中的6W理论20081010.ppt"的文件中,可能会详细阐述如何将6W理论应用于...

    单片机毕业设计答辩常见疑难问题解答

    以下是一些常见的单片机毕业设计答辩中的问题及其详细解答: 1. **P0口是否需要加上拉电阻**:P0口作为数据总线时不需要加,因为它具有内部上拉功能,但在作为单独IO口使用时,为了确保高电平状态,需要外加上拉...

Global site tag (gtag.js) - Google Analytics