At line 1 changed 1 line. |
__Part I:__ [在AppFuse建立DAO和对象|CreateDAO_zh] - 一个建立对象(代表数据库的表)和把这些对象存储到数据库的Java类的教程。 |
__Part I:__ [在AppFuse建立DAO和POJO |CreateDAO_zh] - 一个建立对象(代表数据库的表)和把这些对象存储到数据库的Java类的教程。 |
At line 43 changed 1 line. |
%%note __注意:__ 直接拷贝本教程的代码 [在FireFox下无效|http://raibledesigns.com/page/rd?anchor=java2html_plugin_for_jspwiki_causes],但我们可以通过CTRL+Click选定一个代码所在的工作区(OS X下是Command+Click),然后再拷贝。%% |
%%note __注意:__ [不能在FireFox中|http://raibledesigns.com/page/rd?anchor=java2html_plugin_for_jspwiki_causes]直接拷贝本教程的代码 ,但我们可以通过CTRL+Click选定一个代码所在的工作区(OS X下是Command+Click),然后再拷贝。%% |
At line 62 changed 1 line. |
这个类必须扩展[BaseObject|http://raibledesigns.com/downloads/appfuse/api/org/appfuse/model/BaseObject.java.html],而这个BaseObject有三个抽象方法(equals(), hashCode()和toString())需要你在Person类里实现,前两个是Hibernate的需要。为了完成这部分工作最简单的方式是使用[Commonclipse|http://commonclipse.sf.net],关于这个工具更多的信息可以在[Lee Grey的网站|http://www.leegrey.com/hmm/2004/09/29/1096491256000.html]里看到,另外一个你可以使用的Eclipse的插件是[Commons4E|http://commons4e.berlios.de/],我还没有使用过,这里不便对其功能作出评论。 |
这个类必须扩展[BaseObject|http://raibledesigns.com/downloads/appfuse/api/org/appfuse/model/BaseObject.java.html],而这个BaseObject有三个抽象方法(equals(), hashCode()和toString())需要你在Person类里实现,前两个是Hibernate的需要。为了完成这部分工作最简单的方式是使用[Commonclipse|http://commonclipse.sf.net],关于这个工具更多的信息可以在[Lee Grey的站点|http://www.leegrey.com/hmm/2004/09/29/1096491256000.html]里看到,另外一个你可以使用的Eclipse的插件是[Commons4E|http://commons4e.berlios.de/],我还没有使用过,这里不便对其功能作出评论。 |
At line 93 changed 1 line. |
;:%%(color: blue)''我使用{{generator-class="increment"}}而不使用{{generate-class="native"}} 是因为我对数据库使用"native"时[发现了一些问题|AppFuseOnDB2],如果你只是希望使用MySQL,__推荐使用"native"值__,本教程使用increment。''%% |
;:%%(color: blue)''我使用{{generator-class="increment"}}而不使用{{generate-class="native"}} 是因为我对数据库使用"native"时[发现一些问题|AppFuseOnDB2],如果你只是希望使用MySQL,__推荐使用"native"值__,本教程使用increment。''%% |
At line 181 changed 1 line. |
现在,我们要创建一个DaoTest来测试我们的DAO的工作,等会儿,你说,我们还不曾创建DAO呢!,你说得对。无论如何,我发现[测试驱动开发|http://www.artima.com/intv/testdriven.html]大大的促进了软件质量,在许多年里我一直认为__在写代码之前写测试__是胡说八道,这看起来很愚蠢,但当我尝试之后我认为这样非常好,现在我按照测试驱动的方式工作完全因为我发现这样可以大大提高我软件开发的效率。 |
现在,我们要创建一个DaoTest来测试我们的DAO的工作,等会儿,你说,我们还不曾创建DAO呢!,你说得对。无论如何,我发现[测试驱动开发|http://www.artima.com/intv/testdriven.html]大大的促进了软件质量,在许多年里我一直认为__在写代码之前写测试__是胡说八道,这看起来很愚蠢,但当我尝试之后我认为这样非常好,现在我按照测试驱动的方式工作完全因为我发现这样可以大大提高我软件开发的效率。 |
At line 199 changed 3 lines. |
protected void setUp() throws Exception { |
super.setUp(); |
dao = (PersonDao) ctx.getBean("personDao"); |
public void setPersonDao(PersonDao dao) { |
this.dao = dao; |
At line 203 removed 5 lines. |
|
protected void tearDown() throws Exception { |
super.tearDown(); |
dao = null; |
} |
At line 304 changed 1 line. |
在目前情况下,还不可以编译PersonDaoTest,因为在类路径里还没有PersonDao.class,我们需要创建它。PersonDAO.java是一个接口,PersonDAOHibernate.java是它的Hibernate实现,让我们继续,开始创建。 |
在目前情况下,还不可以编译PersonDaoTest,因为在类路径里还没有PersonDao.class,我们需要创建它。PersonDao.java是一个接口,PersonDaoHibernate.java是它的Hibernate实现,让我们继续,开始创建。 |
At line 326 changed 1 line. |
让我们创建一个实现PersonDao的类PersonDaoHibernate并使用Hibernate来get/save/delete这个Person对象,为此,我们在{{src/dao/**/dao/hibernate}}创建一个新类{{PersonDAOHibernate.java}},它应该扩展[BaseDaoHibernate|http://raibledesigns.com/downloads/appfuse/api/org/appfuse/dao/BaseDAOHibernate.java.html],并且实现PersonDAO。为了简洁,省略Javadocs。'' |
让我们创建一个实现PersonDao的类PersonDaoHibernate并使用Hibernate来get/save/delete这个Person对象,为此,我们在{{src/dao/**/dao/hibernate}}创建一个新类{{PersonDaoHibernate.java}},它应该扩展[BaseDaoHibernate|http://raibledesigns.com/downloads/appfuse/api/org/appfuse/dao/BaseDAOHibernate.java.html],并且实现PersonDao。''为了简洁,省略Javadocs。'' |
At line 359 changed 1 line. |
现在,如果你运行__ant test-dao -Dtestcase=PersonDao__,你会得到同样的错误,我们必须配置Spring来让它知道PersonDaoHibernate是PersonDAO的实现,同样的,我们也要告诉它还有个Person对象。 |
现在,如果你运行__ant test-dao -Dtestcase=PersonDao__,你会得到同样的错误,我们必须配置Spring来让它知道PersonDaoHibernate是PersonDao的实现,同样的,我们也要告诉它还有个Person对象。 |
At line 371 changed 2 lines. |
<value>org/appfuse/model/User.hbm.xml</value> |
<value>org/appfuse/model/UserCookie.hbm.xml</value> |
<value>org/appfuse/model/User.hbm.xml</value> |
At line 398 changed 1 line. |
''下一部分:'' __Part II:__ [创建管理器Manager|CreateManager] - 是一个建立类似于[Session Facades|http://java.sun.com/blueprints/patterns/SessionFacade.html]的,但不使用EJBs的业务Facade说明,这个facades用来建立从前端到DAO层的联系。 |
''下一部分:'' __Part II:__ [创建新的Manager|CreateManager_zh] - 是一个建立类似于[Session Facades|http://java.sun.com/blueprints/patterns/SessionFacade.html]的,但不使用EJBs的业务Facade说明,这个facades用来建立从前端到DAO层的联系。 |