從零開始做SSH專案(二)
阿新 • • 發佈:2018-12-24
使用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); } }