SpringDataJPA入门2
SpringDataJPA实体概述
JPA提供了一种简单高效的方式来管理Java对象(POJO)到关系型数据库的映射,此类Java对象成为JPA实体或简称实体。实体通常与底层数据库中的单个关系表相关联,每个实体的实例表示数据库表格中的某一行
SpringDataJPA实体管理器
实体管理器(EntityManager)用于管理系统中的实体,它是实体与数据库之间的桥梁,通过调用实体管理器的相关方法可以把实体持久化到数据库中,同时也可以把数据库中的记录打包成实体对象。
实体的生命周期:

从图中我们可以看到,一个实体有四种状态:新建状态、托管状态、游离状态、删除状态。
刚创建出来的一个对象是处于新建状态,跟创建一个普通java对象一样,是通过new出来的一个对象,对新建对象进行赋值以后,调用实体管理器的persist方法,可以让实体状态迁移到托管状态,这个时候可以做两件事:插入语句把数据插入到数据库中同时标记实体为托管状态,处于托管状态的实体如果被修改属性,事务提交以后这些改变会自动提交到数据库中。托管状态标志着正在被实体管理器管理,如果我们提交事务,那么实体的状态就变成游离状态。
所谓的游离状态,是指修改实体的属性是不会触发数据库操作,这种状态跟新建状态很相似,区别在于游离态的实体的id属性是有值的,而新建状态的实体id是没有值的。如果调用实体管理器的close方法或者clear方法或者detach都可以让实体变成游离状态。其中close方法是关闭实体管理器,clear方法是是实体管理器的所有的实体都变成游离态,detach可以使单个实体变成游离态。处于托管状态的实体我们可以删除,可以调用实体管理器的remove方法。但这个时候系统是不会实际删除数据的,需要提交事务才会删除记录。
SpringDataJPA入门2的更多相关文章
- SpringDataJpa入门案例及查询详细解析
SpringDataJpaSpring Data JPA 让我们解脱了DA0层的操作,基本上所有CRUD都可以依赖于它来实现,在实际的工作工程中,推荐使用Spring Data JPA+ORM(如:h ...
- SpringDataJPA入门就这么简单
一.SpringData入门 在上次学SpringBoot的时候,那时候的教程就已经涉及到了一点SpringData JPA的知识了.当时还是第一次见,觉得也没什么大不了,就是封装了Hibernate ...
- SpringDataJPA 入门
前言 1. 三者的区别与联系 JPA:本身是一种ORM规范,不是ORM框架.由各大ORM框架提供实现. Hibernate是一个完整的ORM框架,常规CRUD我们不需要写一句SQL;框架比较重,学习成 ...
- Spring Data JPA 初体验
一,JPA相关的概念 JPA概述 全称是:JavaPersistence API.是SUN公司推出的一套基于ORM的规范. Hibernate框架中提供了JPA的实现. JPA通过JDK 5.0注解或 ...
- spring-data-jpa快速入门(一)——整合阿里Druid
一.概述 官网:https://projects.spring.io/spring-data-jpa/ 1.什么是spring-data-jpa Spring Data JPA, part of th ...
- 项目一:项目第二天 Jquery ztree使用展示菜单数据 2、 基础设置需求分析 3、 搭建项目框架环境--ssh(复习) 4、 SpringData-JPA持久层入门案例(重点) 5、 Easyui menubutton菜单按钮使用 6、 Easyui messager消息框使用
1. Jquery ztree使用展示菜单数据 2. 基础设置需求分析 3. 搭建项目框架环境--ssh(复习) 4. SpringData-JPA持久层入门案例(重点) 5. Easyui menu ...
- 【spring boot】9.spring boot+spring-data-jpa的入门使用,实现数据持久化
spring-data-jpa官方使用说明文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/ spring-d ...
- SpringBoot入门系列~Spring-Data-JPA自动建表
1.pom.xml引入Spring-Data-Jpa和mysql依赖 <!-- Spring-data-jpa依赖 --> <dependency> <groupId&g ...
- SpringDataJPA快速入门
访问我的博客 前言 之前在学习 SpringBoot 框架的时候,使用到了 SpringData JPA,但是当时只是简单的查询,没有用到稍微复杂的查询. JPA 的 JPQL 语法规则对于简单的查询 ...
随机推荐
- SQLite – DISTINCT 关键字
SQLite – DISTINCT关键字 使用SQLite DISTINCT关键字与SELECT语句来消除所有重复的记录和获取唯一的记录. 可能存在一种情况,当你有多个表中重复的记录. 获取这些记录, ...
- centos7 设置grub密码及单用户登录实例
centos7与centos6在设置grub密码的操作步骤上有很大的差别,特此记录供以后查用 grub加密的目的: 防止不法分子利用单用户模式修改root密码 给grub加密可以采用明文或者加密的密文 ...
- maven打包的含义
我们在用maven构建java项目时,最常用的打包命令有mvn package.mvn install.deploy,这三个命令都可完成打jar包或war(当然也可以是其它形式的包)的功能,但这三个命 ...
- vueCode 常用代码总结 20190116
<template>props 传参<in-body :mbx="['首页','','']"> props 代码使用<BreadcrumbItem&g ...
- 关于sigleton模式
单例模式的要点有三个:一是某个类只能有一个实例:二是它必须自行创建这个实例:三是它必须自行向整个系统提供这个实例. 从具体实现角度来说,就是以下三点:一是单例模式的类只提供私有的构造函数,二是类定义中 ...
- WebDriverException: Message: unknown error: Chrome failed to start: crashed
the last answer WebDriverException: Message: unknown error: Chrome failed to start: crashed
- http协议基本认证Authorization
http协议是无状态的, 浏览器和web服务器之间可以通过cookie来身份识别. 桌面应用程序(比如新浪桌面客户端, skydrive客户端)跟Web服务器之间是如何身份识别呢? 什么是HTTP基本 ...
- Gym-101615C-Fear Factoring(数论)
分析 题意是求 L - R之间的数的因数和 我们知道如果对于一个数 i ( i < k = sqrt(R)),那么一定有一个数 R/i 也是R的因数 遍历 i = 2 - k,然后对于每一个 i ...
- JS模块之AMD, CMD, CommonJS、UMD和ES6模块
CommonJS 传送门 同步加载,适合服务器开发,node实现了commonJS.module.exports和require 判断commonJS环境的方式是(参考jquery源码): if ( ...
- crontab 和 supervisor
crontab linux系统自带的工具,可以做定时任务,最小间隔是1分钟 配置crontab 命令 如果是以root用户编辑的,那么最后运行也是以root用户运行脚本文件 crontab -e 命令 ...