JPA 注解--源自技术

(一)EJB.JPA jpa概述 百度百科中定义JPA,JPA全称Java Persistence API。JPA通过JDK5.0注解或XML描述对象-关系表映射关系,并将运行期的实体对象持久化到数据库中。 关于JPA概述如下图所示。 从数据持久化说起,系统中产生的数据首先是放在内存中的,怎样让这些有意义的数据在断电或者重启服务器的时候不会丢失,就需要把数据想法设法存在硬盘中,或者说存放在RAM(只读存储器)中 阅读详情
 /*
  * 主键生成策略 
  *  不显示约定:主键值由程序控制。
  * AUTO:JPA自动选择合适的策略,是默认选项;
  * TABLE:通过表产生主键,框架借助由表模拟序列产生主键,使用该策略可以使应用更易于数据库移植;
  *       不同的JPA实现商生成的表名是不同的,如OpenJPA生成openjpa_sequence_table表,
  *    Hibernate生成一个hibernate_sequences表,而TopLink则生成sequence表;
  *       这些表都具有一个序列名和对应值两个字段,如SEQ_NAME和SEQ_COUNT;可以使用以下方式指定表
  *    @TableGenerator(name = "test111", table = "IDTABLE",pkColumnName = "KEYID", valueColumnName = "KEYVALUE", pkColumnValue = "TestUSER_ID")
     *       @GeneratedValue(strategy=GenerationType.TABLE, generator="test111") 
  * IDENTITY:JPA 容器将使用数据库的自增长字段为新增加的实体对象赋唯一值。这种情况下需要数据库提供对自增长字段的支持,SQL Server、MySQL、DB2、Derby等支持,Oracle不支持。
  * SEQUENCE:表示使用数据库的序列号为新增加的实体对象赋唯一值。这种情况下需要数据库提供对序列号的支持常用的数据库中,Oracle支持。
  */
 
 /*
  * @Column:字段属性
  *  columnDefinition
  * 默认值:空 String 。
  * 默认情况下,JPA 使用最少量 SQL 创建一个数据库表列。
  * 如果需要使用更多指定选项创建的列,请将 columnDefinition 设置为在针对列生成DDL 时希望 JPA 使用的 SQL 片断。
  * 注意:捕获批注中的 DDL 信息时,某些 JPA 持续性提供程序可以在生成数据库模式时使用此 DDL 。例如,请参阅“ 用于 Java2DB 模式生成的 TopLink JPA 扩展” 。
  * insertable
  * 默认值: true 。
  * 默认情况下,JPA 持续性提供程序假设所有列始终包含在 SQL INSERT 语句中。
  * 如果该列不应包含在这些语句中,请将 insertable 设置为 false 。
  * length
  * 默认值: 255
  * 默认情况下,JPA 持续性提供程序假设所有列在用于保存 String 值时的最大长度为 255个字符。
  * 如果该列不适合于您的应用程序或数据库,请将 length 设置为适合于您的数据库列的int 值。
  * name
  * 默认值:JPA 持续性提供程序假设实体的每个持久字段都存储在其名称与持久字段或属性的名称相匹配的数据库表列中。
  * 要指定其他列名,请将 name 设置为所需的 String 列名。
  * nullable
  * 默认值: true 。
  * 默认情况下,JPA 持续性提供程序假设允许所有列包含空值。
  * 如果不允许该列包含空值,请将 nullable 设置为 false 。
  * precision
  * 默认值: 0.
  * 默认情况下,JPA 持续性提供程序假设所有列在用于保存十进制(精确数字)值时的精度为 0 。
  * 如果该精度不适合于您的应用程序或数据库,请将 precision 设置为相应的 int 精度。
  * scale
  * 默认值: 0.
  * 默认情况下,JPA 持续性提供程序假设所有列在用于保存十进制(精确数字)值时的伸缩度为 0 。
  * 如果该伸缩度不适合于您的应用程序或数据库,请将 scale 设置为相应的 int 精度。
  * table
  * 默认值:JPA 持续性提供程序假设实体的所有持久字段都存储到一个其名称为实体名称的数据库表中(请参阅 @Table )。
  * 如果该列与辅助表关联(请参阅 @SecondaryTable ),请将 name 设置为相应辅助表名称的 String 名称,如示例 1-8 所示。
  * unique
  * 默认值: false 。
  * 默认情况下,JPA 持续性提供程序假设允许所有列包含重复值。
  * 如果不允许该列包含重复值,请将 unique 设置为 true 。设置为 true 时,这相当于在表级别使用 @UniqueConstraint 。
  * updatable
  * 默认值: true 。
  * 默认情况下,JPA 持续性提供程序假设列始终包含在 SQL UPDATE 语句中。
  * 如果该列不应包含在这些语句中,请将 updatable 设置为 false 。
  * 
  */
 
 /*
  * @Transient
  * 用这个注解修饰的字段不进行数据持久化
  */
 
 /*
  * JPA对象关联
  * @OneToOne:一对一,在数据表中生成一列来维护数据
  * @OneToMany:一对多,生成一张中间表来管理关联关系,
  * @ManyToOne:一对多,可以不用注解修饰直接把Many端的bean做为集合属性放到One的bean中,默认在One的数据表中产生一列来维护关系。
  * @ManyToMany:多对多,生成一个中间表来管理关联关系
  *
  * mappedBy:只有在双向关联时,才会使用这个属性.指定关系维护规则,值为customer表示拥有mappedBy的bean是关系的管理者,
  *        被管理的表中生成到关联类的外键,mappedBy也可以指向关系被维护端对应的字段属性
  * optional:设置关系维护端的外键是否可以为空,true可以为空,false不能为空;
  * 
  * 级联规则
  *  CascadeType.REFRESH:当One端被refresh调用时候触发到Many端;
  *  CascadeType.PERSIST:当One端被persist调用时候触发到Many端;
  * CascadeType.MERGE:当One端被merge调用时候触发到Many端;
  * CascadeType.REMOVE:当One端被remove调用时候触发到Many端;
  * CascadeType.ALL:包含上面所有的级联关系;
  * 加载类型
  * FetchType.EAGER:立即加载;
  * FetchType.LAZY:延迟加载;
  */
 
 /* 
  *  @PrimaryKeyJoinColumn:
  *  主键关联:通过两个表中的主键来关联。
  *  关系被维护端id需要采用下面的形式:如果不采用这种形式无法保证两个关联实体的id一致。
  *  @Id
  *  @GeneratedValue(generator = "fk")
  *  @GenericGenerator(strategy = "foreign", name = "fk", parameters = @Parameter(name = "property", value = "关系维护端在被维护端Bean中的属性名称"))
  *  
  */
 
 /*
  *  @JoinTable(name="关联表名称",  inverseJoinColumns=@JoinColumn(name ="被维护端外键"),
  *   joinColumns=@JoinColumn(name ="维护端外键"))
  */
 
 /*
  *  JPA 实体对象四种状态
  * 新建状态
  * 新建对象,通过persist方法(hibernate原先是save方法)保存到数据库;
  * 
  *  托管状态
  * 从数据库find出来的对象,通过set改变对象属性会同步回数据库;
  * 如果已经find出来的对象,被容器托管着,再次调用find方法是不会查数据库的,可以通过refresh方法去查询;
  * 
  * 游离状态
  * 从数据库find出来的对象,中间被EntityManager的clear方法清理后,此时变成游离状态;
  * 对游离状态的set改变属性是不会同步至数据库的;
  * 可以通过merge方法来将游离状态对象更新回数据库;
  * 
  * 删除状态
  * 托管状态的对象,调用remove方法删除数据库记录;
  *
  */
