JPA的学习
JPA
1.实体注解 @Entity
主键注解 @Id 主键策略@GeneratedValue(strategy=GenerationType.AUTO[IDENTITY,SEQUENCE,TABLE]) auto:根据方言数据库自己选择,默认选项 identity:MySQL支持 sequence:oracle支持
@Column(length=32)字段长度
@Temporal(TemporalType.DATE) 日期类型注解,只存储日期
@Lob 字段为长文本或者二进制数据时
@Transient 属性不和数据库字段映射
@Basic(fetch=Fetch.LAZY) 用在字段上面,延迟加载,用不到的时候是不会加载到内存的
2.提供的接口
EntityManagerFactory 功能等价于hibernate里的sessionFactory
EntityManager 等价于SessionManager

EntityManagerFactory factory=Persistence.careateEntityManagerFactory("[配置文件里的持久化单元名称]")
EntityManager em=factory.createEntityManager();
em.getTranscation().begin(); //开始事物
em.persist(new Entity());
em.getTransaction().commit();
em.close();
factory.close();

find() :根据ID号加载实体,相当于hibernate里的get()
getReference(): 根据ID号懒加载实体类,只有访问实体类的对象时才会与数据库同步,相当于hibernate里的load
remove():删除,里面参数为对象
查询语句:
Query query=em.createQuery("select o from person o where o.id=?1");
query.setParameter(1,2);
List<Person> personList=query.getResultList();
更新查询:
1 Query query=em.createQuery("delete from person o where o.id=?1");
2 query.setParameter(1,2);
3 quert.executeUpdate();
refresh():使内存中的Javabean和数据库数据再一次同步化。注:已经执行过find函数了,此时别人修改了数据库中的数据,你再次调用find函数是无法更新值得,因为jpa会默认从EntityManager中返回给你
3、双向管理与级联操作
1-m关系(用注解OneToMany):多的一方为关系的维护的,关系维护断负责外键记录的更新,关系被维护断是没有权利更新外键字段的
其中可以有参数cascade,值可取CascadeType.Refresh,CascadeType.persist等
fetch:值可取FetchType.EAGER(立即得到),FetchType.LAZY(延迟加载),默认为EAGER
mappedby:出现这个的类为关系的被维护端,值为维护端中的一个属性。例如订单和订单项,在订单里的订单项上的oneToMan注解中出现此参数,表示订单表Order为被维护的表,订单项表的OrderItem里的Order属性来维护,则mappedby的值就是"order"
@JoinColumn:定义外键字段的名称 例如@JoinColumn(name="order_id")
JPA的学习的更多相关文章
- SpringBoot中JPA的学习
SpringBoot中JPA的学习 准备环境和项目配置 写一下学习JPA的过程,主要是结合之前SpringBoot + Vue的项目和网上的博客学习一下. 首先,需要配置一下maven文件,有这么两个 ...
- spring data jpa入门学习
本文主要介绍下spring data jpa,主要聊聊为何要使用它进行开发以及它的基本使用.本文主要是入门介绍,并在最后会留下完整的demo供读者进行下载,从而了解并且开始使用spring data ...
- Spring Data Jpa 入门学习
本文主要讲解 springData Jpa 入门相关知识, 了解JPA规范与Jpa的实现,搭建springboot+dpringdata jpa环境实现基础增删改操作,适合新手学习,老鸟绕道~ 1. ...
- JPA入门学习集合springboot(一)
1.在pom.xml文件中添加相应依赖 SpringData jpa和数据库MySql <!-- Spring Data JPA 依赖(重要) --> <dependency> ...
- SpringData JPA的学习笔记之环境搭建
一.环境搭建 1.加入jar包 spring jar+jpa jar +springData jar >>SpringData jar包 2.配置applicationCont ...
- SpringBoot+Jpa+MySql学习
上一篇介绍了springboot简单整合mybatis的教程.这一篇是介绍springboot简单整合jpa的教程. 由于jpa的功能强大,后续会继续写关于jpa的介绍已经使用,本文只是简单介绍一下它 ...
- eclipse中JPA插件的安装与使用
说明 上周实验室学习了数据库设计相关的内容,其中涉及到将数据库实体化的问题,JPA是一个很好的实现工具,便开始着手于JPA的学习.因为JPA涉及到的知识还是挺多的,需要学习许多新的知识,所以对于JPA ...
- JPA、SpringData JPA 、Hibernate和Mybatis 的区别和联系
一.JPA 概述 1. Java Persistence API(Java 持久层 API):用于对象持久化的 API 2. 作用:使得应用程序以统一的方式访问持久层 3. 前言中提到了 Hibern ...
- SpingData 的学习
Spring Data : Spring 的一个子项目,类似于Sping MVC 一样是Spring的另一个模块,所以还需要下载其jar ,它需要的jar有: spring-data-jpa-1.11 ...
随机推荐
- MinGW(GCC)编译DLL文件
这两天用CB(Code::Blocks)写个小程序,要编译出DLL供VB(6)使用.CB使用mingw-gcc作为编译器,在库文件的产出上跟VC.VS之类的IDE略有不同. 由于C语言的基础知识不是太 ...
- Azure PowerShell (14) 批量导出Azure ASM ACL和ARM NSG配置信息
<Windows Azure Platform 系列文章目录> 最近有一个客户需求,需要批量导出Azure Classic VM的ACL (Access Control List), 还有 ...
- 【SqlServer系列】表单查询
1 概述 如下几个问题,如果你能解决,请继续往下看,若不能解决,请先复习SQL基础知识,再来阅读本篇文章.本篇文章深度中等左右. Q1:表StudentScores如下,用一条SQL语句查询出每门 ...
- JavaWeb 后端 <十一> 之 DBUtils 框架 (基本使用 结果集 事务处理 对表读取)
一.数据库操作框架 1.ORM:Object Relation Mapping Hibernate:非常流行 JPA:Java Persistent API.ORM标准 MyBatis:2010年开始 ...
- vb编程代码大全
数值型函数:abs(num): 返回绝对值sgn(num): num>0 1; num=0 0; num<0 -1;判断数值正负hex(num): 返回十六进制值 直接表示:&Hx ...
- 遍历数组按学号找人,若找到则输出信息,否则输出"查无此人"
//建立一个类类型的数组,并向这个数组内添加学生信息,包括姓名和年龄等 **********************学生类************************** package prac ...
- C# 中的 ConfigurationManager类引用方法应用程序配置文件App.config的写法
c#添加了Configuration;后,竟然找不到 ConfigurationManager 这个类,后来才发现:虽然引用了using System.Configuration;这个包,但是还是不行 ...
- docker搭建zabbix
本次使用docker搭建zabbix的组合是mysql+docker+zabix-server 1 先安装数据库mysql docker run --name zabbix-mysql-server ...
- JS - dateFormat
// date必填, pattern默认'yyyy-MM-dd HH:mm:ss'function dateFormat (date, pattern) { var week = {'0':'日', ...
- iOS是最安全的?苹果iOS恶意软件数量增速首次超过Android
之前小编还说Android系统似乎已经成为世界各地病毒作者的首选目标,但是近日一份安全研究报告让小编啪啪打脸. Skycure的移动安全报告显示,近三个季度内,在iOS上运行的恶意软件增加了2倍多,而 ...