Try   HackMD

hibernate 2/19自習研究(功能)

tags: hibernate

MemberServiceImpl

package ch01.service.impl; import java.util.List; import org.hibernate.Transaction; import org.hibernate.Session; import org.hibernate.SessionFactory; import ch01.dao.MemberDao; import ch01.dao.impl.MemberHibernateDaoImpl; import ch01.dao.impl.MemberJDBCDaoImpl; import ch01.model.MemberBean; import ch01.service.MemberService; import ch01.utils.HibernateUtils; public class MemberServiceImpl implements MemberService { SessionFactory factory; MemberDao dao; public MemberServiceImpl() { factory = HibernateUtils.getSessionFactory(); dao = new MemberHibernateDaoImpl(); } @Override public boolean isDup(String id) { boolean dup = false; Session session = factory.getCurrentSession(); Transaction tx = null; try { tx = session.beginTransaction(); dup = dao.isDup(id); tx.commit(); } catch (Exception e) { if(tx != null) { tx.rollback(); } throw new RuntimeException(); } return dup; } @Override public int save(MemberBean mb) { int n = 0; Session session = factory.getCurrentSession(); Transaction tx = null; try { tx = session.beginTransaction(); n = dao.save(mb); tx.commit(); } catch (Exception e) { if(tx != null) { tx.rollback(); } throw new RuntimeException(); } return n; } @Override public List<MemberBean> getAllMembers() { List<MemberBean> allMembers =null; // MemberDao dao = new MemberJDBCDaoImpl(); Session session = factory.getCurrentSession(); Transaction tx = null; try { tx = session.beginTransaction(); allMembers = dao.getAllMembers(); tx.commit(); } catch (Exception e) { if(tx !=null) { tx.rollback(); } } return allMembers; } @Override public MemberBean getMember(int pk) { MemberBean member = null; Session session = factory.getCurrentSession(); Transaction tx = null; try { tx = session.beginTransaction(); member = dao.getMember(pk); tx.commit(); } catch (Exception e) { if(tx !=null) { tx.rollback(); } } return member; } @Override public int deleteMember(int ipk) { int d = 0; Session session = factory.getCurrentSession(); Transaction tx = null; try { tx = session.beginTransaction(); d = dao.deleteMember(ipk); tx.commit(); } catch (Exception e) { if(tx !=null) { tx.rollback(); } } return d; } @Override public int updateMember(MemberBean mb) { int up = 0; Session session = factory.getCurrentSession(); Transaction tx = null; try { tx = session.beginTransaction(); up = dao.updateMember(mb); tx.commit(); } catch (Exception e) { if(tx !=null) { tx.rollback(); } } return up; } }

MemberHibernateDaoImpl

package ch01.dao.impl; import java.lang.reflect.Member; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import javax.naming.InitialContext; import javax.sql.DataSource; import org.hibernate.Session; import org.hibernate.SessionFactory; import ch01.dao.MemberDao; import ch01.model.MemberBean; import ch01.utils.HibernateUtils; //實作介面或繼承父類別,程式使用時直接寫父類別/介面名稱 public class MemberHibernateDaoImpl implements MemberDao { SessionFactory factory; public MemberHibernateDaoImpl() { factory = HibernateUtils.getSessionFactory(); } @SuppressWarnings("unchecked") @Override public boolean isDup(String id) { boolean result = false; String hql = "FROM MemberBean where id = :mid "; //:代表要提共的參數 Session session = factory.getCurrentSession(); List<MemberBean> beans = session.createQuery(hql) .setParameter("mid", id) .getResultList(); if(beans.size() ==0) { result = false; }else { result = true; } return result; } @Override public int save(MemberBean mb) { int count = 0; Session session = factory.getCurrentSession(); session.save(mb); System.out.println(mb); count++; return count; } @SuppressWarnings("unchecked") @Override public List<MemberBean> getAllMembers() { List<MemberBean> allMembers = null; String hql = "FROM MemberBean"; Session session = factory.getCurrentSession(); allMembers = session.createQuery(hql).getResultList(); return allMembers; } @Override public MemberBean getMember(int pk) { MemberBean mb = null; Session session = factory.getCurrentSession(); mb = session.get(MemberBean.class,pk); return mb; } @Override public int deleteMember(int pk) { int count = 0; Session session = factory.getCurrentSession(); MemberBean mb = new MemberBean(pk); session.delete(mb); count++; return count; } @Override public int updateMember(MemberBean mb) { int count = 0; // MemberBean mmb = null; Session session = factory.getCurrentSession(); session.update(mb); // mmb = (MemberBean)session.get(MemberBean.class,mb.getPk()); // mmb.setId(mb.getId()); // mmb.setName(mb.getName()); // mmb.setPswd(mb.getPswd()); return count; } }