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
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
相关文章推荐
- JAVA通用Dao接口和hibernate的实现
- 基于泛型的通用Dao接口hibernate实现
- 基于泛型的通用Dao接口和hibernate的实现
- 基于泛型的通用Dao接口和hibernate的实现
- java编程思想3感悟(5)---复用具体实现和复用接口
- Java语音SDK接口开发经验及具体开发实现
- 一个通用的DAO接口及其Hibernate3实现 (2)
- Effective Java 对于所有对象都通用的方法 12.考虑实现Comparable(可以比较)接口
- 【Java面试题】60 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?
- java 内部类与接口结合实现隐藏具体的方法的实现
- Http通用短信接口开发经验及具体开发实现
- JAVA JDBC的单表查询通用dao层代码实现
- Hibernate的dao接口加实现类
- Java基于自定义注释和反射机制实现初级通用DAO
- Java集合架构--Set接口的几个具体实现类
- Hibernate实现通用DAO(二)
- 【Java】Hibernate(三)Query接口实现分页查询
- 基于Spring、Hibernate的通用DAO层与Service层的实现
- 基于Spring、Hibernate的通用DAO层与Service层的实现
- Hibernate DAO具体的实现