一. 创建一个POJO 在src/dao/**/model 路径里面
1.创建这个Person确实没有什么难度,呵呵 不过在继承BaseObject的时候麻烦了一点,Matt 介绍了生成
(equals(),hashCode() and toString())的两个Eclipse plugin ,我两款都适用了。 commonclipse
生成的代码有点错误,没有仔细的研究 不过他目前只是支持Eclipse . 使用 Commons4E 就没有出现这样的
问题,不过Commons4E 不能选择我需要的变量,全部都Generate 出来了,在使用的时候可以两个一起根据需要来
使用。
2.(ant setup-db)
After Generated Getters and Setters 就是添加 XDoclet tags 了 , 以前在一个项目中开发EJB的时候也用过XDoclet,理解起来没有什么难度,
也就是在class Person 的Javadoc上面 @hibernate.class table="person" ,然后就是变量里面的了。XDoclet tags 都必须放到getters 上面的
Javadoc里面,这样以后ant build的时候就会在数据库里面生成一个 “person” 的表和相应的字段。
同时在build/dao/gen/**/model下面会生成Hibernate O/R mapping(对象和数据关系库的映射)的xml文件(Person.hbm.xml)
二.创建DAOTest -测试驱动开发(PS: 以前在开发的时候没有这么做过,确实觉得挺别扭的。不过作者鼓励我们这么做,
而且会提高代码质量和效率,既然so good Why don't try to do)
作者介绍用AppGen可以生成所有后面AppFuse所需要的类,不过专家还是鼓励我们在完成这个Tutorials的时候还是Step by Step Code
在 ”test/dao/**/dao“ 下面创建 PersonDAOTest.java .做这步的时候如果你去稍微了解一下JUnit的话或许效果更好一些。JUnit 确实
是一个不错的测试框架,你可以看《JUnit in action》,那是一本不错的书。
三.创建一个DAO 接口去执行CRUD的 (src/dao/**/dao)
就是偶们常常说的对接口编程。这个inerface确实很easy ,在PersonDAO.java中定义基本的CRUD方法,而且Spring封装了所有的
RuntimeException 连异常Exception都不用抛了。
四.创建一个PersonDAO的实现类,实现他的接口还要继承BaseDAOHibernate。(src/dao/**/dao/hibernate)
五. So for So good
如果你现在就 ant test-dao -Dtestcase=PersonDAO.会出现一个error: 告诉我们需要configure spring
这样我们就的在 src/dao/**/dao/hibernate/applicationContext-hibernate.xml中配置他们的关系,告诉Spring
where is the Person.hbm.xml
<property name="mappingResources">
<list>
<value>org/appfuse/model/Person.hbm.xml</value>
<value>org/appfuse/model/Role.hbm.xml</value>
<value>org/appfuse/model/User.hbm.xml</value>
<value>org/appfuse/model/UserCookie.hbm.xml</value>
</list>
</property>
添加下面的代码 bind PersonDAOHibernate to PersonDAO
<!-- PersonDAO: Hibernate implementation -->
<bean id="personDAO" class="org.appfuse.dao.hibernate.PersonDAOHibernate">
<property name="sessionFactory"><ref local="sessionFactory"/></property>
</bean>
ps:由于我的粗心,添加上面代码的时候重复添加了。浪费了我几分钟。老实看到好像小日本一样讨厌的build failed
用ant-reports可以把错误的信息报告发到build\test\reports下面,你可以去那里检查错误。
最后还是看到了Build Successful --OH Yeah Baby,Yead Let Our call spring together