首先分析一下不同层面他们的作用和相互关系。
1 ,po 表映射的持久对象。
2,dao 封装对数据库的相关操作。
3,vo 值对象。传递数据。
4,bo 调用dao结合vo,封装业务逻辑。
通常情况下建立一个BaseDAO这样封装通用方法的类,有上层接口当然更好。
业务层尽量不要出现po类,尤其是hql,尽量做到层面之间的低耦合。
现在开始-->做一个添加和删除操作
BaseDAO
public class BaseDAO {
protected void add(Object obj) throws Exception {
Session session = null;
try {
session = HibernateSessionFactory.getSession();
session.save(obj);
session.beginTransaction().commit();
if (session != null) {
session.close();
}
} catch (RuntimeException e) {
session.beginTransaction().rollback();
if (session != null) {
session.close();
}
throw e }
。。。。。。。。。。
}
首先建立一个person表映射,接着是PersonDAO
PersonDAO
package sh.dao;
import org.hibernate.Query;
import org.hibernate.Session;
import config.HibernateSessionFactory;
import sh.po.Person;
/*
* DAO
* */
public class PersonDAO {
public boolean add(String name, String pwd) throws Exception {
BaseDAO baseDAO = new BaseDAO();
Person person = new Person();
person.setName(name);
person.setPwd(pwd);
baseDAO.add(person);
return true;
}
public boolean delete(String name) {
Session session = null;
try {
session = HibernateSessionFactory.getSession();
session.beginTransaction();
Query query = session
.createQuery("delete from Person where name=?");
query.setString(0, name);
query.executeUpdate();
session.beginTransaction().commit();
if (session != null) {
session.close();
}
} catch (Exception e) {
// TODO: handle exception
if (session != null) {
session.close();
}
}
return true;
}
}
struts Action 里面添上
添加
boolean flag = new PersonDAO().add(infoForm.getName(), infoForm
.getPwd());
删除
boolean flag = new PersonDAO().delete(infoForm.getName());
ok。。。重要的就这几步。