-
请教一个关于Spring Data 和 JPA2.0的缓存的问题5
@Override @QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value ="true") }) public List<T> findAll(Pager page) { org.springframework.data.domain.Page<T> springDataPage = jpaRepository.findAll(PageUtils.createPageable(page)); PageUtils.injectPageProperties(page, springDataPage); return springDataPage.getContent();
代码如上,第二次查找的时候只从缓存里面获取,对于那些关联关系的对象没有发sql语句了,可是还是需要发送一条sql语句获取这个查找的list,而且是获取了所有的字段,请教下,这里的缓存策略是怎样的,如果根据ID进行缓存,进行查找的时候可不可以直接查找ID字段就可以了,然后再从数据库里面获取。
用的ehcache缓存。2014年5月17日 11:23
1个答案 按时间排序 按投票排序
-
可以的, 通过set/get方法处理缓存 CacheManager.set(xxxx), CacheManager.get(xxx) 更多内容详见: http://www.oschina.net/code/snippet_12_1574 import java.io.Serializable; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * 缓存助手 */ public class CacheManager { private final static Log log = LogFactory.getLog(CacheManager.class); private static CacheProvider provider; static { initCacheProvider("my.cache.EhCacheProvider"); } private static void initCacheProvider(String prv_name){ try{ CacheManager.provider = (CacheProvider)Class.forName(prv_name).newInstance(); CacheManager.provider.start(); log.info("Using CacheProvider : " + provider.getClass().getName()); }catch(Exception e){ log.fatal("Unabled to initialize cache provider:" + prv_name + ", using ehcache default.", e); CacheManager.provider = new EhCacheProvider(); } } private final static Cache _GetCache(String cache_name, boolean autoCreate) { if(provider == null){ provider = new EhCacheProvider(); } return provider.buildCache(cache_name, autoCreate); } /** * 获取缓存中的数据 * @param name * @param key * @return */ public final static Object get(String name, Serializable key){ //System.out.println("GET1 => " + name+":"+key); if(name!=null && key != null) return _GetCache(name, true).get(key); return null; } /** * 获取缓存中的数据 * @param <T> * @param resultClass * @param name * @param key * @return */ @SuppressWarnings("unchecked") public final static <T> T get(Class<T> resultClass, String name, Serializable key){ //System.out.println("GET2 => " + name+":"+key); if(name!=null && key != null) return (T)_GetCache(name, true).get(key); return null; } /** * 写入缓存 * @param name * @param key * @param value */ public final static void set(String name, Serializable key, Serializable value){ //System.out.println("SET => " + name+":"+key+"="+value); if(name!=null && key != null && value!=null) _GetCache(name, true).put(key, value); } /** * 清除缓冲中的某个数据 * @param name * @param key */ public final static void evict(String name, Serializable key){ if(name!=null && key != null) _GetCache(name, true).remove(key); } /** * 清除缓冲中的某个数据 * @param name * @param key */ public final static void justEvict(String name, Serializable key){ if(name!=null && key != null){ Cache cache = _GetCache(name, false); if(cache != null) cache.remove(key); } } }
2014年5月18日 18:15
相关推荐
Spring Data JPA是Spring生态中的一个强大ORM框架,它极大地提高了Java开发者在处理数据库操作时的效率。Spring Data JPA的主要优点在于其高度的开发效率、成熟的语法结构以及与Spring框架的紧密集成。 1. **开发...
Spring Data JPA 是一个强大的框架,它简化了与Java Persistence API (JPA) 的交互,JPA 是Java 开发者用来管理和持久化应用程序数据的一种标准。在这个“Spring Data JPA Demo”项目中,我们将深入探讨如何利用...
在本项目中,我们主要探讨如何手动构建一个基于SpringMVC、Spring Data JPA、Hibernate以及FreeMarker模板引擎的Maven工程,同时实现环境切换功能。这个基础框架为日常开发工作提供了必要的支持。 首先,SpringMVC...
Spring Data JPA是Java开发中的一个关键框架,它简化了与关系型数据库的交互,特别是基于Java Persistence API (JPA)。这个框架是Spring生态系统的组成部分,为开发者提供了声明式数据访问的方式,允许通过简单的...
Spring Data JPA是Spring Framework的一个模块,它简化了Java Persistence API(JPA)的使用,使开发者能够以更简洁的方式与数据库进行交互。以下将详细阐述Spring Data JPA的关键知识点。 1. **Spring Boot基础**...
在本文中,我们将深入探讨"Spring+SpringMVC+SpringDataJPA+Hibernate"这个集成框架,这是一个在Java开发中广泛使用的强大组合,用于构建高效、可扩展的企业级应用程序。 首先,Spring是一个全面的Java应用框架,它...
Spring Data JPA是Spring框架的一个模块,专门用于简化Java Persistence API (JPA)的使用,它使得数据库操作变得更加便捷和高效。JPA是Java中的一种ORM(对象关系映射)规范,允许开发者以面向对象的方式处理数据库...
Spring Data JPA是Spring框架的一个重要模块,它简化了Java Persistence API (JPA)的使用,使得数据库操作变得更加便捷和高效。这篇详细的帮助文档旨在深入探讨Spring Data JPA的新特性和最佳实践,帮助开发者充分...
总的来说,这个程序构架展示了如何利用Spring 4.2、Spring MVC、Spring Data JPA和Hibernate来构建一个高效、可维护的企业级Web应用。通过合理利用这些技术,开发者可以更加专注于业务逻辑,而不是底层的数据访问...
Spring Data JPA是Spring框架的一个模块,主要目的是简化Java企业级应用程序中数据访问层的开发。这个框架提供了对Java Persistence API (JPA) 的高级抽象,使得开发者可以更高效地与数据库进行交互,无需编写大量的...
**Spring Data JPA** 是一个由Spring框架提供的重要模块,它简化了Java应用程序与数据库之间的交互,特别是基于JPA(Java Persistence API)的持久层操作。Spring Data JPA旨在通过提供自动化Repository接口实现、...
Spring Data JPA 是一个基于 Spring 框架的数据访问抽象层,它简化了 Java 应用程序与关系型数据库之间的交互。该版本为 1.7.2.RELEASE,发布日期为 2015 年 1 月 29 日,主要贡献者包括 Oliver Gierke、Thomas ...
Spring Data JPA 是 Spring 框架的一个重要模块,它旨在简化数据库访问,并提供了一种一致的方式来实现对数据存储的查询操作。在 Spring Data JPA 1.3.0.RELEASE 版本中,我们可以深入探讨其核心特性、改进与优势。 ...
SpringData JPA支持多个数据源配置,方便构建微服务架构或数据分片场景。 10. **错误处理与调试** 在开发过程中,理解JPA抛出的异常类型,如PersistenceException、EntityExistsException等,有助于快速定位和...
总之,Spring Boot通过starter-data-jpa模块和Hibernate、Ehcache整合,为我们提供了一个强大的工具集,可以有效地实现二级缓存机制,优化应用性能,减少数据库压力。开发者需要掌握这些知识点,以确保在实际的项目...
Spring Data JPA 1.1.0.RELEASE版本是这个库的一个早期版本,但仍然包含了丰富的功能和改进,使得开发人员可以更高效地处理数据持久化问题。 首先,让我们理解Spring Data JPA的核心概念。Spring Data JPA通过...
在这个"Spring+SpringMVC+SpringData+JPA+Hibernate+Shiro"的组合中,我们涉及到了Spring生态系统的多个核心组件,以及两个重要的持久层技术和一个安全框架。下面将逐一详细介绍这些技术及其整合方式。 1. **Spring...
Spring Data JPA 是一个基于 Java Persistence API(JPA)的数据访问技术,提供了一个简洁的方式来访问数据库。它提供了一个抽象层,允许开发者使用 Java 语言来访问数据库,而不需要编写 SQL 语句。 Spring Data ...
"JPA + SpringData 操作数据库原来可以这么简单 ---- 深入了解 JPA - 2 - crawl+ - 博客园.url"、"JPA + SpringData 操作数据库 ---- 深入了解 SpringData - crawl+ - 博客园.url"和"JPA + SpringData 操作数据库...