面向接口编程在hibernate中的应用

在hibernate中通过操作对象来操作数据表,我们可以让POJO继承一个接口,
创建一个BaseDao,让Session对象保存,删除,更新一个接口实例,
在开启一个Session缓存之后,可以通过传入一个POJO对象来操作数据表



ObjectIn.java
----------------------
package com.supersit.hibernate.Interface;

public interface ObjectIn {

}






BaseDao.java
-----------------
package com.supersit.hibernate.dao;

import org.hibernate.Session;

import com.supersit.hibernate.exception.HibernateMsgException;

/**
 * 
 * <p>
 * 对于持久化类的添加,删除,修改可以通过继承这个类来实现 如果已开启Session缓存,可以传入这个Session对象进行相应的操作,当然也可以
 * 不调用此方法,直接调用Session对象相应的方法即可,在这里只是想实现面向接口编程
 * 对于没有开启Session缓存的情况,直接调用只有一个参数的方法,在方法体中会自动创建 Session对象,进行相关操作...
 * </p>
 * 
 * @author chenwei
 * 2007-10-26
 * 
 */

public class BaseDao {

	/**
	 * <p>
	 * 保存一个com.supersit.hibernate.Interface.ObjectIn对象
	 * </p>
	 * 
	 * @author chenwei
	 * @param com.supersit.hibernate.Interface.ObjectIn
	 * @return boolean
	 * @throws HibernateMsgException
	 */
	public boolean saveObj(com.supersit.hibernate.Interface.ObjectIn in)
			throws HibernateMsgException {

		org.hibernate.Session ses = null;
		org.hibernate.Transaction tran = null;
		boolean flag = true;
		try {
			ses = com.supersit.hibernate.factory.HibernateSessionFactory1
					.getSession();
			tran = ses.beginTransaction();
			ses.save(in);
			tran.commit();
		} catch (Exception e) {
			e.printStackTrace();
			flag = false;
			com.supersit.hibernate.factory.HibernateSessionFactory
					.rollbackTran(tran);
		} finally {
			com.supersit.hibernate.factory.HibernateSessionFactory
					.closeSession(ses);
		}
		return flag;
	}

	/**
	 * <p>
	 * 保存一个com.supersit.hibernate.Interface.ObjectIn对象
	 * </p>
	 * 
	 * @author chenwei
	 * @param com.supersit.hibernate.Interface.ObjectIn
	 * @return boolean
	 * @throws HibernateMsgException
	 */
	public boolean saveObj(Session session,
			com.supersit.hibernate.Interface.ObjectIn in) {
		boolean flag = true;
		try {
			session.save(in);
		} catch (Exception e) {
			e.printStackTrace();
			flag = false;
		}
		return flag;
	}

	/**
	 * <p>
	 * 修改一个com.supersit.hibernate.Interface.ObjectIn对象
	 * </p>
	 * 
	 * @author chenwei
	 * @param com.supersit.hibernate.Interface.ObjectIn
	 * @return boolean
	 * @throws HibernateMsgException
	 */
	public boolean updateObj(com.supersit.hibernate.Interface.ObjectIn in)
			throws HibernateMsgException {
		boolean flag = true;
		org.hibernate.Session ses = null;
		org.hibernate.Transaction tran = null;
		try {
			ses = com.supersit.hibernate.factory.HibernateSessionFactory
					.getSession();
			tran = ses.beginTransaction();
			ses.update(in);
			tran.commit();
		} catch (Exception e) {
			flag = false;
			com.supersit.hibernate.factory.HibernateSessionFactory
					.rollbackTran(tran);
		} finally {
			com.supersit.hibernate.factory.HibernateSessionFactory
					.closeSession(ses);
		}
		return flag;
	}

	/**
	 * <p>
	 * 修改一个com.supersit.hibernate.Interface.ObjectIn对象
	 * </p>
	 * 
	 * @author chenwei
	 * @param com.supersit.hibernate.Interface.ObjectIn
	 * @return boolean
	 * @throws HibernateMsgException
	 */
	public boolean updateObj(Session session,
			com.supersit.hibernate.Interface.ObjectIn in) {
		boolean flag = true;
		try {
			session.update(in);
		} catch (Exception e) {
			flag = false;
		}
		return flag;
	}

