持久层

Mybatis 持久化,持久层

时光怂恿深爱的人放手 提交于 2020-02-28 02:15:54
持久化 持久化是将程序数据在持久状态和瞬时状态间转换的机制。 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。 JDBC就是一种持久化机制。文件IO也是一种持久化机制。 在生活中 : 将鲜肉冷藏,吃的时候再解冻的方法也是。将水果做成罐头的方法也是。 为什么需要持久化服务呢?那是由于内存本身的缺陷引起的 内存断电后数据会丢失,但有一些对象是无论如何都不能丢失的,比如银行账号等,遗憾的是,人们还无法保证内存永不掉电。 内存过于昂贵,与硬盘、光盘等外存相比,内存的价格要高2~3个数量级,而且维持成本也高,至少需要一直供电吧。所以即使对象不需要永久保存,也会因为内存的容量限制不能一直呆在内存中,需要持久化来缓存到外存。 持久层 什么是持久层? 完成持久化工作的代码块 . ----> dao层 【DAO (Data Access Object) 数据访问对象】 大多数情况下特别是企业级应用,数据持久化往往也就意味着将内存中的数据保存到磁盘上加以固化,而持久化的实现过程则大多通过各种 关系数据库 来完成。 不过这里有一个字需要特别强调,也就是所谓的“层”。对于应用系统而言,数据持久功能大多是必不可少的组成部分。也就是说,我们的系统中,已经天然的具备了“持久层”概念?也许是

springboot整合SpringDataJPA

纵然是瞬间 提交于 2020-02-26 18:12:17
什么是SpringDataJPA? ① SpringData是spring提供的操作数据的框架,jpa是其中的一个模块。 ②SpringDataJPA用于简化操作持久层(操作数据库)的代码,只需要编写接口即可。 JPA会根据你提供的实体类和持久层接口,自动创建数据库表并插入数据保存。意味着你不需要自己去创建数据库表!!! SpringBoot整合SpringDataJPA步骤 在pom文件中添加坐标 <properties> <java.version>1.8</java.version> <spring-cloud.version>Greenwich.SR1</spring-cloud.version> <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version> </properties> <dependencies> <!-- spring-boot启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 添加thymeleaf启动器 --> <dependency> <groupId>org

Spring整理

左心房为你撑大大i 提交于 2020-02-24 14:53:07
1、spring是什么?它包括哪几个部分? Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control: 反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多 著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架。 2、什么是IoC? 1.专业术语 控制反转 (Inversion of Control,缩写为 IoC ),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做 依赖注入 (Dependency Injection,简称 DI ),还有一种方式叫“依赖查找”(Dependency Lookup)。 2.释义 Spring提出了对象工厂的概念,由Spring工厂来管理对象的生命周期。所谓对象生命周期指的是从对象的创建一直到对象的销毁都由Spring来管理。我们无需再自己new对象,而是从Spring工厂中获取需要的对象。甚至对象的依赖也由工厂来注入,无需手动注入依赖。 3、什么是DI? Dependency Injection:依赖注入。它是 spring

SpringBoot整合持久层技术--(三)Spring Data JPA

China☆狼群 提交于 2020-02-20 21:58:22
简介:   JPA(java Persistence API)和SpringData是两个范畴的概念。spring data jpa是spring公司下的spring data项目的一个模块。 spring data jpa定义了接口来进行持久层的编写规范,同时还大大简化了持久层的CRUD操作。 从此可以看出,spring data jpa与jpa之间并没有直接的关系。 jpa是由sun公司定义的持久层规范,但是jpa 并没有做任何简化,其中只有一堆接口。 而spring data jpa中不仅有接口,还有实现类,正是这些实现类实现了CRUD操作的简化,但是实现类并不做CRUD操作。 spring data jpa和jpa一样,虽然定义了持久层的编写规范,但是持久层的具体操作需要由第三方框架来做,它自己并不能做相应的CRUD操作。 简而言之,spring data jpa和jpa的区别: 1、spring data jpa由spring提供 jpa由sun公司提供 2、两者属于同一等级,都是持久层的规范,spring data jpa对CRUD操作做了简化 两者都可以管理任何第三方持久层框架。是同一级别的。 pom.xml     <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring

SpringBoot整合持久层技术--(一)JdbcTemplate

