这段代码能否做成通用DAO???

前段时间在学习Hibernate,今天正式开始用,在用的过程中我为每个表(对象)做了一个DAO,主要用来实现增删改查,因为里面的很多的表(对象)需要写很多DAO,所以我就抽象了一个类,先前也没觉得怎么,不过到后来觉得我抽象出来的这个东西好象能通用吧... :oops: ...
现在拿出来让大家看看我这样抽象是否正确,是否对大家有点帮助...同时也希望它能完善...
自己只是简单的测了一下下 :wink:


package com.st.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.st.hibernate.HibernateSessionFactory;


public abstract class abstractDAO
{
private Object obj;
// 实现增加,删除,修改的功能
public boolean idu(char t)
{
if(this.obj!=null)
{
Session session=HibernateSessionFactory.getSession();
Transaction ts=session.beginTransaction();
switch (t)
{
case 'i':
insert(this.obj,session);
break;
case 'd':
delete(this.obj,session);
break;
case 'u':
update(this.obj,session);
break;
}
ts.commit();
session.close();
return true;
}
return false;
}
//查询
public List select(char t)
{
Session session=HibernateSessionFactory.getSession();
Transaction ts=session.beginTransaction();
List list=null;
switch (t)
{
case 'f':
list=selectFactor(this.obj,session);
break;
case 'a':
list=selectAll(session);
break;
}
ts.commit();
session.close();
return list;
}
//删除
private void delete(Object obj,Session session)
{
session.delete(obj);
}
//更新
private void update(Object obj,Session session)
{
session.update(obj);
}
//添加
private void insert(Object obj,Session session)
{
session.save(obj);
}
//查询出所有的记录
private List selectAll(Session session)
{
Criteria criteria=session.createCriteria(this.obj.getClass());
return criteria.list();
}
//查询,这个查询主要是用来进行模糊查询,或有条件的查询
protected abstract List selectFactor(Object obj,Session session);
// {
// if(p!=null)
// {
// Products tempp=null;
Query qu=session.createQuery("from Products");
// Criteria criteria=session.createCriteria(Products.class);
// //得到一个Products的克隆版本
// try
// {
// tempp=(Products) p.clone();
// } catch (CloneNotSupportedException e)
// {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// criteria.add(Example.create(tempp));
// if(this.products.getName()!=null && !this.products.getName().equals(""))
// criteria.add(Restrictions.like("name", "%"+p.getName()+"%"));
// return criteria.list();
// }
// else
// return null;
// }


public Object getObj()
{
return obj;
}
public void setObj(Object obj)
{
this.obj = obj;
}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值