Spring Data

Day2.MongoDB学习笔记2

梦想的初衷 提交于 2020-04-30 20:43:38
一、MongoDB副本集概要 什么是MongoDB副本集? 副本集是一组mongodb进程,它维护了同样的数据集。副本集提供了信息冗余和高可用,是所有生产部署的基础。 客户端,读写操作主节点,然后将数据复制到副节点中。 节点 Primary Node 主节点,一个副本集只能有一个主节点,主要作用接受客户端所有写操作(默认情况下,也可以读取数据),并记录主节点操作日志,副节点复制主节点日志,用其同步数据。 Secondary Node 副节点,复制主节点的操作,并同步其数据,实际上副节点是主节点数据的备份。如果主节点挂掉的话,剩余的副节点会触发选举算法,将其中的一个副节点,选举为主节点。 Replication 通信机制 Heartbeat 心跳检测,主副、副副间都要心跳检测 二、搭建MongoDB副本集(Replication) 主节点中插入一条数据,副节点当中查看是否有同步数据 准备工作,并启动起来三个服务 至少3台服务器 准备3份数据存放目录 //bin目录下,运行server,当作主服务器 ./mongod --port 28000 --dbpath=/data/node1/ --bind_ip_all --replSet rs //再分别启动两个副服务器 ./mongod --port 28001 --dbpath=/data/node2/ --bind_ip_all -

你应该知道的springboot mongodb jpa那些小tip.

本秂侑毒 提交于 2020-04-29 17:54:41
官方文档 https://docs.spring.io/spring-data/data-mongodb/docs/current/reference/html/index.html 查询: *************************************************************************** mongoTemple查询和修改 @Autowired MongoTemplate mongoTemp; Criteria criteria = Criteria.where("name").regex("www").andOperator(Criteria.where("creatTime").gte(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2018-06-20 21:48:54"))); mongoTemp.find(new Query(criteria), Movie.class); ************************************************************************** List findByName(String name); List findByNameAndAge(String name,String age

带着新人学springboot的应用08(springboot+jpa的整合)

試著忘記壹切 提交于 2020-04-25 17:05:05
  这一节的内容比较简单,是springboot和jpa的简单整合,jpa默认使用hibernate,所以本质就是springboot和hibernate的整合。   说实话,听别人都说spring data jpa很简化操作,不用写多少代码,今天我们就来看看。   顺便一提的是,传统大公司用hibernate比较多,互联网公司用mybatis比较多。 1.大概说一下jpa的好处(熟悉的话可以跳过)   前面说过springboot和mybatis的整合,用mybatis的最大优点就是可以看得见sql语句,我们想改就改,想怎么优化就怎么优化。   但是用过hibernate的小伙伴应该知道,hibernate几乎是看不见sql语句的,因为hibernate底层自动生成,但是前提是你要配置好数据库表和一个javabean的映射关系,也比较麻烦,所以就有了jpa,jpa是一个规范,不是框架(这么说很抽象,你可以把jpa当成一个接口,而hibernate是其中的一个实现类),那么我们使用jpa,那么间接的就使用了hibernate。   那为什么这么麻烦呢?直接使用hibernate不就好了吗?   举个很简单的例子,接口Animal,两个实现类Dog、Cat;假如有个项目我们要使用Dog里的crud方法,直接Animal animal = new Dog();然后animal.xx()

Spring Data REST不完全指南(二)

无人久伴 提交于 2020-04-23 07:15:28
上一篇文章介绍了Spring Data REST的功能及特征,以及演示了如何在项目中引入Spring Data REST并简单地启动演示了Spring Data REST项目。在本文中,我们将深入了解Spring Data REST的特性,以此来满足我们日常api开发工作的要求。 如果仅仅是上一篇文章中对Spring Data REST的使用,那无法做到在日常开发中使用Spring Data REST,所以在上一篇文章中,我们列出了日常api开发中的一些必要功能: 需要满足的一些要求: 1.针对字段级别,方法级别,类级别进行限制(禁止某些字段,方法,接口的对外映射)。 2.对数据增删改查的限制(禁止某些请求方法的访问)。 3.能个性化定义请求的路径。 4.对所传参数进行值校验。 5.响应统一处理。 6.异常处理。 7.数据处理的切面。 ➡️ 本文,将演示这些要求中的前三个要求。 针对接口级别,方法级别,字段级别进行访问限制 所谓的访问限制,这里我们的目的是指定某些资源不对外暴露,Spring Data REST使用注解来实现各级别的访问限制。 接口级别的访问限制: @RepositoryRestResource(exported = false) public interface TenantRepository extends CrudRepository<Tenant,

SpringBoot Jpa入门案例

