hibernate基于泛型基础增删改查方法封装
2016-06-07 20:39
267 查看
【
】
public interface IBaseDao<T> {
public void save(T entity);
public void delete(String[] ids);
public void update(T entity);
public T find(int id);
public void saveOrUpdate(T entity);
public List<T> findAll();
}
public class BaseDaoImpl<T> extends BaseHibernateSupport implements IBaseDao<T> {
protected Logger log=Logger.getLogger(this.getClass());
protected Class<T> clazz;
/**
* 通过反射泛型获取Class类型,getGenericSuperclass()方法获取对象的泛型的父类类型信息,
* getActualTypeArguments()[0]方法得到T的真实类型
*
*/
public BaseDaoImpl(){
ParameterizedType pt=(ParameterizedType)this.getClass().getGenericSuperclass();
this.clazz=(Class<T>)pt.getActualTypeArguments()[0];
}
/**
* 公共的增,删,改,查方法
*/
@Override
public void save(T entity) {
try {
this.getHibernateTemplate().save(entity);
} catch (HibernateException sqle) {
log.error(sqle.toString());
}
}
@Override
public void delete(String[] ids) {
T entity=null;
try {
for (int i = 0; i < ids.length; i++) {
entity=this.find(Integer.parseInt(ids[i]));
this.getHibernateTemplate().delete(entity);;
}
} catch (HibernateException e) {
log.error(e.toString());
}finally{
entity=null;
}
}
@Override
public void update(T entity) {
try {
this.getHibernateTemplate().update(entity);
} catch (HibernateException sqle) {
log.error(sqle.toString());
}
}
@Override
public T find(int id) {
T entity=null;
try {
entity=(T) this.getHibernateTemplate().get(clazz, id);
} catch (HibernateException e) {
entity=null;
log.error(e.toString());
}
return entity;
}
@Override
public void saveOrUpdate(T entity) {
try {
this.getHibernateTemplate().saveOrUpdate(entity);
} catch (RuntimeException e) {
throw e;
}
}
@Override
public List<T> findAll() {
List<T> list=(List<T>)this.getHibernateTemplate().find("from"+clazz.getName());
return list;
}
}
public class BaseHibernateSupport extends DaoSupport {
private SessionFactory sessionFactory;
private HibernateTemplate hibernateTemplate;
/**
* @return the sessionFactory
* @描述:
* @时间:2016
*/
public SessionFactory getSessionFactory() {
return sessionFactory;
}
/**
* @param sessionFactory the sessionFactory to set
*/
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
this.hibernateTemplate=createHibernateTemplate(sessionFactory);
}
public Session getSession(){
if (this.sessionFactory==null) {
throw new HibernateException("Session Create Fail,SessionFactory is null!");
}
return this.sessionFactory.getCurrentSession();
}
protected HibernateTemplate createHibernateTemplate(SessionFactory sessionFactory){
return new HibernateTemplate(sessionFactory);
}
/* (non-Javadoc)
* @see org.springframework.dao.support.DaoSupport#checkDaoConfig()
*/
@Override
protected void checkDaoConfig() throws IllegalArgumentException {
if (this.hibernateTemplate==null) {
throw new IllegalArgumentException("'sessionFactory' or 'hibernateTemplate' is required");
}
}
protected final Session getSession(boolean allowCreate) throws DataAccessResourceFailureException, IllegalStateException {
return (!allowCreate ? SessionFactoryUtils.getSession(getSessionFactory(), false) : SessionFactoryUtils.getSession(getSessionFactory(),
this.hibernateTemplate.getEntityInterceptor(), this.hibernateTemplate.getJdbcExceptionTranslator()));
}
protected final DataAccessException convertHibernateAccessException(HibernateException ex) {
return this.hibernateTemplate.convertHibernateAccessException(ex);
}
protected final void releaseSession(Session session) {
SessionFactoryUtils.releaseSession(session, getSessionFactory());
if (null != session)
session = null;
}
public final void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
public final HibernateTemplate getHibernateTemplate() {
return this.hibernateTemplate;
}
}
IBaseDao.java
】public interface IBaseDao<T> {
public void save(T entity);
public void delete(String[] ids);
public void update(T entity);
public T find(int id);
public void saveOrUpdate(T entity);
public List<T> findAll();
}
BaseDaoImpl.java
public class BaseDaoImpl<T> extends BaseHibernateSupport implements IBaseDao<T> {protected Logger log=Logger.getLogger(this.getClass());
protected Class<T> clazz;
/**
* 通过反射泛型获取Class类型,getGenericSuperclass()方法获取对象的泛型的父类类型信息,
* getActualTypeArguments()[0]方法得到T的真实类型
*
*/
public BaseDaoImpl(){
ParameterizedType pt=(ParameterizedType)this.getClass().getGenericSuperclass();
this.clazz=(Class<T>)pt.getActualTypeArguments()[0];
}
/**
* 公共的增,删,改,查方法
*/
@Override
public void save(T entity) {
try {
this.getHibernateTemplate().save(entity);
} catch (HibernateException sqle) {
log.error(sqle.toString());
}
}
@Override
public void delete(String[] ids) {
T entity=null;
try {
for (int i = 0; i < ids.length; i++) {
entity=this.find(Integer.parseInt(ids[i]));
this.getHibernateTemplate().delete(entity);;
}
} catch (HibernateException e) {
log.error(e.toString());
}finally{
entity=null;
}
}
@Override
public void update(T entity) {
try {
this.getHibernateTemplate().update(entity);
} catch (HibernateException sqle) {
log.error(sqle.toString());
}
}
@Override
public T find(int id) {
T entity=null;
try {
entity=(T) this.getHibernateTemplate().get(clazz, id);
} catch (HibernateException e) {
entity=null;
log.error(e.toString());
}
return entity;
}
@Override
public void saveOrUpdate(T entity) {
try {
this.getHibernateTemplate().saveOrUpdate(entity);
} catch (RuntimeException e) {
throw e;
}
}
@Override
public List<T> findAll() {
List<T> list=(List<T>)this.getHibernateTemplate().find("from"+clazz.getName());
return list;
}
}
重写hibernateSupport
public class BaseHibernateSupport extends DaoSupport {private SessionFactory sessionFactory;
private HibernateTemplate hibernateTemplate;
/**
* @return the sessionFactory
* @描述:
* @时间:2016
*/
public SessionFactory getSessionFactory() {
return sessionFactory;
}
/**
* @param sessionFactory the sessionFactory to set
*/
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
this.hibernateTemplate=createHibernateTemplate(sessionFactory);
}
public Session getSession(){
if (this.sessionFactory==null) {
throw new HibernateException("Session Create Fail,SessionFactory is null!");
}
return this.sessionFactory.getCurrentSession();
}
protected HibernateTemplate createHibernateTemplate(SessionFactory sessionFactory){
return new HibernateTemplate(sessionFactory);
}
/* (non-Javadoc)
* @see org.springframework.dao.support.DaoSupport#checkDaoConfig()
*/
@Override
protected void checkDaoConfig() throws IllegalArgumentException {
if (this.hibernateTemplate==null) {
throw new IllegalArgumentException("'sessionFactory' or 'hibernateTemplate' is required");
}
}
protected final Session getSession(boolean allowCreate) throws DataAccessResourceFailureException, IllegalStateException {
return (!allowCreate ? SessionFactoryUtils.getSession(getSessionFactory(), false) : SessionFactoryUtils.getSession(getSessionFactory(),
this.hibernateTemplate.getEntityInterceptor(), this.hibernateTemplate.getJdbcExceptionTranslator()));
}
protected final DataAccessException convertHibernateAccessException(HibernateException ex) {
return this.hibernateTemplate.convertHibernateAccessException(ex);
}
protected final void releaseSession(Session session) {
SessionFactoryUtils.releaseSession(session, getSessionFactory());
if (null != session)
session = null;
}
public final void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
public final HibernateTemplate getHibernateTemplate() {
return this.hibernateTemplate;
}
}
相关文章推荐
- MySql中UTF8 和 GBK 编码中文字符长度问题
- block 块函数
- 实在没有好的缩放VIEW,只能实现
- spark 文件系统Alluxio(之前名为Tachyon)
- 项目管理:沟通与沟通计划
- ABAP CHECK, EXIT, RETURN, LEAVE PROGRAM 用法
- java多线程基础一
- 1045
- 数据结构_P11
- CodeForces 659 D. Bicycle Race(计算几何 + 数学公式)
- php 面向对象要点汇总
- CentOS7安装jdk
- USACO Section 2.3
- Linux 空闲空间的格式化与加载
- 二、工厂模式
- 基因数据处理70之Picard安装没成功
- java写的TCP局域网聊天系统
- HDU 3440 查分约束
- Java-文本下载
- hdu2488 dfs