`
azure2a
  • 浏览: 32748 次
  • 性别: Icon_minigender_1
  • 来自: 承德
社区版块
存档分类
最新评论

Hibernate通用Dao设计。

阅读更多
  hibernate的通用Dao简化了程序,增加了开发过程,但是通用Dao设计五花八门,我也是一个Hibernate初学者,把我参考一些设计好的Dao而设计的通用Dao写下来,希望各位不要见笑。
  原来的Dao是一个整体,把很多内容放在一起,但是发现大部分的内容用不到,所以我把Dao分为三个部分,BaseHibernateEntityDao(基本部分)主要是,增删查改。ExtensionHibernateEntityDao(扩展)包括example等,HibernateEntityDaoUtil(工具部分),包括执行Sql等。
 
  package com.guestbook.dao;

import java.io.Serializable;
import java.util.List;

import com.guestbook.dao.support.Page;

public interface BaseHibernateEntityDao<T> {
    public void setCacheable(boolean cacheable);
	
	public T get(Serializable id);
	public T load(Serializable id);	

	public void save(Object o);	
	public void update(Object o);
	public void remove(Serializable id);
	
	public List<T> findByHql(String hql, Object... values);
	public List<T> findBySql(String sql,Object... values);
	
	public T findUniqueByHql(String hql, Object... values);
	public T findUniqueBySql(String sql,Object... values);
	
    public Page<T> pagedSqlQuery(String sql,int pageNo,int pageSize,Object...values);	
	public Page<T> pagedQuery(String hql,int pageNo,int pageSize,Object...values);
	
}

  


package com.guestbook.dao;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;

import com.guestbook.dao.support.Page;

public interface ExtensionHibernateEntityDao<T> extends
		BaseHibernateEntityDao<T> {

	public T findByName(String name, Object value);

	public List<T> findByLike(String name, Object value);

	public T findUniqueByName(String name, Object value);

	public T findUniqueByExample(T t);
	
	public Page<T> pagedQuery(Criteria criteria, int pageNo, int pageSize);

	public Page<T> pagedQuery(int pageNo, int pageSize, Criterion... criterions);

	public Page<T> pagedQuery(int pageNo, int pageSize, String orderBy,
			boolean isAsc, Criterion... criterions);
}



package com.guestbook.dao;

import java.util.List;

public interface HibernateEntityDaoUtil {
	public int executeSql(String sql, Object... values);
	public int executeHql(String sql, Object... values);
	
	@SuppressWarnings("unchecked")
	public List findBySql(String sql, boolean cacheable,Class entityClass,Object... values);
	
	@SuppressWarnings("unchecked")
	public Object findUniqueBySql(String sql,Class entityClass,Object... values);
}


 
 
  这样就可以当只是简单的应用的时候就是用Base部分,而如果功能比较复杂则可以使用扩展部分的内容。
  当然我理解还不是很深入,不知道有没有什么更好的设计。
  具体代码见附件。
2
3
分享到:
评论
1 楼 zq726726 2012-03-02  
请问 如果用spring 的话 怎么加配置???

相关推荐

    hibernate通用dao

    Hibernate通用DAO设计** 通用DAO是为了减少重复代码,提高代码复用性。通常包含以下方法: - `save(T entity)`: 保存实体对象。 - `update(T entity)`: 更新实体对象。 - `deleteById(ID id)`: 根据ID删除实体。 - ...

    本人写的Hibernate超级通用DAO

    《深入浅出Hibernate通用DAO设计与实践》 在软件开发中,数据访问对象(DAO)是用于处理数据库操作的重要组件,它可以将业务逻辑与数据访问层进行解耦,提高代码的可复用性和可维护性。本文将围绕“Hibernate超级...

    Hibernate通用Dao

    通用dao,简单全面,所有dao都可以继承这个dao.

    hibernate spring通用dao

    spring集成hibernate通用dao,泛型,server都可以调用

    hibernate4 通用dao,service

    标题中的“hibernate4 通用dao,service”指的是在Java开发中使用Hibernate框架实现的通用数据访问对象(DAO)和业务服务层(Service)。Hibernate是一个流行的对象关系映射(ORM)工具,它允许开发者使用面向对象的...

    Hibernate 原生通用DAO

    **Hibernate原生通用DAO**是基于Hibernate框架设计的一种简化数据访问操作的方式,它模仿了Spring框架中的`HibernateTemplate`类,旨在提供一个简单易用的DAO(Data Access Object)层,方便开发人员进行数据库操作...

    Hibernate_通用DAO模式,一个写好的dao层

    本资源“Hibernate_通用DAO模式”提供了一种适用于不同类型表单的DAO实现,基于SSH(Struts2、Spring、Hibernate)框架,特别强调简洁、易懂和高可移植性。 首先,SSH框架是Java Web开发中的经典组合,Struts2负责...

    Hibernate的通用dao

    综上所述,Hibernate的通用DAO设计模式是提高开发效率、降低维护成本的有效手段,但需要注意适配项目需求,合理使用,以实现最佳的性能和可维护性。通过阅读给出的博客链接(https://lzkyo.iteye.com/blog/683285)...

    HibernateDao 通用

    HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao 通用HibernateDao ...

    Hibernate封装dao层

    "Hibernate封装DAO层"就是将Hibernate的功能整合到DAO设计模式中,以实现更加高效、规范的数据库操作。 1. **DAO设计模式**: DAO模式是软件设计模式的一种,它的核心思想是创建一个独立于具体数据库操作的对象,...

    hibernate不是泛型的通用DAo1

    "hibernate不是泛型的通用DAo1"这个标题暗示了我们讨论的是一种非泛型化的DAO实现,可能是因为开发者想要避免强制继承和泛型模板。 在描述中提到,开发者在网上寻找的大多数DAO实现都是泛型的,需要继承来使用。...

    Hibernate泛型DAO接口,大部分通用都已包括

    本篇将详细介绍"Hibernate泛型DAO接口,大部分通用都已包括"这一主题。 首先,让我们看看DAO的概念。DAO是软件设计模式中的一种,它的主要职责是封装对数据源的访问,以提供业务逻辑层与数据存储层之间的解耦。通过...

    HibernateDao.java

    - **设计模式**:考虑使用模板方法模式或者策略模式,将通用的数据库操作抽象出来,使得`HibernateDao.java`更具有复用性和灵活性。 总结,`HibernateDao.java`是Hibernate框架在实际项目中的重要实现,它封装了...

    hibernate 通用接口架构

    "hibernate 通用接口架构"是指利用Hibernate框架,通过设计DAO(Data Access Object)层的接口来实现业务逻辑与数据访问的解耦,从而提高代码的可复用性和可维护性。 首先,我们来理解DAO层的作用。DAO层作为业务...

    Hibernate泛型Dao

    【标题】"Hibernate泛型Dao"是针对Java开发中的数据持久化框架Hibernate的一个高级应用,主要目的是为了提高代码的复用性和简洁性。在传统的Hibernate使用中,针对每个实体类,我们都需要创建一个对应的Dao(Data ...

    java ssh通用DAO另类实现示例

    总结:这个另类的Java SSH通用DAO实现利用了动态代理和Hibernate的特性,降低了代码复杂度,提高了代码复用性。它使得DAO层的维护变得更加简单,同时保持了良好的封装性和扩展性。在实际项目中,这样的设计可以显著...

    Haha.Hibernate SprintSideExt 通用HibernateDAO

    Haha.Hibernate SprintSideExt 通用HibernateDAO 文章资源 详见:http://blog.csdn.net/lijun7788/article/details/6658847

    泛型通用DAO,可以很简化DAO层的代码

    泛型通用DAO是这种模式的一种优化,它利用了Java 5.0引入的泛型和反射机制,大大简化了DAO层的编码工作,提高了代码的可复用性和可维护性。 泛型是Java中的一种类型系统扩展,它允许在编译时声明参数化的类型,从而...

Global site tag (gtag.js) - Google Analytics