`
jaesonchen
  • 浏览: 311406 次
  • 来自: ...
社区版块
存档分类
最新评论

通用DAO设计(泛型方法)

 
阅读更多
import java.io.Serializable;
import java.util.List;

public interface CommonDao {
	
    public <T extends Serializable> T save(T model);

    public <T extends Serializable> void saveOrUpdate(T model);
    
    public <T extends Serializable> void update(T model);
    
    public <T extends Serializable> void merge(T model);
    
    public <T extends Serializable> void delete(T model);

    public <T extends Serializable, PK extends Serializable> void delete(Class<T> entityClass, PK id);

    public <T extends Serializable, PK extends Serializable> T get(Class<T> entityClass, PK id);
    
    public <T extends Serializable> List<T> listAll(Class<T> entityClass);
    
}

import java.io.Serializable;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;

@Component("commonDao")
public class CommonDaoImpl implements CommonDao {

	@Autowired
    @Qualifier("sessionFactory")
	private SessionFactory sessionFactory;

    public Session getSession() {
        return sessionFactory.getCurrentSession();
    }
    
	@Override
	public <T extends Serializable> T save(T model) {
		
		this.getSession().save(model);
        return model;
	}

	@Override
	public <T extends Serializable> void saveOrUpdate(T model) {
		
		this.getSession().saveOrUpdate(model);
	}

	@Override
	public <T extends Serializable> void update(T model) {
		
		this.getSession().update(model);
	}

	@Override
	public <T extends Serializable> void merge(T model) {

		this.getSession().merge(model);
	}

	@Override
	public <T extends Serializable> void delete(T model) {

		this.getSession().delete(model);
	}

	@Override
	public <T extends Serializable, PK extends Serializable> void delete(
			Class<T> entityClass, PK id) {

		this.getSession().delete(this.get(entityClass, id));
	}

	@Override
	@SuppressWarnings("unchecked")
	public <T extends Serializable, PK extends Serializable> T get(
			Class<T> entityClass, PK id) {

		return (T) this.getSession().get(entityClass, id);
	}

	@Override
	@SuppressWarnings("unchecked")
	public <T extends Serializable> List<T> listAll(Class<T> entityClass) {

		Criteria criteria = getSession().createCriteria(entityClass);
        return criteria.list();
	}
}

 

 

分享到:
评论

相关推荐

    泛型dao 泛型dao 泛型dao

    泛型dao接口 :GenericDao, ID extends Serializable&gt; 泛型作为DAO的通用接口 CRUD方法 dao接口 : PersonDAO extends GenericDao, Integer&gt; 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 ...

    java 基于泛型与反射的通用 DAO

    在实现通用DAO时,反射通常用于动态调用数据库操作的方法,比如SQL查询。例如,在`UsersDAO.java`中,可能有以下代码: ```java public class UsersDAO extends BaseDao&lt;Users&gt; { @Override public void save...

    JdbcTemplate通用泛型Dao实现

    这包括如何定义泛型接口,如何实现接口的方法,以及如何在实际项目中使用这些通用的DAO。 总的来说,`JdbcTemplate`通用泛型Dao实现是提高开发效率和代码质量的有效方式。它使得数据库操作更加规范,降低了代码的...

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

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

    泛型dao

    【泛型DAO】是一种在Java开发中常见的设计模式,它利用了Java泛型特性来提高代码的可重用性和类型安全性。在Java中,DAO(Data Access Object)模式是用来封装对数据库的操作,将业务逻辑与数据访问逻辑分离,使得...

    ssh通用泛型DAO

    总的来说,"ssh通用泛型DAO"是一种设计模式,旨在简化SSH框架下的数据访问层开发,提高代码复用性,减少重复工作,同时通过泛型提供类型安全的保障。理解和熟练运用这一模式,能够有效地提升Java Web应用的开发效率...

    一个很好的通用泛型dao(含源码)

    为什么我们要使用通用DAO接口呢,因为我们的数据库操作无非是增删改查,CRUD操作,我们不需要为每个实体去编写一个dao接口,对于相似的实体操作可以只编写一个通用接口,然后采用不同的实现! DAO已经成为持久层...

    java软件开发dao层泛型模式

    泛型DAO模式是一种通用的数据访问层设计模式,它通过使用Java泛型来提供对不同类型的对象进行统一的操作接口。这种模式使得开发者可以在不了解具体实体类的情况下实现对数据库的基本CRUD(Create、Read、Update、...

    ssh2 + dao泛型

    例如,我们可以定义一个泛型方法`save(T entity)`,这个方法可以自动处理任何类型的实体,只要它们符合Java Bean规范。 博客中可能还会涉及如何配置SSH2框架,如Spring的bean配置、Hibernate的实体映射以及Struts的...

    Hibernate通用Dao设计。

    综上所述,Hibernate通用DAO设计的核心在于抽象出共性的数据库操作,并通过泛型和继承等面向对象设计原则,达到代码复用的目的。这样不仅可以降低开发难度,还能提升系统的可维护性,对于大型项目尤其重要。通过学习...

    ssh通用基于泛型的dao

    标题“ssh通用基于泛型的dao”指的是使用SSH(Spring、Struts2、Hibernate)框架开发的一个通用的、基于泛型的DAO实现,它旨在提高开发效率,减少重复工作。 SSH框架是Java企业级应用开发的常用组合,Spring提供了...

    hibernate不是泛型的通用DAo1

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

    Struts2 Spring3 Hibernate 注解功能 DAO 泛型 通用分页

    在这个项目"SSHWithAnnotationDemo"中,开发者利用注解功能,DAO泛型以及通用分页技术,进一步优化了代码结构和用户体验。 首先,让我们深入了解一下Struts2、Spring3和Hibernate的核心功能: 1. **Struts2**:这...

    大家看看我设计的泛型DAO(使用Spring的Anotation和Hibernate)

    本篇文章将深入探讨一个使用Spring注解和Hibernate实现的泛型DAO设计,以提高代码的复用性和可维护性。 首先,`HibernateBaseDao.java`是基础的Hibernate DAO类,它提供了对Hibernate操作的基本封装。这个类通常会...

    基于java泛型的通用DAO(CURD)实现

    现在无论做什么应用,基本上都会有涉及对象... 其实,利用Java面向对象的基本特性及JDK5新引入的泛型语法,我们可以创建通用的DAO对象的CRUD方法,同时又可保证类型的安全性。下面DAO的实现以Hibernate为基础加以演示。

    基于泛型的通用Dao接口和hibernate的实现

    基于泛型的通用Dao接口和Hibernate的实现 基于泛型的通用Dao接口是指使用泛型来实现数据访问对象(DAO)的接口,主要是在使用 Hibernate 或 JPA 时使用。泛型可以使得DAO接口更灵活、更通用。 泛型Dao接口的优点:...

    hibernate spring通用dao

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

    ssh整合下的通用泛型DAO+分页

    在这个特定的讨论中,我们聚焦于SSH1中的一个关键概念:通用泛型DAO(Data Access Object)以及分页功能的实现。DAO层是模型层和数据访问层之间的桥梁,它的主要职责是处理数据库操作,为业务层提供无状态的数据访问...

    泛型DAO模型设计课堂笔记

    【泛型DAO模型设计】是Java开发中一种高效且可复用的数据访问对象(DAO)设计方式,结合了泛型和反射技术。泛型在Java中引入,旨在提高代码的安全性和可读性,减少类型转换的繁琐过程。DAO设计模式主要用于数据库...

Global site tag (gtag.js) - Google Analytics