技术开发 频道

构建Portlet应用

    创建持久层

    1. 持久化BO。 Hibernate是通过POJO工作的, 因此我们先给InfoObject对象的fileds 加上getter,setter方法。Hibernate通过XML文件来映射(OR)对象,在这里,我们使用XDoclet工具来生成hibernate的XML映射文件。为了使用Xdoclet这个工具,我们需要在BO对象的代码里面添加一些描述语句。修改后的BO对象代码如下: 

    代码清单2:
package com.ibm.sample.bo; /** * @author rayguo mail:guorui@cn.ibm.com * * @hibernate.class table="InfoObject" * */ public class InfoObject { private Long infoId; private String title; private String content; /** * Returns the Content. * @return String * * @hibernate.property * @hibernate.column name="Content" not-null="false" * length="3000" */ public String getContent() { return content; } /** * Returns the id. * @return Long * * @hibernate.id column="infoId" * generator-class="native" */ public Long getInfoId() { return infoId; } /** * Returns the Title. * @return String * * @hibernate.property * @hibernate.column name="title" not-null="true" * length="200" */ public String getTitle() { return title; } public void setContent(String string) { content = string; } public void setInfoId(Long long1) { infoId = long1; } public void setTitle(String string) { title = string; } }


    在类名前的注释@hibernate.class table="InfoObject",表明了这个类将被映射到数据库表InfoObject,在get方法前的注释,表明了每个属性在数据库表中的对应字段。

    2.运行Ant的XDoclet任务,生成InfoObject.hbm.xml文件。在WSAD中右键点击build.xml文件,并选择"运行Ant",运行其中的hibernatedoclet任务,将会在classes目录下生成所需要的InfoObject.hbm.xml文件。在这个文件中,还定义了用来生成数据库表结构的任务,将在下面做详细说明。

    3.创建DAO接口。为了程序的扩展性,我们首先需要创建一个提供数据访问服务的接口层,定义出对外的访问接口,在本示例中,为IInfoObjectDAO,代码如下:

package com.ibm.sample.dao; public interface IInfoObjectDAO { public abstract InfoObject saveInfoObject(InfoObject info); public abstract InfoObject getInfoObjectById(Long infoId); public abstract List getAllInfoObjects(); public abstract void removeInfoObject(Long infoId); }

    这个接口定义了对InfoObject的RUCD各项操作。

    4. 创建DAO层的实现。本示例的DAO层实现,我们采用了Hibernate,按通常的实现,我们需要先得到Hibernate的session对象,然后调用session对象的save,delete,update等方法来实现对数据对象的CRUD操作,但由于Spring框架已经提供了对Hibernate框架的良好支持,使我们不再需要再头痛于Hibernate的session管理,事务管理等方面,这些Spring框架已经进行了很好的封装,我们只需要将我们的Hibernate实现类继承HibernateDaoSupport类,然后通过调用HibernateTemplate类上的方法,就可以实现我们需要的数据对象访问的操作。代码如下: 

    代码清单4:

package com.ibm.sample.dao.hibernate; public class InfoObjectDAOHibernate extends HibernateDaoSupport implements IInfoObjectDAO { public InfoObjectDAOHibernate(){ super(); } public InfoObject saveInfoObject(InfoObject info) { getHibernateTemplate().saveOrUpdate(info); return info; } public InfoObject getInfoObjectById(Long infoId){ InfoObject info = (InfoObject) getHibernateTemplate().load(InfoObject.class, infoId); return info; } public void removeInfoObject(Long infoId) { InfoObject info = getInfoObjectById(infoId); getHibernateTemplate().delete(info); } public List getAllInfoObjects() { return getHibernateTemplate().loadAll(InfoObject.class); } }
0
相关文章