构建Portlet应用
创建持久层
1. 持久化BO。 Hibernate是通过POJO工作的, 因此我们先给InfoObject对象的fileds 加上getter,setter方法。Hibernate通过XML文件来映射(OR)对象,在这里,我们使用XDoclet工具来生成hibernate的XML映射文件。为了使用Xdoclet这个工具,我们需要在BO对象的代码里面添加一些描述语句。修改后的BO对象代码如下:
代码清单2:
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
相关文章
