1. 程式人生 > >從零開始做SSH專案(二)

從零開始做SSH專案(二)

使用hibernate測試載入資料、刪除資料和修改資料等功能時,針對的是與資料庫表user對應的User。

為了簡化對其他資料表對應的實體類的持久化操作,可以在專案中建立一個BaseHibernateDAO類,將資料的載入、新增、修改、刪除等持久化方法封裝其中。

 

BaseHibernateDAO.java

package com.dao;
import java.io.Serializable;
import javax.xml.rpc.handler.HandlerInfo;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.util.HibernateSessionFactory; public class BaseHibernateDAO { protected void add(Object object) { Transaction t = null; Session session = HibernateSessionFactory.getSession(); //獲取session try{ //開始事務 t = session.beginTransaction();
//持久化事務 session.save(object); //提交事務 t.commit(); }catch (Exception e) { if(t!=null){ //事務回滾 t.rollback(); } e.printStackTrace(); }finally{ HibernateSessionFactory.closeSession(); } }
//載入資料 protected Object get(Class cla, Serializable id) { Object object = null; Session session = HibernateSessionFactory.getSession(); try{ object = session.get(cla, id); }catch (Exception e) { e.printStackTrace(); }finally{ HibernateSessionFactory.closeSession(); } return object; } //刪除資料 protected void delete(Object object) { Transaction t = null; Session session = HibernateSessionFactory.getSession(); try { t = session.beginTransaction(); session.delete(object); t.commit(); } catch (Exception e) { if(t!=null){ t.rollback(); } e.printStackTrace(); } finally{ HibernateSessionFactory.closeSession(); } } //修改資料 protected void update(Object object) { Transaction t = null; Session session = HibernateSessionFactory.getSession(); try { t = session.beginTransaction(); session.update(object); t.commit(); } catch (Exception e) { if(t!=null){ t.rollback(); } e.printStackTrace(); } finally{ HibernateSessionFactory.closeSession(); } } }

 

為了使得資料訪問層的程式碼更加清晰,建立一個介面UserDAO.java,並在介面中定義一些方法

package com.dao;
import com.vo.Stu;

public interface UserDAO {
    public void add(Stu stu);
    public void delete(Stu stu);
    public Stu get(int id);
    public void update(Stu stu);
}

 

實現類UserDAOImpl類繼承BaseHibernateDAO類(操作資料),實現UserDAO介面(具體實現方法)

package com.dao;

import com.vo.Stu;

public class UserDAOImpl extends BaseHibernateDAO implements UserDAO {

    @Override
    public void add(Stu stu) {
        // TODO Auto-generated method stub
        super.add(stu);
    }

    @Override
    public void delete(Stu stu) {
        // TODO Auto-generated method stub
        super.delete(stu);
    }

    @Override
    public Stu get(int id) {
        // TODO Auto-generated method stub
        return (Stu) super.get(Stu.class, id);
    }

    @Override
    public void update(Stu stu) {
        // TODO Auto-generated method stub
        super.update(stu);
    }

}

 

建立測試類

package com.test;


import java.util.HashSet;
import java.util.Set;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.dao.UserDAO;
import com.dao.UserDAOImpl;
import com.util.HibernateSessionFactory;
import com.vo.Stu;

public class OpTest {
    public static void main(String[] args) {
        OpTest test = new OpTest();
        //test.testAdd();
        //test.testDelete(3);
        test.testUpdate(2);
    }
    //新增資料
    public void testAdd() {
        Stu stu = new Stu();
        stu.setSage(11);
        stu.setSname("85693897453");
        stu.setSnumber("2016");
        UserDAO userDAO = new UserDAOImpl();
        userDAO.add(stu);
    }
    
    //刪除資料
    public void testDelete(int id) {
        UserDAO userDAO = new UserDAOImpl();
        Stu stu = userDAO.get(id);
        userDAO.delete(stu);
    }
    
    //修改資料
    public void testUpdate(int id) {
        UserDAO userDAO = new UserDAOImpl();
        Stu stu = userDAO.get(id);
        stu.setSname("FUCK U!");
        userDAO.update(stu);
    }
}