拜拜、爱过 提交于 2020-02-20 18:00:31
简介;   JdbcTemplate是Spring提供的一套JDBC模板框架,利用AOP技术解决直接使用JDBC带来的重复代码问题。它没有MyBatis使用那么灵活,但是却比直接使用JDBC方便得多。SpringBoot中对JdbcTemplate的使用提供了自动化配置类 JdbcTemplateAutoConfiguration 。   部分源码: @Configuration @ConditionalOnClass({DataSource.class, JdbcTemplate.class}) @ConditionalOnSingleCandidate(DataSource.class) @AutoConfigureAfter({DataSourceAutoConfiguration.class}) @EnableConfigurationProperties({JdbcProperties.class}) public class JdbcTemplateAutoConfiguration { public JdbcTemplateAutoConfiguration() { } @Configuration static class JdbcTemplateConfiguration { private final DataSource dataSource; private

hibernate教程笔记1

谁都会走 提交于 2020-02-17 17:30:21
hibernate是什么? hibernate 是一个框架(framework) hibernate 是一个orm框架 orm (object relation mapping) 对象关系映射 框架 o object -> 业务层(只对对象操作) r relation-> 关系数据库 m mapping 对象关系映射文件 hibernate 处于我们项目的持久层位置(正因为如此,所以有人又把hibernate称为 持久层框架) hibernate 实际上就是对jdbc进行了轻量级的封装. hibernate 的基础还是我们java 反射机制 除了hiberante 这个orm框架,还有一些: apache ojb / toplink / ibatis / ejb cmp Apache OJB ()   Cayenne ()   Jaxor ()   Hibernate ()   iBatis ()   jRelationalFramework ()   mirage ()   SMYLE ()   TopLink () 把对象持久化 : 把对象的信息保存到数据库或者是文件. 总结: hibernate 是对jdbc进行轻量级封装的 orm 框架,充当项目的持久层. 为什么需要hibernate? 快如入门案例: hiberante 可以用在 j2se 项目,也可以用在 j2ee

IDEA之MyBatis逆向工程

末鹿安然 提交于 2020-02-17 06:39:48
逆向工程:通过数据库中已存在数据表,反向生成java中的实体类(生成对应的ORM持久层代码) 1.创建项目 代码生成器是项目的一个工具组件。 创建不使用模板的maven项目。 引入逆向工程的依赖。 mysql-connector-java mybatis-generator-core <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.17</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> </dependency> 2.配置生成规则 描述数据库中的表

SSH框架

百般思念 提交于 2020-02-16 19:01:28
SSH框架不是一个框架,而是多个框架(struts+spring+hibernate)的集成。 SSH框架是一种比较流行的Web应用程序开源集成框架, 用于 构建 灵活、易于扩展 的Web应用程序。 集成SSH框架的系统从 职责上 分为四层:表示层、业务逻辑层、数据持久层和域模块层(实体层) struts作为系统的整体基础架构,负责MVC的分离。 在struts框架的模型部分,控制业务跳转,利用Hibernate框架对数据持久层提供支持。 spring一方面作为轻量级的IoC容器,负责查找、定位、创建和管理对象与对象之间的依赖关系,另一方面,使struts和hibernate更好的工作。 由ssh构建系统的基本业务流程: (1)表示层,首先通过JSP页面实现交互界面,负责传送请求(request)和接收响应(response),然后根据struts的配置文件(struts-config.xml)将ActionServlet接收到的request委派给相应的Action处理。 (2)业务层,管理服务组件的IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据访问对象(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等组件以提升性能和保证数据的完整性。 (3)持久层,依赖于Hibernate的对象化映射和数据库交互,处理DAO组件请求的数据,并返回处理结果。

SSH框架整体理解和总结

佐手、 提交于 2020-02-16 11:43:02
首先, SSH 不是一个框架,而是多个框架( struts+ spring + hibernate )的集成 ,是目前较流行的一种Web应用程序开源 集成 框架,用于构建灵活、易于扩展的多层Web应用程序。 集成SSH框架的系统从职责上分为四层:表示层、业务逻辑层、数据持久层和域模块层 (实体层)。 Struts 作为系统的 整体基础 架构 ,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持 。 Spring 一方面作为一个轻量级的 IoC 容器,负责查找、定位、创建和管理对象及对象之间的依赖关系,另一方面能使 Struts 和 Hibernate 更好地工作。 由 SSH 构建 系统的基本业务流程是: 1 、 在表示层中,首先通过JSP页面实现交互界面,负责传送请求(Request)和接收响应(Response),然后Struts根据配置文件(struts-config.xml)将ActionServlet接收到的Request委派给相应的Action处理。 2 、 在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。 3 、 在持久层中

JWT(JSON Web Token)介绍

夙愿已清 提交于 2020-02-16 11:42:01
什么是JSON Web Token JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案,本文介绍它的原理和用法。 首先是跨域认证的问题 互联网服务离不开用户认证。一般流程是下面这样。 1、用户向服务器发送用户名和密码。 2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。 3、服务器向用户返回一个 session_id,写入用户的 Cookie。 4、用户随后的每一次请求,都会通过 Cookie,将 session_id 传回服务器。 5、服务器收到 session_id,找到前期保存的数据,由此得知用户的身份。 这种模式的问题在于,扩展性(scaling)不好。单机当然没有问题,如果是服务器集群,或者是跨域的 服务导向架构,就要求 session 数据共享,每台服务器都能够读取 session。 举例来说,A 网站和 B 网站是同一家公司的关联服务。现在要求,用户只要在其中一个网站登录,再访 问另一个网站就会自动登录,请问怎么实现? 一种解决方案是 session 数据持久化,写入数据库或别的持久层。各种服务收到请求后,都向持久层请 求数据。这种方案的优点是架构清晰,缺点是工程量比较大。另外,持久层万一挂了,就会单点失败。 另一种方案是服务器索性不保存 session 数据了,所有数据都保存在客户端