4、Java Persistence API(JPA)入门指南 本博客详细介绍了 Java Persistence API(JPA)的基础知识及其使用方法,包括 JPA 的发展历程、核心特性、实体的概念与操作、元数据配置方式,以及在实际开发中的应用场景。通过示例代码和流程图,帮助开发者快速掌握 JPA 的基本操作,如实体的创建、读取、更新和删除,并介绍了实体管理器和查询操作的使用方法。适合初学者和希望深入了解 JPA 的开发者阅读。 阅读详情

相关推荐

利用PLECS实现Boost变换器的闭环控制仿真与优化

本文详细介绍了如何利用PLECS仿真软件实现Boost变换器的闭环控制与优化。从基础原理到开环系统搭建,再到闭环控制设计与动态优化,提供了完整的仿真实践指南。通过PLECS的仿真功能,工程师可以有效诊断问题、优化参数,并实现高性能的DC-DC变换器设计。

weixin_42527401的博客 325

JPA----@Transient----04

@Transient注解 1. 表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性. 2. 如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic 即如果在实体类里面定义的如下get开头的方法,而它又不是需要映射到数据表的属性,就必须添加@Transient 注解,否则默认添加@Basic注解,在创建数据表是会...

lsh15846393847的博客 261

深入解析CycloneDDS跨域通信中的XML配置文件优化策略

