科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件基于Spring+Hibernate+Eclipse进行敏捷Java开发(2)

基于Spring+Hibernate+Eclipse进行敏捷Java开发(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在本文中,作者提供了使用敏捷方法和普通Java对象(POJO)构建企业级Java应用程序的一个指南,涉及到大量的从概念到工程发布等多方面的基本内容。

作者:朱先忠编译 来源:51CTO.com 2007年9月3日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
 

敏捷绘图

在继续下面的讨论前,请允许我简短地介绍一种新颖而相当简单的技术敏捷绘图;我正是借助于它绘制了上面的图37。这一技术成为略显笨重的统一建模语言(UML)的一种替代,但是也可以用于补充UML。敏捷绘图为建模提供了最小指南,同时增加了对基于图形设计概念设计这些模型的吸引力。敏捷绘图背后的核心概念包括了四个基本组件(圆、矩形、线及文本),它们使敏捷绘图成为一种事实上可以自由标志的建模技术。通过这四种概念,你几乎能够手工(或借助于一种绘图程序)绘制出任何模型。

更多的细节请访问网站agiledraw.org

重构

敏捷方法的一个核心内容就是,它不推荐一开始就进行过多的设计而使你能够尽快地向顾客展示实际软件的开发结果这与编写全面细致的实际上没有人会读或维护的文档的方法形成对照。当然,其缺点在于,它减少了程序开发过程中的设计量。然而,这也未必是一件糟糕的事情,因为对于大多数程序员来说,一旦他们开始编码就会找到更好的解决问题的办法。

例如,在对问题进行第一遍加工之后,我们往往能够找到更为简洁的构建我们的代码的方法或者是通过改进我们自己的设计或者是因为我们学到了一种更好的使用一种框架(例如HibernateSpring)的方法。

这种代码改进技术被称作重构,被认为是一种连续的设计活动。

重构并非无足轻重;如今它出现在许多的集成开发环境(例如EclipseIntelliJ IDEA)的菜单选项中。在此,我建议您访问Martin Fowler的网站—refactoring.com以更多地了解有关重构的信息;当然,其中还提供了大量的与重构相关的技术介绍。

其它设计考虑

尽管重构能够有助于代码改进,但是,可能还有其它许多的内容需要你首先考虑;其中包括设计事务管理模式,异常处理,设计簇方案,还有应用程序安全(认证,授权和加密)等。任何没有考虑这些重要因素的企业级工程很可能会在后期遇到各种麻烦。在XP工程开发中的一个普通问题就是,应该尽最大努力避免把大量的问题留待后期去重构。即使是绘制如图7所示的极其简略的架构模型也能有助于解决在此所列出的诸多重要的设计问题。

五、敏捷Java开发

现在,既然我们已经讨论完敏捷过程与建模,那么接下来,让我们开始讨论编码的问题。然而,在正式开始编码前,搭建适当的开发环境是相当重要的。因此,在开始讨论HibernateSpring及其它技术前,让我们来首先分析一下搭建开发环境的问题。

建立环境—JDKAntJUnit与版本控制

在正式进行开发Java应用程序之前,需要准备一些小工具,例如Java标准版开发包,一个构建工具(例如Apache Ant),一个重要的敏捷开发工具,一个单元测试框架(例如JUnit)等。

Apache Ant

Ant通常用于构建Java应用程序,然而,它并不仅仅是一个构建工具。例如,其它一些常见的Ant任务还包javaccopydeletemovejunitcvsftpmailexecsleep—所有这些功能都可分别用于从文件管理到代码编译再到发送电子邮件等各个方面。你甚至还能够使用它来编写你自己的定制标签;另外,还存在大量可用的开源和商业Ant任务。

有关于Ant的更多细节,请访问网站ant.apache.org

JUnit与测试驱动开发(TDD)

Erich GammaKent Beck最早实现了JUnit框架。这个框架中的JUnit类提供了许多断言方法(例如,assertTrueassertNull),这些断言有助于你测试期望结果。JUnit是一个简单而强有力的单元测试框架工具。当把它与测试驱动开发(TDDtestdriven.com,由Kent Beck创建的一种方法)相结合时,这个框架能够极大地帮助你编写更好、更清晰、更稳定的代码。据TDD建议,在你编写实际的代码之前要先编写相应的测试代码这是一种根本性的思想转变,但是我强烈推荐你对它作进一步的研究。

有关于JUnit的更多细节请访问网站junit.org

版本控制、命名标准及其它

最后,为了使一个开发团队高效地开展工作,很有必要建立一个开发目录结构,确定类/文件命名约定定义,以及确定所使用的版本控制软件(例如CVS所有这些都是应该预以考虑的关键步骤。

六、基于Hibernate进行数据层开发

关系数据库与面向对象技术已经出现一段时间了,而且看上去它们的未来也完全可以预测。假定在典型情况下Java开发者使用这两种技术进行工作,那么,他们经常使用JDBC来编写数据存取对象(DAO)中的映射代码从而实现数据存取典型情况下,数据的来回传递是借助于数据传输对象(DTO)实现的。作为使JDBC的另一种替代方法是使用EJB实体bean;然而,在EJB 3.0之前,这一直被认为是一种笨拙的方它们都是远程对象。那么,如果你想使用POJO通过一种敏捷方法来实现Java持久性存储,该怎么办呢?答案是借助于例如Hibernate这样的一种ORM框架。

对象关系映射(ORM)代码消除了手工编写JDBC调用的需要,从而使你在XML文件中完成映射,然后简单地以POJO方式来操作数据库记录。Hibernate是一个流行的ORM框架,在Java开发社区中广泛使用。事实上,由于它的流行性,EJB 3.0规范的研发中非常紧密地参考了Hibernate模型。

Hibernate支持大量关系数据库(通过它的dialect)。为了使用这个框架,我们首先需要配置数据库连接典型地,这是在一个称为hibernate.cfg.xml的文件中实现的。然后,在典型情况下,针对使用的每一个表格,我们都把它们映射到一个相应的Java类。例如,下面一行代码展示了一个针对一个名为Department的表格的映射(完整的代码位于Department.hbm.xml文件),它实现把这个表格映射到一个名字也叫DepartmentJava类。

<class name="com.visualpatterns.timex.model.Department" table="Department">

下面这一行代码则展示了针对数据库表格中几个列的映射。其中,departmentCode是一个主键(以数据库术语),而用Hibernate/ORM术语来说则是一个唯一对象标识符:

<id name="departmentCode" column="departmentCode">

<property name="name" column="name"/>

一旦配置好数据库和映射关系,我们就可以简单地从一个SessionFactory中取得一个Hibernate会话(实质上是一个JDBC数据库连接),并以一个Java对象方式来操作记录数据。下面的代码展示了这一点(该代码使用一个值为“IT”departmentCode取回一个Department记录):

Session session = sessionFactory.getCurrentSession();

department = (Department) session.get(Department.class
"IT");

你可能已经猜出,Hibernate还提供方法用于保存和删除数据库记录(对象)。这其中的方法包括saveloadgetupdatemergesaveOrUpdatedelete等。

Hibernate的一个最强有力的特征之一是它的Hibernate查询语言(HQL)。这是一个类SQL语言而且功能十分强大,它支持例如连接、聚合函数、参数替代、表达式和排序等许多功能。下面展示了一个极其简单的示说明如何从Department表格中提取一个对象列表:

departmentList =session.createQuery("from Department ORDER BY name").list();

然而,我们在此仅触及到一些皮毛,因为Hibernate还提供了其它许多特征,例如记录锁定、关联、本地查询、存储过程支持、拦截器和过滤器,等等。

有关Hibernate的更多细节,请访问网站hibernate.org

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章