你离开我真会死。 提交于 2020-04-22 03:30:11
我们先来了解一下是什么是 springboot jpa , springboot jpa 的入门又是怎么样的呢? 1 . springboot jpa 是sun公司提供的持久化规范,为java开发人员提供了一种对象/关联映射工具来 管理java应用中的关系数据。它主要表现是为了简化现有的持久化开发工作和整合 ORM 技术,结 habernate 、 toplink 、 JDO 等 ORM 框架各自为营的局面。 2 . Spring Boot Jpa 是 Spring 基于 ORM 框架、 Jpa 规范的基础上封装的一套 Jpa 应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。它提供了包括增删改查等在内的常用功能,且易于扩展!学习并使用 Spring Data Jpa 可以极大提高开发效率! Spring Boot Jpa 让我们解脱了 DAO 层的操作,基本上所有 CRUD 都可以依赖于它来实现 注意:Jpa 是一套规范,不是一套产品,那么像 Hibernate,TopLink,JDO 他们是一套产品,如果说这些产品实现了这个 Jpa 规范,那么我们就可以叫他们为 Jpa 的实现产品。 3 .了解一下 Spring Data jpa SpringData为我们提供使用统的API来对数据访问层进行操作;这主要是Spring Data Commons项目来实现的

Spring Data JDBC与JDBC的区别

自古美人都是妖i 提交于 2020-04-17 20:41:18
JDBC规范 java.sql和javax.sql两个包中的类与接口(天龙八部): DataSource:数据源 DriverManager:驱动管理 Driver:JDBC驱动 Connection:数据库连接 Statement:语句,执行SQL PrepareStatement:预编译语句,性能更好 CallableStatement:调用存储过程 ResultSet:结果集,封装了多条记录 JDBC数据库连接池/Connection Pool DBCP:apache tomcat内置 c3p0:hibernate 光-HikariCP:spring boot Spring Boot Spring Framework:核心 IoC容器: Spring core Spring bean Spring context Spring el AOP编程:后继 Spring aop Spring Data: Spring Data Spring Data JDBC Spring Data JPA Spring Data MongoDB/Redis Spring Data.... Spring MVC MVC 架构模式:使用控制器实现模型与视图的结藕(分离) 基于Java Web技术中 Servlet/JSP 规范 Spring Security 集成其他技术 为了让小伙伴更快的

6. 基于Spring Data的领域事件发布

狂风中的少年 提交于 2020-04-06 17:48:53
领域事件发布是一个领域对象为了让其它对象知道自己已经处理完成某个操作时发出的一个通知,事件发布力求从代码层面让自身对象与外部对象解耦,并减少技术代码入侵。 一、 手动发布事件 // 实体定义 @Entity public class Department implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer departmentId; @Enumerated(EnumType.STRING) private State state; } // 事件定义 public class DepartmentEvent { private Department department; private State state; public DepartmentEvent(Department department) { this.department = department; state = department.getState(); } } // 领域服务 @Service public class ApplicationService { @Autowired private ApplicationEventPublisher

Spring基础

一世执手 提交于 2020-02-27 04:06:31
主要用于service层; 轻量级java开发框架; 各层 web 层: struts , spring-MVC service 层: spring dao 层: hibernate , mybatis , jdbcTemplate --> spring-data Spring核心:控制反转IOC 切面编程AOP 方便解耦合 Spring核心容器:beans、core、context、expression 来源: oschina 链接: https://my.oschina.net/u/4434424/blog/3167967

面试时这么问你Spring Boot,你能答对几个?

空扰寡人 提交于 2020-02-25 18:27:51
导语: Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。 做 Java 开发,没有人敢小觑 Spring Boot 的重要性,现在出去面试,无论多小的公司 or 项目,都要跟你扯一扯 Spring Boot,扯一扯微服务,不会?没用过? Sorry ,我们不合适! 今天我就给大家整理了 16 道高频 Spring Boot 面试题,希望能够帮助到各位准备寻找新的工作机会的小伙伴。觉得有收获的话,可以帮忙转发、收藏一下 1.什么是 Spring Boot ? 传统的 SSM/SSH 框架组合配置繁琐臃肿,不同项目有很多重复、模板化的配置,严重降低了 Java 工程师的开发效率,而 Spring Boot 可以轻松创建基于 Spring 的、可以独立运行的、生产级的应用程序。通过对 Spring 家族和一些第三方库提供一系列自动化配置的 Starter,来使得开发快速搭建一个基于 Spring 的应用程序。 Spring Boot 让日益臃肿的 Java 代码又重回简洁。在配合 Spring Cloud 使用时,还可以发挥更大的威力。 2.Spring Boot的优点有哪些? Spring Boot的优点如下? 减少开发,测试时间和努力。

Spring Data Interceptor EventListener

只愿长相守 提交于 2020-01-07 20:35:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一下代码纯属个人项目应用不喜勿喷。 参考链接 所有拦截器以及触发器 http://blog.csdn.net/ljhabc1982/article/details/6319251 Interceptor 加入到程序应用当中(配置) 第一步继承拦截器 import org.hibernate.EmptyInterceptor; import org.hibernate.type.Type; import org.springframework.context.annotation.Configuration; import java.io.Serializable; /** * Created by pw on 2016/12/16. */ @Configuration public class AuditLogInterceptor extends EmptyInterceptor { @Override public boolean onLoad(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types) { return false; } public boolean onFlushDirty