`
elicer
  • 浏览: 133388 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

基于 Open Jpa 的 GenericDao 的实现

    博客分类:
  • JPA
阅读更多
IGenericDao  Class
public interface IGenericDao<T, ID extends Object> {   
  
    public T load(ID id) throws DataAccessException;   
  
    public T get(ID id) throws DataAccessException;   
  
    public boolean contains(T t) throws DataAccessException;   
  
    public void refresh(T t, LockMode lockMode) throws DataAccessException;   
  
    public void refresh(T t) throws DataAccessException;   
  
    public void save(T t) throws DataAccessException;   
  
    public void saveOrUpdate(T t) throws DataAccessException;   
  
    public void saveOrUpdateAll(Collection<T> entities) throws DataAccessException;   
  
    public void update(T t, LockMode lockMode) throws DataAccessException;   
  
    public void update(T t) throws DataAccessException;   
  
//    public void delete(T t, LockMode lockMode) throws DataAccessException;   
  
    public void delete(ID t) throws DataAccessException;   
  
    public void deleteAll(Collection<T> entities) throws DataAccessException;   
  
    public List<T> find(String queryString, Object value) throws DataAccessException;   
  
    public List<T> find(String queryString, Object[] values) throws DataAccessException;   
  
    public List<T> find(String queryString) throws DataAccessException;   
  
    public List<T> list() throws DataAccessException;   
  
//    public List<T> findByNamedQuery(String queryName) throws DataAccessException;   
//  
//    public List<T> findByNamedQuery(String queryName, Object value) throws DataAccessException;   
  
    public List<T> findByNamedQuery(String queryName, Object... values) throws DataAccessException;   
  
//    public PaginationSupport findPageByCriteria(final DetachedCriteria detachedCriteria, final int pageSize,   
//            final int startIndex);   
//  
//    public PaginationSupport findPageByQuery(final String hql, final String countHql, final int pageSize,   
//            final int startIndex);   
  
}  





JpaGenericDao  Class

import java.lang.reflect.ParameterizedType;
import java.util.Collection;
import java.util.List;

import org.hibernate.LockMode;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.jpa.support.JpaDaoSupport;
@SuppressWarnings("unchecked")
public  class JPAGenericDao<T, ID extends Object> extends JpaDaoSupport implements IGenericDao<T, ID> {

	
    protected Class<T> entityClass;   
    
    public JPAGenericDao() {   
  
    }   
  
    protected Class getEntityClass() {   
        if (entityClass == null) {   
            entityClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];   
            logger.debug("T class = " + entityClass.getName());   
        }   
        return entityClass;   
    } 
	public boolean contains(T t) throws DataAccessException {
		// TODO Auto-generated method stub
		return this.getJpaTemplate().contains(t);
	}

	public void delete(ID id) throws DataAccessException {
		// TODO Auto-generated method stub
        // 使用Query删除对象   
		this.getJpaTemplate().remove(this.getJpaTemplate().find(getEntityClass(), id));
 
	}


	public void deleteAll(Collection<T> entities) throws DataAccessException {
		// TODO Auto-generated method stub
       
	}

	public List<T> find(String queryString, Object value)
			throws DataAccessException {
		// TODO Auto-generated method stub
		return this.getJpaTemplate().find(queryString, value);
	}

	public List<T> find(String queryString, Object[] values)
			throws DataAccessException {
		// TODO Auto-generated method stub
		List<T> find = (List<T>)this.getJpaTemplate().find(queryString, values);
		return find;
	}

	public List<T> find(String queryString) throws DataAccessException {
		// TODO Auto-generated method stub
		List<T> find = (List<T>)this.getJpaTemplate().find(queryString);
		return find;
	}





	public T get(Object id) throws DataAccessException {
		// TODO Auto-generated method stub
		return null;
	}

	public List<T> list() throws DataAccessException {
		// TODO Auto-generated method stub
		
		return this.getJpaTemplate().getEntityManager().createQuery("select all from " + this.getEntityClass().getSimpleName() + " all ").getResultList();
 

		
	 }

	public T load(Object id) throws DataAccessException {
		// TODO Auto-generated method stub
		return (T)this.getJpaTemplate().find(this.getEntityClass(), id);
	}

	public void refresh(T t, LockMode lockMode) throws DataAccessException {
		// TODO Auto-generated method stub

	}

	public void refresh(T t) throws DataAccessException {
		// TODO Auto-generated method stub
        this.getJpaTemplate().refresh(t);
	}

	public void save(T t) throws DataAccessException {
		// TODO Auto-generated method stub
		this.getJpaTemplate().persist(t);
	}

	public void saveOrUpdate(T t) throws DataAccessException {
		// TODO Auto-generated method stub

	}

	public void saveOrUpdateAll(Collection entities) throws DataAccessException {
		// TODO Auto-generated method stub

	}

	public void update(T t, LockMode lockMode) throws DataAccessException {
		// TODO Auto-generated method stub

	}

	public void update(T t) throws DataAccessException {
		// TODO Auto-generated method stub
        this.getJpaTemplate().merge(t);
	}


	public List<T> findByNamedQuery(String queryName, Object... values)
			throws DataAccessException {
		// TODO Auto-generated method stub

		return (List<T>)this.getJpaTemplate().findByNamedQuery(queryName, values);

	}
	



}





具体实现类  MagazineDaoImpl 实现起来非常简单

public class MagazineDaoImpl extends JPAGenericDao<Magazine,Magazine.MagazineId> implements MagazineDao


分享到:
评论

相关推荐

    Spring和openJPA集成

    OpenJPA 是基于 JPA 规范的实现,它提供了一种标准的方式来处理数据库操作,将对象模型与关系型数据库模型进行映射。通过注解或XML配置,开发者可以定义实体类,OpenJPA 将自动处理SQL查询、持久化、事务等细节。 ...

    openjpa 写的一个例子

    OpenJPA,全称Open Java Persistence API,是Java平台上的一个开源对象关系映射(ORM)框架,它实现了Java Persistence API(JPA),用于管理Java应用程序中的持久化数据。在这个"openjpademo"示例中,我们将会探讨...

    OpenJPA 2.2.1 API (CHM格式)

     OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写业务逻辑上...

    openjpa 源码 下载 帮助开发人员调试

    OpenJPA,全称Open Java Persistence API,是Apache软件基金会的一个开源项目,它实现了Java持久化API(Java Persistence API,JPA),为Java开发者提供了一种标准的方式来管理和持久化应用程序中的对象。...

    openjpa范例及实例工程

    默认情况下,当应用程序第一次获取实体标识时,OpenJPA 框架从数据库中一次性获取 50 个连续的实体标识缓存起来,当下一次应用程序需要获取实体标识时,OpenJPA 将首先检测缓存中是否存在实体标识,如果存在,Open...

    Open JPA2 employee 简单例子

    OpenJPA2是一个开源的对象关系映射(ORM)框架,它是Java Persistence API(JPA)规范的实现。在这个“Open JPA2 employee简单例子”中,我们将深入理解如何使用OpenJPA2来处理数据库中的员工数据。这个示例将帮助...

    基于springboot+jpa实现java后台api接口,点餐系统.zip

    基于springboot+jpa实现java后台api接口,点餐系统 基于springboot+jpa实现java后台api接口,点餐系统 基于springboot+jpa实现java后台api接口,点餐系统 基于springboot+jpa实现java后台api接口,点餐系统 基于...

    Spring中使用OpenJPA

    OpenJPA(Java Persistence API)则是Java平台上的一个ORM(对象关系映射)工具,它实现了JSR-317规范,使得开发者可以方便地在Java应用程序中操作数据库。本篇将详细讲解如何在Spring项目中集成并使用OpenJPA。 ...

    openJpa的应用,感觉还可以

    OpenJPA(Open Java Persistence API)是Apache软件基金会下的一个开源项目,它是Java持久层标准JPA(Java Persistence API)的一个实现。JPA是Java EE平台中的一个重要组件,用于管理和处理应用程序中的对象-关系...

    通过 WebSphere Application Server V6.1 利用 OpenJPA

    OpenJPA是一个开源的Java持久层框架,它实现了Java Persistence API(JPA),为开发人员提供了一种在Java应用中管理和存储对象到关系数据库的方法。 首先,我们需要了解JPA。Java Persistence API是Java平台上的一...

    jsf、openJpa学习

    **OpenJPA**(Open Java Persistence API)是Apache软件基金会的一个开源项目,它是Java持久层规范JPA(Java Persistence API)的实现,用于处理对象关系映射(ORM)。OpenJPA提供了一个框架,使得Java对象可以直接...

    Apache OpenJPA 2.1 User's Guide

    Apache OpenJPA 2.1 是基于 Sun Microsystems 的 Java Persistence 2.0 API (JSR-317 JPA 2.0) 规范实现的一种透明持久化 Java 对象的技术框架。该文档提供了关于 JPA 标准的概述以及如何使用 OpenJPA 的技术细节。...

    Spring MVC+OpenJPA框架

    Spring MVC是Spring框架的一部分,用于构建高效、灵活的Web应用程序,而OpenJPA则是一个实现了Java Persistence API (JPA) 的开源持久化框架。现在我们将深入探讨这两个框架以及它们在实际开发中的应用。 **Spring ...

    openjpa jar

    OpenJPA,全称为Open Java Persistence API,是Apache软件基金会下的一个开源项目,主要目标是实现Java持久化规范,即JPA(Java Persistence API)。JPA是Java EE平台中的一个核心组件,它提供了一种标准的方式来...

    openJPA官方手册

    ### OpenJPA官方手册知识点概览 #### 一、引言 - **OpenJPA**:作为Apache项目的一部分,OpenJPA是一个开源的Java持久化框架(Java Persistence Framework),它支持Java Persistence API (JPA) 的规范。OpenJPA...

    OpenJPA API 文档 chm格式

    OpenJPA API 文档 chm格式

    openjpa-manual

    本文档旨在提供一个全面且深入的指南,帮助开发人员理解和掌握Java Persistence API(JPA)的核心概念及其在Apache OpenJPA中的实现细节。文档将详细介绍JPA的基本原理、架构设计以及如何利用OpenJPA来实现持久化...

    Apache OpenJPA 是 Jakarta Persistence API 3.0 规范的实现

    Apache OpenJPA 是一个开源的对象关系映射(ORM)框架,它是 Jakarta Persistence API(JPA)3.0 规范的实现。JPA 是 Java 平台上的一个标准,用于管理关系数据库中的对象,简化了数据库操作,使得开发者可以使用...

    apache-openjpa-2.2.1-source

    OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写业务逻辑上。...

Global site tag (gtag.js) - Google Analytics