package com.example.jpahibernate.service.impl;
import com.example.jpahibernate.dao.DemoDao;
import com.example.jpahibernate.entity.Demo;
import com.example.jpahibernate.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
/**
* 缓存注解简析:
* @CacheConfig 用于类级别,配置缓存共用属性,比如cacheNames
* @Cacheable 加入缓存
* @CachePut 更新缓存
* @CacheEvict 删除缓存
*/
//@CacheConfig(cacheNames = "demo") 有这一句,下方的缓存注解就不用在声明cacheNames了
@Service
public class DemoServiceImpl implements DemoService {
@Autowired
private DemoDao demoDao;
// @Cacheable(cacheNames = "demo") // key为空时,表示使用【方法的参数类型及参数值】作为key
@Cacheable(cacheNames = "demo", key = "#id")
@Override
public Demo getById(String id) {
Optional<Demo> op = demoDao.findById(id);
return op.get();
}
/**
* 这里的key,取值是'alldemo',如果直接写alldemo是会报错的, 需要加上\"\"或者''
* @return
*/
@Cacheable(cacheNames = "demo", key = "'alldemo'")
@Override
public List<Demo> findAll() {
return demoDao.findAll();
}
/**
* 更新时,更新该数据id的缓存,同时删除全数据的缓存,下次获取全数据会从数据库拿最新的
*/
@CachePut(cacheNames = "demo", key = "#demo.id")
@CacheEvict(cacheNames = "demo", key = "'alldemo'")
@Override
public Demo update(Demo demo) {
demoDao.saveAndFlush(demo);
return demo;
}
/**
* Executing an update/delete query
* JPS要求,’没有事务支持,不能执行更新和删除操作’。,所以自定义更新sql需要加注解
*/
// @CacheEvict(cacheNames = "demo") // key为空时,表示使用【方法的参数类型及参数值】作为key
@CacheEvict(cacheNames = "demo", key = "#id")
@Transactional
@Override
public void delete(String id) {
//逻辑删除而已
demoDao.deleteByIdStr(id);
}
@CacheEvict(cacheNames = "demo", key = "'alldemo'")
@CachePut(cacheNames = "demo", key = "#demo.id")
@Override
public void save(Demo demo) {
demoDao.save(demo);
}
@CacheEvict(cacheNames = "demo", key = "'alldemo'")
@Override
public List<Demo> batchSave(List<Demo> list) {
List<Demo> result = demoDao.saveAll(list);
return result;
}
//==========================keyGenerator START================================
@Cacheable(cacheNames = "demo", keyGenerator = "myGenerater")
@Override
public Demo getByIdForG(String id) {
Optional<Demo> op = demoDao.findById(id);
return op.get();
}
@CacheEvict(cacheNames = "demo", keyGenerator = "myGenerater")
@Transactional
@Override
public void deleteForG(String id) {
demoDao.deleteByIdStr(id);
}
//==========================keyGenerator END================================
}
没有合适的资源?快使用搜索试试~ 我知道了~
SpringBootJPA + EhCache
共137个文件
xml:98个
class:9个
java:9个
需积分: 5 0 下载量 146 浏览量
2022-12-05
22:05:43
上传
评论
收藏 149KB ZIP 举报
温馨提示
实现Spring Boot JPA + EhCache缓存,重写了缓存key的生成规则。 包括有测试接口的json
资源推荐
资源详情
资源评论
收起资源包目录
SpringBootJPA + EhCache (137个子文件)
DemoServiceImpl.class 3KB
DemoController.class 3KB
MyCacheManager.class 2KB
Demo.class 2KB
MyKeyGenerater$1.class 2KB
DemoService.class 1KB
JpaHibernateApplication.class 832B
MyKeyGenerater.class 803B
DemoDao.class 689B
mvnw.cmd 7KB
.gitignore 395B
.gitignore 184B
jpaHibernate.iml 11KB
maven-wrapper.jar 57KB
DemoServiceImpl.java 3KB
MyCacheManager.java 2KB
DemoController.java 2KB
Demo.java 2KB
MyKeyGenerater.java 1KB
DemoService.java 932B
DemoDao.java 620B
JpaHibernateApplication.java 415B
JpaHibernateApplicationTests.java 231B
JpaHibernate.postman_collection.json 6KB
inputFiles.lst 555B
createdFiles.lst 309B
集成ehcache.md 7KB
HELP.md 1KB
mvnw 10KB
maven-wrapper.properties 233B
application.properties 16B
application.properties 16B
workspace.xml 5KB
ehcache.xml 3KB
ehcache.xml 3KB
pom.xml 2KB
Maven__org_springframework_boot_spring_boot_configuration_processor_2_1_11_RELEASE.xml 919B
jarRepositories.xml 864B
Maven__com_fasterxml_jackson_module_jackson_module_parameter_names_2_13_4.xml 844B
Maven__org_hibernate_common_hibernate_commons_annotations_5_1_2_Final.xml 840B
compiler.xml 827B
Maven__org_springframework_boot_spring_boot_test_autoconfigure_2_7_6.xml 821B
Maven__com_vaadin_external_google_android_json_0_0_20131108_vaadin1.xml 808B
Maven__org_springframework_boot_spring_boot_starter_data_jpa_2_7_6.xml 807B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jsr310_2_13_4.xml 803B
Maven__org_springframework_boot_spring_boot_starter_logging_2_7_6.xml 800B
Maven__org_springframework_boot_spring_boot_starter_tomcat_2_7_6.xml 793B
Maven__com_fasterxml_jackson_datatype_jackson_datatype_jdk8_2_13_4.xml 789B
Maven__org_springframework_boot_spring_boot_autoconfigure_2_7_6.xml 786B
Maven__org_springframework_boot_spring_boot_starter_cache_2_7_6.xml 786B
Maven__org_springframework_boot_spring_boot_starter_json_2_7_6.xml 779B
Maven__org_springframework_boot_spring_boot_starter_jdbc_2_7_6.xml 779B
Maven__org_springframework_boot_spring_boot_starter_test_2_7_6.xml 779B
Maven__org_springframework_boot_spring_boot_starter_aop_2_7_6.xml 772B
Maven__org_springframework_boot_spring_boot_starter_web_2_7_6.xml 772B
Maven__org_apache_tomcat_embed_tomcat_embed_websocket_9_0_69.xml 768B
Maven__com_fasterxml_jackson_core_jackson_annotations_2_13_4.xml 759B
Maven__org_springframework_spring_context_support_5_3_24.xml 752B
Maven__jakarta_persistence_jakarta_persistence_api_2_2_3.xml 752B
Maven__com_fasterxml_jackson_core_jackson_databind_2_13_4_2.xml 752B
Maven__jakarta_transaction_jakarta_transaction_api_1_3_3.xml 752B
Maven__org_springframework_boot_spring_boot_starter_2_7_6.xml 744B
Maven__org_springframework_data_spring_data_commons_2_7_6.xml 744B
Maven__jakarta_activation_jakarta_activation_api_1_2_2.xml 741B
Maven__org_junit_platform_junit_platform_commons_1_8_2.xml 741B
Maven__jakarta_annotation_jakarta_annotation_api_1_3_5.xml 741B
Maven__org_junit_platform_junit_platform_engine_1_8_2.xml 734B
Maven__org_apache_tomcat_embed_tomcat_embed_core_9_0_69.xml 733B
Maven__com_sun_istack_istack_commons_runtime_3_0_12.xml 732B
Maven__org_junit_jupiter_junit_jupiter_params_5_8_2.xml 723B
Maven__org_springframework_boot_spring_boot_test_2_7_6.xml 723B
Maven__org_junit_jupiter_junit_jupiter_engine_5_8_2.xml 723B
Maven__org_apache_tomcat_embed_tomcat_embed_el_9_0_69.xml 719B
Maven__jakarta_xml_bind_jakarta_xml_bind_api_2_3_3.xml 719B
Maven__org_springframework_spring_expression_5_3_24.xml 717B
Maven__org_apache_logging_log4j_log4j_to_slf4j_2_17_2.xml 716B
Maven__org_springframework_data_spring_data_jpa_2_7_6.xml 716B
Maven__org_jboss_logging_jboss_logging_3_4_3_Final.xml 716B
Maven__org_hibernate_hibernate_core_5_6_14_Final.xml 714B
Maven__com_sun_activation_jakarta_activation_1_2_2.xml 713B
Maven__com_fasterxml_jackson_core_jackson_core_2_13_4.xml 710B
Maven__org_mockito_mockito_junit_jupiter_4_5_1.xml 706B
Maven__org_junit_jupiter_junit_jupiter_api_5_8_2.xml 702B
Maven__org_springframework_spring_context_5_3_24.xml 696B
Maven__org_springframework_spring_aspects_5_3_24.xml 696B
Maven__net_bytebuddy_byte_buddy_agent_1_12_19.xml 693B
Maven__org_springframework_spring_webmvc_5_3_24.xml 689B
Maven__org_springframework_boot_spring_boot_2_7_6.xml 688B
Maven__ch_qos_logback_logback_classic_1_2_11.xml 683B
Maven__org_springframework_spring_beans_5_3_24.xml 682B
Maven__org_apache_logging_log4j_log4j_api_2_17_2.xml 681B
Maven__org_apiguardian_apiguardian_api_1_1_2.xml 680B
Maven__com_mysql_mysql_connector_j_8_0_31.xml 677B
Maven__org_springframework_spring_test_5_3_24.xml 675B
Maven__org_springframework_spring_jdbc_5_3_24.xml 675B
Maven__org_springframework_spring_core_5_3_24.xml 675B
Maven__org_junit_jupiter_junit_jupiter_5_8_2.xml 674B
Maven__org_glassfish_jaxb_jaxb_runtime_2_3_7.xml 671B
Maven__org_springframework_spring_web_5_3_24.xml 668B
Maven__org_springframework_spring_orm_5_3_24.xml 668B
共 137 条
- 1
- 2
资源评论
ForOurLive-洪
- 粉丝: 26
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功