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
分享到:
相关推荐
OpenJPA 是基于 JPA 规范的实现,它提供了一种标准的方式来处理数据库操作,将对象模型与关系型数据库模型进行映射。通过注解或XML配置,开发者可以定义实体类,OpenJPA 将自动处理SQL查询、持久化、事务等细节。 ...
OpenJPA,全称Open Java Persistence API,是Java平台上的一个开源对象关系映射(ORM)框架,它实现了Java Persistence API(JPA),用于管理Java应用程序中的持久化数据。在这个"openjpademo"示例中,我们将会探讨...
OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写业务逻辑上...
OpenJPA,全称Open Java Persistence API,是Apache软件基金会的一个开源项目,它实现了Java持久化API(Java Persistence API,JPA),为Java开发者提供了一种标准的方式来管理和持久化应用程序中的对象。...
默认情况下,当应用程序第一次获取实体标识时,OpenJPA 框架从数据库中一次性获取 50 个连续的实体标识缓存起来,当下一次应用程序需要获取实体标识时,OpenJPA 将首先检测缓存中是否存在实体标识,如果存在,Open...
OpenJPA2是一个开源的对象关系映射(ORM)框架,它是Java Persistence API(JPA)规范的实现。在这个“Open JPA2 employee简单例子”中,我们将深入理解如何使用OpenJPA2来处理数据库中的员工数据。这个示例将帮助...
基于springboot+jpa实现java后台api接口,点餐系统 基于springboot+jpa实现java后台api接口,点餐系统 基于springboot+jpa实现java后台api接口,点餐系统 基于springboot+jpa实现java后台api接口,点餐系统 基于...
OpenJPA(Java Persistence API)则是Java平台上的一个ORM(对象关系映射)工具,它实现了JSR-317规范,使得开发者可以方便地在Java应用程序中操作数据库。本篇将详细讲解如何在Spring项目中集成并使用OpenJPA。 ...
OpenJPA(Open Java Persistence API)是Apache软件基金会下的一个开源项目,它是Java持久层标准JPA(Java Persistence API)的一个实现。JPA是Java EE平台中的一个重要组件,用于管理和处理应用程序中的对象-关系...
OpenJPA是一个开源的Java持久层框架,它实现了Java Persistence API(JPA),为开发人员提供了一种在Java应用中管理和存储对象到关系数据库的方法。 首先,我们需要了解JPA。Java Persistence API是Java平台上的一...
**OpenJPA**(Open Java Persistence API)是Apache软件基金会的一个开源项目,它是Java持久层规范JPA(Java Persistence API)的实现,用于处理对象关系映射(ORM)。OpenJPA提供了一个框架,使得Java对象可以直接...
Apache OpenJPA 2.1 是基于 Sun Microsystems 的 Java Persistence 2.0 API (JSR-317 JPA 2.0) 规范实现的一种透明持久化 Java 对象的技术框架。该文档提供了关于 JPA 标准的概述以及如何使用 OpenJPA 的技术细节。...
Spring MVC是Spring框架的一部分,用于构建高效、灵活的Web应用程序,而OpenJPA则是一个实现了Java Persistence API (JPA) 的开源持久化框架。现在我们将深入探讨这两个框架以及它们在实际开发中的应用。 **Spring ...
OpenJPA,全称为Open Java Persistence API,是Apache软件基金会下的一个开源项目,主要目标是实现Java持久化规范,即JPA(Java Persistence API)。JPA是Java EE平台中的一个核心组件,它提供了一种标准的方式来...
### OpenJPA官方手册知识点概览 #### 一、引言 - **OpenJPA**:作为Apache项目的一部分,OpenJPA是一个开源的Java持久化框架(Java Persistence Framework),它支持Java Persistence API (JPA) 的规范。OpenJPA...
OpenJPA API 文档 chm格式
本文档旨在提供一个全面且深入的指南,帮助开发人员理解和掌握Java Persistence API(JPA)的核心概念及其在Apache OpenJPA中的实现细节。文档将详细介绍JPA的基本原理、架构设计以及如何利用OpenJPA来实现持久化...
Apache OpenJPA 是一个开源的对象关系映射(ORM)框架,它是 Jakarta Persistence API(JPA)3.0 规范的实现。JPA 是 Java 平台上的一个标准,用于管理关系数据库中的对象,简化了数据库操作,使得开发者可以使用...
OpenJPA 是 Apache 组织提供的开源项目,它实现了 EJB 3.0 中的 JPA 标准,为开发者提供功能强大、使用简单的持久化数据管理框架。OpenJPA 封装了和关系型数据库交互的操作,让开发者把注意力集中在编写业务逻辑上。...