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

[code]在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);
}

}[/code]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值