Spring Data

Redis序列化选型及应用

北城以北 提交于 2019-12-19 11:11:30
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 前言 序列化的含义、意义及使用场景 序列化:将对象写入到IO流中 反序列化:从IO流中恢复对象 意义:序列化机制允许将实现序列化的Java对象转换位字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使得对象可以脱离程序的运行而独立存在。 使用场景:所有可在网络上传输的对象都必须是可序列化的,比如RMI(remote method invoke,即远程方法调用),传入的参数或返回的对象都是可序列化的,否则会出错;所有需要保存到磁盘的java对象都必须是可序列化的。通常建议:程序创建的每个JavaBean类都实现Serializeable接口。 Redis序列化Spring Data实现 Spring-data-redids提供RedisSerializer接口用于Redis序列化实现,具体分为以下几种实现 JdkSerializationRedisSerializer RedisTemplate默认序列化 优点: 通用性强 反序列化时不需要提供类型信息(class) 缺点: 序列化速度慢 序列化占用内存大 序列化对象必须实现Serializable接口 可读性差 注意事项:

【Spring Boot】15.整合JPA

百般思念 提交于 2019-12-07 08:11:06
简介 SpringData 项目的目的是为了简化构建基于 Spring框架应用 的数据访问技术,包括非关系数据库、Map-Reduce 框架、云数据服务等等;另外也包含对关系数据库的访问支持。 Spring Data包含的子项目 Spring Data Commons Spring Data JPA Spring Data KeyValue Spring Data LDAP Spring Data MongoDB Spring Data Gemfire Spring Data REST Spring Data Redis Spring Data for Apache Cassandra Spring Data for Apache Solr Spring Data Couchbase (community module) Spring Data Elasticsearch (community module) Spring Data Neo4j (community module) SpringData特点 SpringData为我们提供使用统一的API来对数据访问层进行操作,这主要是Spring Data Commons项目来实现的。Spring Data Commons让我们在使用关系型或者非关系型数据访问技术时都基于Spring提供的统一标准,标准包含了CRUD(创建、获取

spring-boot和JPA多数据源整合

痴心易碎 提交于 2019-12-05 05:22:12
今天弄一下spring-boot和jpa的多数据源整合 Jpa(Java Persistence API)Java持久化API,它是一套ORM规范 只是一套规范 Spring Boot中使用的Jpa实际上是Spring Data Jpa,Spring Data是Spring家族的一个子项目,用于简化SQL和NoSQL的访问,在Spring Data中,只要你的方法名称符合规范,它就知道你想干嘛,不需要自己再去写SQL。实际还是hibernate。 接下来我们简单来弄下,直接 在idea里创建spring-boot工程,勾选web里的web和sql里的JPA和mysql依赖 然后在依赖里,写一下mysql的版本,一般五点几就行了,再添加Druid依赖 依赖如下 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0<

Hibernate N+1/1+N问题

最后都变了- 提交于 2019-12-04 09:14:16
Group对Equipment是一对多关系,如果使用SpringData的简捷接口JpaSpecificationExecutor findAll发起查询,就会查询group表一次,equipment表多次,根据groupId。这就是传说中的1+N性能问题,如果group下equipment很多,就会引发当先查询线程的栈溢出。 由此可以需要注意,配置对象配置了单向/双向一对多,就可能发生此问题,需要避免使用这类间接接口。 使用hibernate/JPA的关系时,需要仔细思考一下查询的时候会生成的SQL。hibernate/jpa固然为我们省去了表和对象的映射,但要思考他的处理方式。 @Data @Entity @Table(name = "t_group") public class Group extends XbootBaseEntity { @ApiModelProperty(value = "组名") private String name; @ApiModelProperty(value = "备注") private String remark; @ApiModelProperty(value = "所属项目") private String projectId; // @ManyToOne // private Project project; @OneToMany

怎么用 Spring Data 在 RESTful API 中实现更好的分页

守給你的承諾、 提交于 2019-12-04 03:58:18
介绍 本文将重点介绍如何使用 Spring MVC 和 Spring Data 在 RESTful API 中实现分页。 REST 分页的可发现性 在分页范围内,满足 REST 的 HATEOAS 约束,意味着使 API 的客户端能够基于导航中的当前页面发现下一页和上一页。 为此,我们将使用Link HTTP 响应头,以及 “next”,“prev”,“first” 和 “last” 链接关系类型。 添加一个侦听器,监听器将检查导航是否允许下一页,上一页,第一页和最后一页。它将相关的 URI 作为 “链接” 添加到 HTTP 响应头中 。 void addLinkHeaderOnPagedResourceRetrieval( UriComponentsBuilder uriBuilder, HttpServletResponse response, Class clazz, int page, int totalPages, int size ){ String resourceName = clazz.getSimpleName().toString().toLowerCase(); uriBuilder.path( "/admin/" + resourceName ); // ... } 接下来,我们将使用 StringJoiner 连接每个链接。我们将使用

java – 混合Spring MVC Spring数据休息导致奇怪的MVC响应

前提是你 提交于 2019-12-03 02:59:30
我有两个JPA实体,一个具有SDR导出的存储库,另一个具有Spring MVC控制器和一个未导出的存储库. MVC暴露实体引用了SDR管理实体.参见下面的代码参考. 从UserController检索用户时,问题出现. SDR管理实体不会序列化,似乎Spring可能正在尝试在响应中使用HATEOAS参考. 以下是完全填充用户的GET如下所示: { "username": "foo@gmail.com", "enabled": true, "roles": [ { "role": "ROLE_USER", "content": [], "links": [] // why the content and links? } // no places? ] } 如何使用嵌入式SDR管理实体清楚地从Controller中返回User实体? Spring MVC管理 实体 @Entity @Table(name = "users") public class User implements Serializable { // UID @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @JsonIgnore private Long id; @Column(unique = true) @NotNull private String

译:Spring Data Repository 不区分大小写查询

我与影子孤独终老i 提交于 2019-12-01 22:22:54
使用Spring Data Repository 不区分大小写查询 原文链接: https://www.baeldung.com/spring-data-case-insensitive-queries 作者: Shubhra Srivastava 译者:liululee 1. 概览 Spring Data JPA 查询默认是大小写敏感的,换句话说,字段值的比较是区分大小写的。 本教程中,我们将探讨如何在 Spring Data JPA repository 快速新建不区分大小写的查询. 2. 依赖 首先,确保 pom.xml 包含 Spring Data 和 H2 依赖。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>2.1.3.RELEASE</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> <version>1.4.199</version> </dependency> 最新版本请移步

spring data与jpa

孤者浪人 提交于 2019-12-01 19:58:50
sring data:spring底层默认进行数据访问采用的一个技术,是spring官方提供的用来简化数据访问的一个项目,在这个项目里有非常多的模块,能简化各种数据层的操作,比如spring date jpa简化关系型数据库的操作,spring data mongodb的操作,spring data redis等, spring date的理想就是统一数据层访问的api,spring data提供一些respository接口,有了spring data,我们的 应用程序只要面对spring data编程 spring data jpa:java持久化api,是叫J2EE的一个规范,操作关系型数据库,spring data预留接口,操作去实现spring data的接口就可以了 来源: oschina 链接: https://my.oschina.net/u/3788556/blog/1852853

redis(三)与spring整合

半腔热情 提交于 2019-11-30 07:39:51
一、 JAVA操作redis通常使用的是Jedis,通过java代码来操作redis的数据存储读取等操作,用过的人应该知道,Jedis客户端已经足够简单和轻量级了,但是呢,在此同时,Spring也为Redis提供了支持,就是在Spring-data模块中的Spring-Data-Redis(SDR),它一部分是基于Jedis客户端的API封装,另一部分是对Spring容器的整合。 springdata的一些资料: 资料: http://projects.spring.io/spring-data-redis/ 文档: https://docs.spring.io/spring-data/redis/docs/1.8.6.RELEASE/reference/html/ 前提你的ssm已经搭建好(其实就是redis与spring的整合) 二、整合 1、pom中引入相应的jar包 <!--reids--> <spring.redis.version>1.6.0.RELEASE</spring.redis.version> <jedis.version>2.7.2</jedis.version> <commons.version>2.4.2</commons.version> <!--redis--> <!-- config redis data and client jar-->

技术专题讨论:如何对 JPA 或者 MyBatis 进行技术选型

自作多情 提交于 2019-11-30 02:06:36
在我们平时的项目中,大家都知道可以使用 JPA 或者 Mybatis 作为 ORM 层。对 JPA 和 Mybatis 如何进行技术选型? 下面看看大精华总结如下: 最佳回答 首先表达个人观点,JPA必然是首选的。 个人认为仅仅讨论两者使用起来有何区别,何者更加方便,不足以真正的比较这两个框架。要评判出更加优秀的方案,我觉得可以从软件设计的角度来评判。个人对 mybatis 并不熟悉,但 JPA 规范和 springdata 的实现,设计理念绝对是超前的。软件开发复杂性的一个解决手段是遵循 DDD(DDD 只是一种手段,但不是唯一手段),而我着重几点来聊聊 JPA 的设计中是如何体现领域驱动设计思想的,抛砖引玉。 聚合根和值对象 领域驱动设计中有两个广为大家熟知的概念,entity(实体)和 value object(值对象)。entity 的特点是具有生命周期的,有标识的,而值对象是起到一个修饰的作用,其具有不可变性,无标识。在 JPA中 ,需要为数据库的实体类添加 @Entity 注解,相信大家也注意到了,这并不是巧合。 @Entity @Table(name = "t_order") public class Order { @Id private String oid; @Embedded private CustomerVo customer; @OneToMany