	/**
	 * <p>
	 * 删除一个com.supersit.hibernate.Interface.ObjectIn对象
	 * </p>
	 * 
	 * @author chenwei
	 * @param com.supersit.hibernate.Interface.ObjectIn
	 * @return boolean
	 * @throws HibernateMsgException
	 */

	public boolean deleteObj(com.supersit.hibernate.Interface.ObjectIn in)
			throws HibernateMsgException {
		boolean flag = true;
		org.hibernate.Session session = null;
		org.hibernate.Transaction tran = null;
		try {
			session = com.supersit.hibernate.factory.HibernateSessionFactory
					.getSession();
			tran = session.beginTransaction();
			session.delete(in);
			tran.commit();
		} catch (Exception e) {
			flag = false;
			com.supersit.hibernate.factory.HibernateSessionFactory
					.rollbackTran(tran);
		} finally {
			com.supersit.hibernate.factory.HibernateSessionFactory
					.closeSession(session);
		}
		return flag;
	}

	/**
	 * <p>
	 * 删除一个com.supersit.hibernate.Interface.ObjectIn对象
	 * </p>
	 * 
	 * @author chenwei
	 * @param com.supersit.hibernate.Interface.ObjectIn
	 * @return boolean
	 * @throws HibernateMsgException
	 */

	public boolean deleteObj(Session session,
			com.supersit.hibernate.Interface.ObjectIn in) {
		boolean flag = true;
		try {
			session.delete(in);
		} catch (Exception e) {
			flag = false;
		}
		return flag;
	}
}



Employee.java
---------------------------
package com.supersit.hibernate.bean;

import java.util.Date;
import java.util.Set;

public class Employee implements java.io.Serializable,
		com.supersit.hibernate.Interface.ObjectIn {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	
	//雇员编号
	private Integer eid;

	//雇员姓名
	private String ename;

	//入职时间
	private java.util.Date join_date;

	
	//角色集合
	private java.util.Set<Role> roles = new java.util.HashSet<Role>();

	public Employee(Integer eid, String ename, Date join_date) {
		this.eid = eid;
		this.ename = ename;
		this.join_date = join_date;
	}

	public Employee(Integer eid, String ename, Date join_date, Set<Role> roles) {
		this.eid = eid;
		this.ename = ename;
		this.join_date = join_date;
		this.roles = roles;
	}

	public java.util.Set getRoles() {
		return roles;
	}

	public void setRoles(java.util.Set<Role> roles) {
		this.roles = roles;
	}

	public Employee() {
	}

	public Integer getEid() {
		return eid;
	}

	public void setEid(Integer eid) {
		this.eid = eid;
	}

	public String getEname() {
		return ename;
	}

	public void setEname(String ename) {
		this.ename = ename;
	}

	public java.util.Date getJoin_date() {
		return join_date;
	}

	public void setJoin_date(java.util.Date join_date) {
		this.join_date = join_date;
	}

}




调和示例:
---------------
// 保存对象
	public static void insert() throws HibernateMsgException {

		java.util.Date date = new java.util.Date();
		java.text.SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		try {
			date = format.parse("2007-10-17");
		} catch (ParseException e) {
			e.printStackTrace();
		}

//创建一个雇员对象
		Employee emp = new Employee(new Integer(1), "张信哲", date);

		Session session = null;
		Transaction tran = null;
		try {
			session = com.supersit.hibernate.factory.HibernateSessionFactory
					.getSession();
			tran = session.beginTransaction();
//已开启Session缓存,调用有两个参数的保存方法,如果没有开启Session缓存,直接调用有一个参数的保存方法即可实现
			boolean b = new BaseDao().saveObj(session, emp);
			if (b) {
				System.out.println("成功保存一个Employee对象");
			}
			tran.commit();
		} catch (Exception e) {
			com.supersit.hibernate.factory.HibernateSessionFactory
					.rollbackTran(tran);
		} finally {
			com.supersit.hibernate.factory.HibernateSessionFactory
					.closeSession(session);
		}

	}

你可能感兴趣的:(java,DAO,编程,bean,Hibernate)