首先分析一下不同層面他們的作用和相互關係。
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。。。重要的就這幾步。