hibernate中对任何Entity通用的Dao方法

使用Hibernate不是很久,自己在边学习的过程中发现如果要每增加一个Entity就要实现一个DAO和DaoImp的话会比较麻烦,所以自己就写了下面这两个类来实现了对所有Entity通用的操作。

首先写一个 Dao interface:

package com.cennavi.dao;

public interface Dao<T> {
public void add(T a );
public T find(Class<T> t,int id);
public void delete(T t);
public void update(T t);
}



使用泛型,把需要使用Dao的Entity抽象为T;

然后写一个实现类 DaoImp.class:


package com.cennavi.daoImp;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.cennavi.dao.Dao;
import com.cennavi.factory.HibernateSessionFactory;

public class DaoImp<T> implements Dao<T> {
public Session sf=HibernateSessionFactory.getSession();

@Override
public void add(T obj) {
Transaction ts=sf.beginTransaction();
ts.begin();
sf.save(obj);
ts.commit();
}

@Override
public void delete(T obj) {
Transaction ts=sf.beginTransaction();
ts.begin();
sf.delete(obj);
ts.commit();
}

@SuppressWarnings("unchecked")
@Override
public T find(Class<T> t,int id) {
Transaction ts=sf.beginTransaction();
T obj=(T)sf.get(t, id);
ts.commit();
return obj;
}

@Override
public void update(T obj) {
Transaction ts=sf.beginTransaction();
ts.begin();
sf.saveOrUpdate(obj);
ts.commit();
}

}


当然没有完全泛型化,如find方法中的id.同时HibernateSessionFactory为一个sessionFactory的提供者。

下面是一个测试Entity

package com.cennavi.pojo;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class User implements Serializable {
private static final long serialVersionUID = 1186025505012915442L;

@Id
@GeneratedValue
private int id;
private String name;
private String snn;


public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSnn() {
return snn;
}
public void setSnn(String snn) {
this.snn = snn;
}
}


采用注解方法来注册Entity
下面类简单测试:


package com.cennavi.client;

import com.cennavi.dao.Dao;
import com.cennavi.daoImp.DaoImp;
import com.cennavi.pojo.BigUser;
import com.cennavi.pojo.User;

public class UserDaoImpTest {

public static void main(String[] args) {
Dao<User> dao=new DaoImp<User>();

User user=new User();
user.setName("roan");
user.setSnn("1111111111111111111111");

dao.add(user);
}

}



以上只是为自己测试学习之用,比较简单。后来查找网络发现已经有完整的模版DAO,仅供参考罢了.
有了这个方法,自己学习起来速度当然加快拉,有了更多的时间去看书,不被重复的代码占用时间。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值