JPA 学习笔记







eclipse 新建jpa项目 :
修改 persistence.xml 文件


创建 Customer 类:

column 名称和数据库名称对应则不用写


类写好后在 persistence.xml 添加持久化类:

编写main方法:




右键运行 数据库自动创建:数据插入数据库

JPA基本注解:



一般讲注解加到 get方法上面:


如果entity 中有列名没有加注解 就相当于自动加上了 @Basic 注解



entity中不需要映射到数据库表的一列 可以加 @Transient


创建默认 birth,createdTime 数据库生成样式:

birth createdTime 类型是 datatime 类型:

重新设置后:createdTime 精确到时分秒 birth 精确到 日期


业务场景不是很多:



pkColumnName -》 PK_NAME 确定列
pkColumnValue -CUSTOMER_ID 确定第几行
valueColumnName -》确定初始化值
allocationSize-》每次增长多少





Find方法 调用方法直接发sql语句 :

getReference 方法调用不发sql, 用到 查询出结果时候才发出sql 懒加载:

persistence 方法类似save方法 有些许不同:

hibernate delete方法:new customer 不能进行移除 只有查询出来的可以移除


hibernate saveOrUpdate 方法:






如果是hibernate session关联2个数据不能进行saveOrUpdate方法 已经有ID=4的数据 并且数据库有数据 entityManager 关联 customer 1,2 JPA可以进行merge:
类似


----------------------------------------------------------------------------------------------------------------------------------------------------

和hibernate session 中 flush 方法相同。



----------------------------------------------------------------------------------------------------------------------------------------------------------------
关联关系:
----------------------------------------------------------------------------------------------------------------------------------------------------------------

单向多对一:
多个order 对应一个 Customer


保存:



懒加载ManyToOne:fetch lazy

删除:

修改:

单向一对多:



保存:

查询:加载方式也可以修改 Customer 类中 getOrder 方法 @OneToMany fetch 属性修改加载策略

修改:可以级联删除 级联制空


修改:set直接就update了??????????

双向多对一:
上面两种情况同时打开就是双向多对一 也就是双向一对多:
customer

order

保存:



放弃维护关系:Customer类中 设置 mappedBy="customer"

双向一对一:

经理和部门关系:
department:



manager:


保存:

查询:




JPA 学习笔记的更多相关文章
- JPA学习笔记(8)——映射一对多关联关系
一对多关联关系 本文有很多和多对一是一样的,因此不会写得非常具体. 有看不懂的.能够參考JPA学习笔记(7)--映射多对一关联关系 Order实体类 package com.jpa.helloworl ...
- Spring学习---JPA学习笔记
用了一段时间的Spring,到现在也只是处于会用的状态,对于深入一点的东西都不太了解.所以决定开始深入学习Spring. 本文主要记录JPA学习.在学习JPA之前,需要了解一些ORM的概念. ORM概 ...
- spring jpa 学习笔记(一) 之集成
一.pom 配置 <?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apa ...
- JPA学习笔记1——JPA基础
1.JPA简介: Java持久化规范,是从EJB2.x以前的实体Bean(Entity bean)分离出来的,EJB3以后不再有实体bean,而是将实体bean放到JPA中实现.JPA是sun提出的一 ...
- JPA学习笔记
一.JPA基础1.1 JPA基础JPA: java persistence api 支持XML.JDK5.0注解俩种元数据的形式,是SUN公司引入的JPA ORM规范 元数据:对象和表之间的映射关系 ...
- JPA学习笔记(8)——映射双向一对多关联关系
双向一对多关联关系 前面的博客讲的都是单向的,而本问讲的是双向的(双向一对多 = 双向多对一) 什么是双向? 我们来对照一下单向和双向 单向/双向 User实体类中是否有List< Order& ...
- spring data jpa 学习笔记
springboot 集成 springData Jpa 1.在pom.xml添加依赖 <!-- SpringData-Jpa依赖--> <dependency <groupI ...
- Spring JPA学习笔记
目录 什么是JPA? 引入配置 新建一个Entity Bean类 JPA的增删改查 新建操作接口 新建测试类 总结 什么是JPA? 什么是JDBC知道吧?数据库有Mysql,SQL Server,Or ...
- JPA学习笔记(3)——JPA注解
Entity Table Id GeneratedValue Basic Column Transient Temporal @Entity @Entity 标注用于实体类声明语句之前.指出该Java ...
- JPA学习笔记1——JPA基础 (转自CSDN)
http://blog.csdn.net/chjttony/article/details/6086298 1.JPA简介: Java持久化规范,是从EJB2.x以前的实体Bean(Entity be ...
随机推荐
- /etc/nscd.conf - 域名服务缓存守护进程配置文件
描述 DESCRIPTION 该文件 /etc/nscd.conf 在启动 nscd(8) 时读入.每一行或者指定一个属性和值,或者指定一个属性.服务和一个值.域之间通过空格或者TAB分开.‘#’表示 ...
- SQL Server 批量 删除表索引
当旧的数据库中的数据几乎很少使用到的时候,索引又占用着较大的磁盘空间,数据又不能删除,又想节省磁盘空间. 这个时候可以将所有表的索引进行删除了(先创建索引备份脚本,以备需要还原),可以批量一起删除. ...
- 04-A的LU分解
一.矩阵$AB$的逆 $(AB)^{-1}=B^{-1}A^{-1}$,顺序正好相反 二.$A=LU$ 如矩阵: $\left[\begin{array}{ll}{2} & {1} \\ {8 ...
- Linux 开机自动启动脚本
1)编写要执行脚本的sh文件mysetup.sh #!/bin/sh ### BEGIN INIT INFO # Provides: land.sh # Required-start: $local_ ...
- Java并发(基础知识)——显示锁和同步工具类
显示锁 Lock接口是Java ...
- 计蒜客 蓝桥模拟 I. 天上的星星
计算二维前缀和,节省时间.容斥定理. 代码: #include <cstdio> #include <cstdlib> #include <cstring> #in ...
- 32.密码学知识-SSL/TLS-9——2019年12月19日
9. SSL/TLS "SSL/TLS --- 为了更安全的通信" 本章中我们将学习SSL/TLS的相关知识. SSL/TLS是世界上应用最广泛的密码通信方法.比如说,当在网上商城 ...
- [UVa1057] Routing
问题描述 As more and more transactions between companies and people are being carried out electronically ...
- Win10离线安装.NET Framework 3.5的方法补充(附cab格式离线安装包下载) - 转载
MS酋长很早以前已经分享了<Win10离线安装.NET Framework 3.5的方法技巧>,同时分享了exe格式的.NET Framework 3.5离线安装包下载地址.但有部分网友反 ...
- 【leetcode】74. Search a 2D Matrix & 240. Search a 2D Matrix II
题目如下:这两个题目可以用同样的代码来解答,因此就合并在一起了. 题目一: 题目二: 解题思路:两个题目的唯一区别在于第二个题目下一行的最小值不一定会小于前一行的最大值.但是不管怎么样我们可以确定的是 ...