您的位置:首页 > 编程语言 > Java开发

JAVA通用Dao接口和hibernate的具体实现

2009-12-16 00:30 706 查看
基于泛型的通用Dao接口:(重要是在应用hibernate或JPA时运用)
  package com.qiujy.dao;
  import java.io.Serializable;
  import java.util.List;
  /**
  * 基于泛型的通用Dao接口
  */
  public interface GenericDao {
  void create(T entity);
  void delete(T entity);
  void update(T entity);
  T findById(Serializable id);
  List findAll();
  List findList(int pageNo, int pageSize);
  int getCountOfAll();
  }
  hibernate对此泛型Dao接口的运用:
  package com.qiujy.dao.hibernate;
  import java.io.Serializable;
  import java.lang.reflect.ParameterizedType;
  import java.util.List;
  import org.hibernate.criterion.Projections;
  import com.qiujy.common.HibernateUtil;
  import com.qiujy.dao.GenericDao;
  /**
  * Hibernate对泛型通用Dao接口的兑现
  */
  public class GenericHibernateDaoImpl implements GenericDao {
  private Class clazz;
  @SuppressWarnings("unchecked")
  public GenericHibernateDaoImpl() {
  //透过反照获取T的部类信息范例
  this.clazz = (Class)((ParameterizedType)this.getClass().getGenericSuperclass())
  .getActualTypeArguments()[零];
  }
  public void create(T entity) {
  HibernateUtil.getSession().save(entity);
  }
  public void delete(T entity) {
  HibernateUtil.getSession().delete(entity);
  }
  @SuppressWarnings("unchecked")
  public void update(T entity) {
  //HibernateUtil.getSession().saveOrUpdate(entity);
  entity = (T) HibernateUtil.getSession().merge(entity);
  }
  @SuppressWarnings("unchecked")
  public List findAll() {
  return HibernateUtil.getSession().createCriteria(clazz).list();
  }
  @SuppressWarnings("unchecked")
  public List findList(int pageNo, int pageSize) {
  return HibernateUtil.getSession().createCriteria(clazz)
  .setFirstResult((pageNo - 一) * pageSize)
  .setMaxResults(pageSize)
  .list();
  }
  public int getCountOfAll() {
  Integer count = (Integer) HibernateUtil.getSession()
  .createCriteria(clazz)
  .setProjection(Projections.rowCount())
  .uniqueResult();
  if (null == count) {
  return 零;
  } else {
  return count.intValue();
  }
  }
  @SuppressWarnings("unchecked")
  public T findById(Serializable id) {
  return (T)HibernateUtil.getSession().load(clazz, id); //get
  }
  }
  施用泛型Dao接口:
  package com.qiujy.dao;
  import java.util.List;
  import com.qiujy.domain.Resource;
  /**
  * Resource种的Dao接口
  */
  public interface ResourceDao extends GenericDao {
  public List findResources(int status);
  }
  施用hibernate的兑现:
  package com.qiujy.dao.hibernate;
  import java.util.List;
  import com.qiujy.common.HibernateUtil;
  import com.qiujy.dao.ResourceDao;
  import com.qiujy.domain.Resource;
  public class ResourceDaoImpl extends GenericHibernateDaoImpl implements ResourceDao {
  @SuppressWarnings("unchecked")
  public List findResources(int status) {
  return (List)HibernateUtil.getSession()
  .createQuery("from Resource where status=:status")
  .setInteger("status", status)
  .list();
  }
  }
本文来源:
我的异常网
Java Exception
Dotnet Exception
Oracle Exception

1570 - ORA-01008:不是所有的变量都赋了值

1571 - long型为什么不能作主键

1572 - 删除大量数据后出现问题

1573 - Oracle里日期转成字符

1574 - ORACLE中的begin ...end

1575 - System.Data.OracleClient requires Oracle client software version 8.1.7 or greater

1576 - 无法定位程序输入点

1577 - 如何使用.net framwork的帮助

1578 - org.xml.sax.SAXException: Bad envelope tag: definitions

1579 - java.lang.NoClassDefFoundError: org kxml2 io KXmlParser

1580 - org.apache.commons.logging.LogConfigurationException

1581 - 浙江大学java视频讲座里关于异常的题目

1582 - error reading xml or initializing

1583 - java.sql.SQLException: ResultSet is closed

1584 - 空指针

1585 - error establishing socket

1586 - java.lang.UnsatisfiedLinkError

1587 - The file Default_Login.aspx has not been pre-compiled

1588 - and cannot be requested

1589 - System.Exception
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: