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的学习的更多相关文章

  1. SpringBoot中JPA的学习

    SpringBoot中JPA的学习 准备环境和项目配置 写一下学习JPA的过程,主要是结合之前SpringBoot + Vue的项目和网上的博客学习一下. 首先,需要配置一下maven文件,有这么两个 ...

  2. spring data jpa入门学习

    本文主要介绍下spring data jpa,主要聊聊为何要使用它进行开发以及它的基本使用.本文主要是入门介绍,并在最后会留下完整的demo供读者进行下载,从而了解并且开始使用spring data ...

  3. Spring Data Jpa 入门学习

    本文主要讲解 springData Jpa 入门相关知识, 了解JPA规范与Jpa的实现,搭建springboot+dpringdata jpa环境实现基础增删改操作,适合新手学习,老鸟绕道~ 1. ...

  4. JPA入门学习集合springboot(一)

    1.在pom.xml文件中添加相应依赖 SpringData jpa和数据库MySql <!-- Spring Data JPA 依赖(重要) --> <dependency> ...

  5. SpringData JPA的学习笔记之环境搭建

    一.环境搭建 1.加入jar包   spring jar+jpa jar +springData jar >>SpringData jar包     2.配置applicationCont ...

  6. SpringBoot+Jpa+MySql学习

    上一篇介绍了springboot简单整合mybatis的教程.这一篇是介绍springboot简单整合jpa的教程. 由于jpa的功能强大,后续会继续写关于jpa的介绍已经使用,本文只是简单介绍一下它 ...

  7. eclipse中JPA插件的安装与使用

    说明 上周实验室学习了数据库设计相关的内容,其中涉及到将数据库实体化的问题,JPA是一个很好的实现工具,便开始着手于JPA的学习.因为JPA涉及到的知识还是挺多的,需要学习许多新的知识,所以对于JPA ...

  8. JPA、SpringData JPA 、Hibernate和Mybatis 的区别和联系

    一.JPA 概述 1. Java Persistence API(Java 持久层 API):用于对象持久化的 API 2. 作用:使得应用程序以统一的方式访问持久层 3. 前言中提到了 Hibern ...

  9. SpingData 的学习

    Spring Data : Spring 的一个子项目,类似于Sping MVC 一样是Spring的另一个模块,所以还需要下载其jar ,它需要的jar有: spring-data-jpa-1.11 ...

随机推荐

  1. peoplesoft function PSTREENODE 通过 deptid 获得部门树 一级部门 code

    create or replace function ht_gettopdeptid(deptid in varchar) return varchar2 is r ); c int; m ); r_ ...

  2. [图形学] 结束 [Unity Shader] 开始

    历时4个月,终于把<计算机图形学 with OpenGL>啃完了.如果边上班边看,即使一年应该都看不完. 虽然书里用到的GLUT库应该已经废弃,但并不影响用它去理解图形学的内容,我只把它当 ...

  3. IntelliJ IDEA 调试(debug)时非常慢的原因

    IntelliJ  IDEA 开发时,发现有时Debug时tomcat启动的非常慢,需要等待超过20分钟,但有时就很快,经查找发现是断点设置问题, 若断点设置在方法名上,debug时就会非常慢, 如图 ...

  4. POJ 2342 Anniversary party / HDU 1520 Anniversary party / URAL 1039 Anniversary party(树型动态规划)

    POJ 2342 Anniversary party / HDU 1520 Anniversary party / URAL 1039 Anniversary party(树型动态规划) Descri ...

  5. JavaScript中判断鼠标按键(event.button)

    <div id="test"></div> <script> document.oncontextmenu=function(){ return ...

  6. 事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流

    一.事件冒泡定义 事件冒泡是指在一个对象触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那 ...

  7. tensorflow Relu激活函数

    1.Relu激活函数 Relu激活函数(The Rectified Linear Unit)表达式为:f(x)=max(0,x). 2.tensorflow实现 #!/usr/bin/env pyth ...

  8. python函数(1):初始函数

    在学了前面很多python的基础类型后,我们终于可以进入下一阶段,今天我们将走进一个函数的新世界. 预习: 1.写函数,计算传入字符串中[数字].[字母].[空格] 以及 [其他]的个数 2.写函数, ...

  9. 快速搞定selenium grid分布式

    写这篇文章,似乎有点重复造轮子的嫌疑.当看了几篇相关文章后,我还是决定把半年前的半成品给完成了. 以传统的方式部署分布式Selenium Grid集群需要耗费大量时间和机器成本来准备测试环境. Sna ...

  10. 【jquery】获取元素高度

    1. $("#div_id").height(); // 获得的是该div本身的高度, (不包含padding,margin,border)2. $("#div_id&q ...