本文深入解析了CycloneDDS跨域通信中XML配置文件的优化策略,重点介绍了网络接口配置、多播设置、性能调优参数及复杂场景下的配置案例。通过实战技巧和调试方法,帮助开发者在SoC环境中实现高效稳定的跨域通信,提升系统性能。

soda5的博客 689

JPA之@Transient

之前一直使用mybatis做数据持久化,今天使用jpa,关于mybatis与jpa的优缺点可以自行搜索。 java 的transient关键字的作用是需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。 public class OrderMaster { /*...

m0_37732829的博客 573

双翌视觉系统配合机械手大视野定位案例(单目标带角度抓取)

一、定位原理概述 1.系统构架 视觉定位系统采用正向打光方式,光源在机械手上方,CCD从上往下拍摄,进行图像分析定位。相机将计算出的像素坐标转换为机械手的物理坐标,视觉软件与机械手进行网口通讯,将视野内物料的物理坐标发送给机械手,机械手抓取物料放在指定工位。 2.相机标定概述 系统采用宫格标定确定像素坐标和物理坐标一一对应关系,同时利用3点或者多点旋转标定求出旋转中心 系统采用宫格标定,自定义行列数和间距及旋转角度,通过机械手发送的当...

weixin_51554164的博客 2173

微信小程序 | 小程序开发

事实上,目前小程序在我们生活中已经随处可见(特别是这次疫情的推动,不管是什么岗位、什么年龄阶段的人,到哪都需要打开健康码)WePY是由腾讯开源的,一款让小程序支持组件化开发的框架,通过预编译的手段让开发者可以选择自己喜欢的开发风格去开发小程序。Mpvue是一个使用Vue开发小程序的前端框架,也是 支持 微信小程序、百度智能小程序,头条小程序 和 支付宝小程序;微信小程序、支付宝小程序、淘宝小程序、抖音小程序、头条小程序、QQ小程序、美团小程序等。,其他平台的小程序往往是平台本身的一些公司或者顺手开发的。

CoderHing的博客~ 1万+

实体类参数自动赋值

实体类参数自动赋值前言代码 前言 日常开发我们会遇到一个问题,在返回实体类时,时间格式是Date类型,但是接口开发时前端往往需要的是String类型,这时候如果使用相对原生的方式可以在服务层进行转换,加上使用@Transient注解去绑定一些不与数据库绑定的属性去携带参数,但是在使用JPA自带的分页,或者一些结果集封装的形式进行传参时,就无法进行数据转换赋值,这时候就可以通过改变属性的get方法去...

weixin_44167913的博客 3690

Spring Boot入门(02):【教程】轻松搭建Spring Boot开发环境,启动你的第一个Web项目!

快速搭建开发环境和启动项目是每个开发人员必备的技能。本文将为您提供一些简单易懂的方法和技巧,以帮助您快速搭建开发环境和启动项目。我们将介绍如何选择适合您的开发工具、配置您的操作系统、安装必要的软件包和依赖项,并开始编写您的第一个应用程序。无论您是一位新手还是一位经验丰富的开发人员,本文都会给您提供有用的信息和实用的建议,让您在最短时间内快速搭建和启动开发项目。

**My Coding Family** 22万+

(2)JPA - 基础注解

1 @Entity 我们运行代码: 自动创建数据表customer 2 @Table 当我们的实体类和想要创建的数据库表不同的时候,我们可以使用@Table 创建我们的指定的数据库表名。 创建的数据库表名为JAP_CUSTOMERS 3 @Id @id: 标记之后 为数据库的主键列。 4 @GeneratedValue 在MYSQL中,默认的话就是自增。 5 @Basic ...

魚 317

智能车图像处理0-图像处理整体框架思路

1.总体框架如上所示,具体代码请查看后续文章。2.因为参与竞赛时间是大二,所以在编程中有许多不规范的地方(如变量的命名),大家见谅。3.原创文章,请勿侵权=-=

taiyuezyh的博客 1万+

2024年全国青少年信息素养大赛复赛真题(算法创意实践挑战赛C++试卷:带解析)

2024年全国青少年信息素养大赛复赛真题(算法创意实践挑战赛C++试卷:带解析)

王老师青少年编程 4788

JPA @Id 和 @GeneratedValue 注解详解

@Id: @Id 标注用于声明一个实体类的属性映射为数据库的主键列。该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。 @Id标注也可置于属性的getter方法之前。@GeneratedValue: @GeneratedValue 用于标注主键的生成策略,通过strategy 属性指定。默认情况下,JPA 自动选择一个最适合底层数据库的主键生成策略:SqlServer对应iden...

coding1994的博客 10万+

Cadence画PCB的傻瓜式教程

1.原理图1)建立元件库2)建立原理图3)在原理图中画好电路图4)利用MENTOR-GRAPHICS-IPC-7351-LP-VIEWER查看元件的封装信息,用pad designer画焊盘,用pcb editor画元件的封装(对照LP_VIEWER),(也可以使用package wizard)5)在原理图中为元件添加封装信息(键入)6)Drc检查7)生成网表2.Pcb1)设置...

tianpu2320959696的博客 1万+

JPA和Spring-Data-JPA简介

原味源自:https://blog.youkuaiyun.com/benjaminlee1/article/details/53087351 什么是JPA JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合ORM技术 ORM:通过使用描述...

bobozai86的博客 371

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

SpringBoot入门,JPA简单使用

1.JPA简介 JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中(源自百度百科)。 2.JPA能做什么 基于注解的形式,根据java中的实体类生成数据库表。 3.代码示例 (1)首先在pom文件中添加jap依赖 <dependency> ...

Takano的博客 536

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

JPA配置sqlserver数据源模式下出现:"***" 附近出现语法错误。

由于最近要将JPA的数据源使用sqlserver。在成功配置完成之后,在service层调用底层的Dao层接口实现时候,出现错误: “10”附近出现语法错误。出错肯定是在sqlserver数据查询sql语句有问题,且是语法错误。 解决思路: A:由于JPA框架将底层Dao的数据库操作语句都封装了。在通常情况下是看不到sql语句的。所...

iteye_10291的博客 751

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

ORM框架Java持久化层使用手册(mybatis,mybatisplus,jpa等)

框架/技术类型优点缺点适用场景ORM(标准封装)开发效率极高、标准化、面向对象复杂SQL处理稍弱,黑盒性较强标准CRUD应用、快速开发、微服务HibernateORM(实现)功能全面、强大、社区成熟配置复杂、学习曲线较陡复杂对象关系映射、企业级应用MyBatis半自动化ORMSQL灵活可控、性能优化方便需手动编写SQL、工作量大复杂查询、报表系统、遗留数据库MyBatis增强兼具MyBatis灵活和JPA便捷是MyBatis的扩展,非标准希望平衡灵活性和效率的项目轻量级工具。

m0_46938055的博客 705

Query整合JPA使用update/delete没想到还需要这样,不然会报错?

QueryDLS整合JPA使用update/delete报错javax.persistence.TransactionRequiredException 在跟室友做springboot项目练手的时候,想尝试一下使用QueryDLS整合JPA体验一下QueryDLS,没想到不久就遇到了一个小问题,使用delete方法的时给我报错了,错误如下: 报错源码: @Override public boolean cancelOrder(String orderNumber) { Q

aspire_light的博客 1272

【追根究底】@Lazy注解为什么会失效?

==> 学习汇总(持续更新) ==> 从零搭建后端基础设施系列(一)-- 背景介绍 @Lazy注解为什么会失效?它并没有失效,一直都是生效着的,之所以认为它失效了,是没有用对它,没有理解它! 我想让B最后再实例化,因为实例化的时候,会为B创建代理,并且加入增强器。但是有些情况,实例化其它类的时候,某个增强器还未生成,这时候其它类又使用到了B,导致B在增强器之前实例化了,最后B就加入不...

_ACME_的博客 6274

【Spring】Spring高级话题-@Enable***注解的工作原理

转载请注明出处:http://blog.youkuaiyun.com/qq_26525215 本文源自【大学之旅_谙忆的博客】 @EnableAspectJAutoProxy @EnableAspectJAutoProxy注解 激活Aspect自动代理 aop:aspectj-autoproxy/> 开启对AspectJ自动代理的支持。 在用到AOP的自动代理的时候用,如果你理解了Java的

谙忆-陈浩翔 2万+

利用 Java 注解魔法:简化代码,实现强大功能

想象一个普通开发场景:你需要验证用户提交的复杂表单数据。传统方式中,你可能会在控制器中编写冗长的 if 语句序列,检查每个字段是否为空、长度是否合规、格式是否匹配。但若使用注解魔法,你的代码可能简洁如诗:

duolapig的博客 855

@Transient注解

@Transient注解 java注解:http://tool.oschina.net/apidocs/apidoc?api=javaEE6 javax.persistence  Annotation Type Transient @Target(value={METHOD,FIELD}) @Retention(value=RUNTIME) public @interf

看不过的黑工坊 6087

@Data与@Entity区别

注解是为了减少Java类中的样板代码,以简化开发,并没有提供任何与数据库操作相关的功能。可以提供基础的数据操作方法(如getter/setter),而。注解是为了定义实体类与数据库表的映射关系,用于持久化操作。在实际应用中,一个类可以同时使用这两个注解。则表明该类及其对象需要与数据库交互。在Spring Boot中,

tina0423的博客 1517

使用xml配置文件的方式整合SSH框架(源自传智播客课程笔记)

struts2需要导入j的ar包 struts与spring整合需要jar包 如果需要使用struts2提供的json处理 注意:如果使用注解方案,还需要一个jar包 hibernate需要的jar包 如果使用关于jpa相关操作需要导入jpa依赖jar包 c3p0连接池 还需要静态日志处理 ...

略 290

spring data jpa 简单使用

通过解析方法名创建查询 通过前面的例子,读者基本上对解析方法名创建查询的方式有了一个大致的了解,这也是 Spring Data JPA 吸引开发者的一个很重要的因素。该功能其实并非 Spring Data JPA 首创,而是源自一个开源的 JPA 框架 Hades,该框架的作者 Oliver Gierke 本身又是 Spring Data JPA 项目的 Leader,所以把 Hades 的优势...

weixin_34419321的博客 77

RISC-V裸机启动:复位向量、M模式初始化与链接脚本契约

RISC-V裸机启动并非简单跳转到main函数,而是一套硬件、固件与软件共同遵守的底层交互协议。其核心在于复位向量(Reset Vector)的物理地址绑定、机器模式(M-Mode)下CSR寄存器(如mstatus、mtvec、mepc)的精确初始化,以及链接脚本对内存布局的刚性约束。这些环节直接决定中断能否触发、外设能否访问、代码能否可靠执行。理解RISC-V启动流程,本质是掌握从CPU上电瞬间到C运行环境建立全过程的技术契约,适用于嵌入式开发、SoC移植、Bootloader编写及RISC-V教学实践。

weixin_34293059的博客 352
上一篇: JDBC事务控制管理
下一篇: Maven与Eclipse集成安装--源自技术
MyJava_Dx
博客等级 码龄11年 1粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值