转自JavaEye,作者:yananay
详细讨论:http://www.iteye.com/topic/94867
恐怕我认识的95%的搞软件的人,在开发一个项目的时候,都会费好大力气去做一个叫做“数据库”文档的东西。
里面使用了大量的表格,文字,等等,告诉用户:你看,我已经把系统的50%设计出来了!
可是,这真的是正确的吗?如果是正确的,为什么我发现90%的情况,这个文档竟然没有被同步更新?或者直到
项目 release 阶段,才会去最后更新一次这个文档?
我终于发现了答案:项目的设计阶段,把数据库扔在一边!
到今天我们已经达到一个共识,就是数据库的操作,其实就是数据持久的操作。什么是持久?就是把一个类里需要
的数据保存到磁盘上。你可以保存到文件里,可以保存到数据库里,这都是持久。
既然如此,那我们为什么还那么着急的确定数据库是什么样子?
我们只要设计出正确类,这个类能存储我们的数据就可以了!至于如何把这个类保存到磁盘上,或者如何从磁盘上
把这个类载入到内存里,那是另一个问题了。
很多人以为这是一个大问题,事实证明,只要你的类图设计的正确,那么持久层的处理与整个系统相比,实在是一件
小事情。而且在设计阶段不去考虑数据库因素,更有助于我们清晰的根据业务来设计系统。
那么有的人又说了,那我如何做单元测试,我可是 TDD 的!
我想,正是 TDD 导致了“把数据库扔在一边”的思维方式。你完全可以把数据库的操作做成一个接口,在单元测试的
时候,使用 mock 的方式。因为在实现业务的阶段,我们只考虑我们设计的类是不是能正确地保存数据,而不在乎它
到底是怎么保存到磁盘上的。
直到你确信业务逻辑正确,那么就可以去实现那个数据库操作的接口,去做真正的持久层。当然,这个名词叫facade模式。
而持久层是使用 hibernate,还是 ibatis ,那是另外一个问题了。如果你一定要说如果在业务逻辑里也有持久层的操作怎么
办,那我只能说你的业务逻辑类设计失败了!
不要在设计初期就费尽脑汁弄数据库设计了,把系统的类图设计正确,数据库也就是持久层的操作自然水到渠成了。
另外,有人可能会说,你这套在java里或许挺有价值,但是Rails呢? Agile dev with Rails 的作者可是一开始就设计了
数据库的草图。那是因为Rails的持久层实在是太容易了!Rails 里的model,其实就是业务逻辑的model,在设计的阶段,
你设计出了保存数据的类,那么这个类就可以作为model而存在,而针对这个model的逻辑就可以写在这里。
Agile dev with Rails 的作者虽然给我们画了数据库的草图,但我仍然认为他是从模型的角度去考虑问题,而不是从数据库
的角度考虑的。
分享到:
相关推荐
javaeye被黑 大家看看
3. **数据库优化至关重要**:除了缓存之外,JavaEye还对数据库进行了大量优化,包括索引策略调整、查询语句优化等,以应对高并发场景下的数据访问需求。 4. **利用开源技术**:JavaEye积极采用如Lucene等成熟的开源...
JavaEye热点阅读是JavaEye论坛推出的2009年2月特辑,旨在为Java学习者和开发者提供最新的知识及行业动态。这份资料包含了多个Java相关的主题,包括但不限于并发编程、开源项目、设计模式、框架应用以及软件开发实践...
"JavaEye博文" 本资源摘要信息来自JavaEye博文,作者cutesunshineriver,发布于2010年。该博文涵盖了软件开发、编程、项目管理等多方面的知识点。 在本博文中,我们可以看到多个与软件开发相关的知识点,包括: 1...
JSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mhtJSP复习笔记——第10章 连接数据库 之 JDBC相关 - 堕落天使 - JavaEye技术网站.mht
JavaEye Client SourceCode是一个开源项目,专为Android平台设计,提供了JavaEYE的客户端实现。这个项目的源代码为我们提供了一个深入了解Android应用开发以及Java编程在移动设备上的实践的宝贵资源。接下来,我们将...
3. **MyBatis**:在持久层,JavaEye+可能会使用MyBatis,这是一个简单易用的SQL映射框架,它允许开发者编写原生的SQL查询,同时保持良好的封装和解耦。 4. **Hibernate**:另一种可能的ORM(对象关系映射)框架,...
javaeye的信息提示框代码之css,application.js
在Javaeye Robbin的讨论中,他提到了缓存技术在多种场景下的应用和重要性。 **缓存的作用** 1. **高速缓冲存储**:缓存是一种位于主存储器和慢速I/O设备之间的高速存储器,其目的是减少对慢速设备的访问次数,提高...
### JavaEye3.0开发手记之开发环境搭建详解 #### 一、开发环境搭建概述 随着JavaEye3.0开发计划的启动,本篇文章将详细介绍如何为该项目搭建高效的开发环境。开发过程中不仅需要考虑软件的选择,还需要针对操作...
【JavaEye论坛热点推荐】是IT技术交流的重要平台,涵盖了广泛的软件开发...JavaEye论坛是一个汇集了众多开发者智慧的平台,无论是初学者还是经验丰富的工程师,都能在这里找到有价值的信息,学习新技术,解决实际问题。
自己仿照javaeye写的jspf分页(原创),请各位多多指教
在标签中,“源码”指的是可能涉及到实际的编程代码,这可能包括如何配置JavaEye库,设置PDF生成的参数,以及编写处理数据和布局的代码。而“工具”标签则意味着JavaEye可能是作为开发工具的一部分,用于自动化或...
最后,在社区和工具方面,JavaEye采访了资深会员,收集了他们对于行业趋势和未来技术发展的预测,展示了开源项目的介绍,如LForum for Java和FretsOnFire。 JavaEye新闻月刊不仅为读者提供了一个了解软件开发行业...
在本示例中,我们关注的是如何利用JavaBean连接到MySQL数据库,这是一个非常基础且重要的技能,尤其对于Java初学者来说。下面将详细阐述这个过程。 首先,我们需要创建一个JavaBean类,用于封装数据库连接的相关...
JavaEye API是为Java开发者设计的一套接口,提供了丰富的功能,包括但不限于数据库操作、缓存管理、安全管理、视图渲染等。这些API简化了开发流程,提高了开发效率,并且通常具有良好的可扩展性和灵活性。 2. **...
然而,当你试图在WordPress中寻找与JavaEye类似的代码高亮插件时,可能并未找到完全匹配的解决方案,因此你决定将JavaEye的代码高亮功能提取出来并应用到自己的WordPress站点上。 在你提供的压缩包文件中,我们可以...