这是个用JSP+Hibernate编写的非常简单的留言系统例子,是个准三层结构(因为为了节省时间着重介绍hibernate部分,省去的 service层,转而使用jsp页面进行业务处理,但并不是在jsp页面上过多的编写java代码,而是使用专门的jsp作为业务处理层)
package
cn.hxex.message.config;

import
org.apache.commons.lang.builder.ReflectionToStringBuilder;

import
cn.hxex.message.exception.MessageException;

public
class
BeanConfig

...
{
privateStringid;
privateStringtype;


publicStringgetId()...{
returnid;
}

publicvoidsetId(Stringid)...{
this.id=id;
}


publicStringgetType()...{
returntype;
}

publicvoidsetType(Stringtype)...{
this.type=type;
}

privateObjectinstance;
publicObjectgetInstance()

...{
if(null!=instance)returninstance;

try

...{
Classcls=Class.forName(getType());
instance=cls.newInstance();
returninstance;
}
catch(Exceptionex)

...{
thrownewMessageException("Couldn'tfindclass:"+getType());
}
}

publicStringtoString()

...{
returnReflectionToStringBuilder.toString(this);
}
}
package
cn.hxex.message.config;

import
java.util.Hashtable;

import
org.apache.commons.lang.builder.ReflectionToStringBuilder;

import
cn.hxex.message.exception.MessageException;


/***/
/**
*系统配置信息类
*/
public
class
MessageConfig

...
{
publicstaticHashtablebeans;


/***//**
*构造函数
*/
publicMessageConfig()

...{
beans=newHashtable();
}


/***//**
*增加一个BeanConfig对象
*@parambean
*/
publicvoidaddBean(BeanConfigbean)

...{
beans.put(bean.getId(),bean);
}


/***//**
*得到一个DAO接口对象的实例
*@paramnameDAO接口对象的名称
*@return指定DAO接口的实现类的实例
*/
publicObjectgetBean(Stringname)

...{
BeanConfigconfig=(BeanConfig)beans.get(name);

if(config==null)

...{
thrownewMessageException("Couldn'tfindthebean:"+name);
}

returnconfig.getInstance();
}

publicStringtoString()

...{
returnReflectionToStringBuilder.toString(this);
}
}
package
cn.hxex.message.constants;


public
class
Constants
...
{
publicstaticfinalStringSESSION_USER="cn.hxex.message.user";
}
package
cn.hxex.message.dao;

import
java.util.List;

import
cn.hxex.message.model.Message;

public
interface
IMessageDAO

...
{
publicvoidsaveMessage(Messagemessage);
publicvoidupdateMessage(Messagemessage);
publicListgetMessages();
publicvoiddeleteMessage(Stringid,StringuserId);
publicMessagegetMessage(Stringid);
}
package
cn.hxex.message.dao;

import
cn.hxex.message.model.User;

public
interface
IUserDAO

...
{
publicvoidsaveUser(Useruser);
publicUsergetUser(Stringusername);
publicUsergetUserById(Stringid);
}
package
cn.hxex.message.dao.hibernate;

import
java.util.List;

import
cn.hxex.message.dao.IMessageDAO;
import
cn.hxex.message.exception.MessageDAOException;
import
cn.hxex.message.model.Message;
import
cn.hxex.message.util.HibernateDAO;


/***/
/**
*IMessageDAO接口的Hibernate实现
*/
public
class
MessageDAO
extends
HibernateDAO
implements
IMessageDAO

...
{


/***//**
*保存留言信息
*
*@parammessage
*被保存的留言对象
*/
publicvoidsaveMessage(Messagemessage)

...{
super.saveObject(message);
}


/***//**
*得到所有的留言信息
*
*@return返回所有的留言信息
*/
publicListgetMessages()

...{
Stringhsql="fromMessage";
returnsuper.getObjects(hsql);
}


/***//**
*删除留言信息
*
*@paramid
*要删除的留言信息的ID值
*@paramuserId
*执行删除操作的用户ID
*/
publicvoiddeleteMessage(Stringid,StringuserId)

...{
Messagemsg=getMessage(id);
if(msg==null)

...{
thrownewMessageDAOException("找不到你所要删除的留言!");
}

if(!msg.getUser().getId().equals(userId))

...{
thrownewMessageDAOException("你不能删除别人的留言!");
}

deleteObject(msg);
}


/***//**
*得到留言信息
*
*@paramid
*留言的ID值
*@return指定ID值得留言对象
*/
publicMessagegetMessage(Stringid)

...{
return(Message)getObject(Message.class,id);
}


/***//**
*更新留言信息
*
*@parammessage
*欲更新的留言对象
*/
publicvoidupdateMessage(Messagemessage)

...{
updateObject(message);
}

}
UserDAO
package
cn.hxex.message.dao.hibernate;

import
cn.hxex.message.dao.IUserDAO;
import
cn.hxex.message.exception.MessageDAOException;
import
cn.hxex.message.model.User;
import
cn.hxex.message.util.HibernateDAO;


/***/
/**
*IUserDAO接口的Hibernate实现
*/
public
class
UserDAO
extends
HibernateDAO
implements
IUserDAO

...
{


/***//**
*保存用户信息到数据库
*@paramuser被保存的用户对象
*/
publicvoidsaveUser(Useruser)

...{
if(user==null)
return;

Useru=getUser(user.getName());
if(u!=
开发工具:MyEclipse+Mysql
目录结构如下:
config(配置类)
BeanConfig.java
MessageConfig.java
constants(常量类)
Constants.java
dao(数据访问类)
hibernate
MessageDAO.java
UserDAO.java
IMessageDAO.java
IUserDAO.java
exception(异常类)
MessageAuthorityException.java
MessageDAOException.java
MessageException.java
model(模型类)
Message.hbm.xml
Message.java
User.hbm.xml
User.java
sql (数据库脚本)
scrip.sql
util(工具类)
DaoFactory.java
HibernateDAO.java
HibernateFilter.java
HibernateUtil.java
BeanConfig.java

























































MessageConfig

































































Constants







IMessageDAO
















IUserDAO












MessageDAO




































































































UserDAO



























