传智播客-jpa与hibernate(1)-实体和主键生成

传智播客-web service(7)-序列化反序列化、文件上传下载 序列化反序列化WS中的序列化反序列化是指java对象xml之间的相互转换,意即如果传输的数据是java对象,例如基本数据类型的包装类,自定义的义务类、集合等,客户端服务端需要显示注册序列化器反序列化器。而利用axis开发的WS应用,是以“映射”的方式来体现这一点的,所以像axis这样的引擎也被称为OXM--Object XML Mapping。 服务端,如果程序运行时报错“faul 阅读详情

jpa全称是Java Persistence API,是sun公司出台的面向数据持久化层的规范,即面向接口编程,以达到“平台”无关性(这个“平台”是指jpa产品,例如hibernate,toplink,openjpa等)。hibernate是符合jpa规范的产品之一。

 

说到数据持久化,先说一下以下几点:
1、对于数据持久化的思想而言,内存只是一个交换数据的地方,这意味着如果断电或者进程被杀,数据就会丢失。
2、为了防止数据丢失,所以需要将数据保存到外层(硬盘,U盘或其他存储设备等)。
3、能够实现数据持久化保存的技术就称之为数据持久化。除了jpa,还有jdbc、io等都是。
4、应用系统里的数据持久化层是从业务逻辑层分离出来的。

 

关于实体:
1、在jpa规范里,被托管的对象都是实体,但是是用实体名来区分实体的,如果没有显示声明,默认的实体名即不包含全路径的类名,所以如果不同包下有相同类名,应该显示声明实体名予以区分,例如@Entity(name="XXX")。
2、在jpa规范出来前,hibernate等数据持久化层技术产品早已大行其道,鱼龙混杂,jpa的出现可以说对这个市场进行了规范。hibernate在jpa出来前是用配置文件注册托管实体的(还有一些辅助工具帮助实现实体和表模式的相互转换,可以参见《深入浅出Hibernate》),但是jpa只支持注解方式(jpa支持配置文件方式,只是很少有人这么用,就当它没有吧。。。)。所以hibernate有两种方式注册托管实体:xml配置文件和注解。
3、如果用的jpa产品是hibernate,则在persistence.xml配置文件中不用注册实体类名也能被hibernate识别,因为hibernate有扫描机制,但是其它jpa产品不一定有,所以为了提高程序的可移植性,还是在文件中加上比较好,而且这样写也比较规范。

 

再说访问方式:
前文说过,hibernate支持两种访问方式,属性访问和方法访问。而且hibernate里方法访问优先级高于属性访问。如果两种访问方式同时设置,则属性访问无效。这意味着,你可以同时设立两种访问方式,而hibernate自有决断。但是jpa只允许定义一种访问方式。此外,hibernate访问级别的粒度比较细,可以在同一个实体里对不同字段(你可以理解为同一个类里的不同属性)设定不同访问级别。jpa则是一刀切的做法,通过@id/@EmbeddedId的注解位置,即由主键来决定当前实体所有字段的访问方式。

 

根据jpa规范,每个实体必须有ID映射到主键:
1、简单类型
  @id注解实体中的单个字段/属性
  @GeneratedValue可以采用4种策略自动生成值SEQUENCE|TABLE|IDENTITY|AUTO
关于table主键生成策略,有些类似hibernate的hilo方式。不同的数据库主键生成策略不一定一致,但所有的数据库都支持表策略,支持更新操作,所以用table策略的话相对而言可以提高可移植性,尤其测试跨数据库系统时table策略很好使。

NOTE:hibernate3.2.0的时候还不支持jpa的sequence生成策略的initialValue和allocationSize两个参数
2、可以是用户定义的类,但是必须定义在等级实体树的根上/超类上,而且必须实现serializable接口以及实现equals()/hashcode()方法。
  @EmbeddedId注解实体中的单个字段/属性
  @IdClass注解实现多个id字段的组合

而hibernate里的简单类型的单个主键 @GeneratedValue的生成策略有INCREMENT|IDENTITY|SEQUENCE|NATIVE|HILO|UUID(32)|ASSIGN(这些注释/元素的属性的具体含义可以参见相关文档)7种方式,前面6个适用于代理主键,assign适用于单个自然主键(指将具有业务含义的字段设置为主键),也可以用和id元素同级的元素<componsite-id>定义多个业务字段合成的自然主键;注解的话则有三种方式:@Id和@Embeddedable/@EmbeddedId/@IdClass。
示例:
(1)@Id和@Embeddedable

(2)@EmbeddedId

(3)@IdClass

传智播客-一个服务端多个客户端间的通信的简单实现 这个内容是蹭了传智博客java基础班某天的课程学来的,徐文海老师讲的。先在这表示下感谢~关于java基础班的内容可以下载传智播客的视频,或者上传智播客的免费网络公开课程http://www.itcast.cn/itcast_static/javajz2.htm,或者亲自来传智播客聆听:) 1、先简单介绍一下socket: Socket就是网络驱动层提供给应用程序编程的接口一种机制。 通信 阅读详情

相关推荐

LightRAG实战:5分钟快速搭建一个轻量级法律问答系统(附完整代码)

本文通过实战指南,详细介绍了如何使用LightRAG技术快速搭建一个轻量级法律问答系统。该方案通过构建扁平化实体关系网络混合检索策略,在5分钟内即可完成从环境准备到智能问答的完整流程,并附有完整代码,为中小团队个人开发者提供了高效、低成本的AI应用解决方案。

time3的博客 253

JPA基本属性注解

JPA注解1、@Entitypackage javax.persistence;@Target(TYPE) @Retention(RUNTIME)public @interface Entity{    String name( ) default "";}name( )属性指定实体bean的名称,如果没有为该属性提供取值,默认值为 bean class 的非限

哇哈哈 3万+

翁恺-C语言程序设计 PTA习题集

代码练习题

qq_46085472的博客 6787

持久化API(JPA)系列()实体关系映射(ORM)之单表映射@EmbeddedId

本文将介绍《联合主键:使用@EmbeddedId嵌入外部主键

chestnut 2003

通过JPA注解映射视图的实体jpa 视图 无主键 @Query注解的用法(Spring Data JPA) jpa 使用sql语句...

参考: https://blog.csdn.net/qq465235530/article/details/68064074 https://www.cnblogs.com/zj0208/p/6008627.html   这里主要说一下怎么用jpa映射一个视图的实体类,其实跟表映射一样,就是需要添加一个空的主键id标识   package com.cf.bus.core.rs.template.d...

weixin_34008805的博客 2586

JPA复合主键问题

@EmbeddedId应用于实体类或映射超类的持久字段或属性,以表示可嵌入类的组合主键。可嵌入的类必须标注为@Embeddable,并实现序列化接口Serializable。   在实体类中,只能有一个@EmbeddedId注解,并且不能@Id注解同时存在。   @MapsId注解可以@Embedded I的注解一起使用,用来指定派生的主键,不支持在嵌入式类中定义关系映射。 ...

Cainiao111112的博客 611

传智播客--JPA的CRUD操作,映射实体

没有学习之前就听说过 JPA ,开始想自学来着.不知道为什么总是感觉这个技术很难.所以都没有尝试过.今天通过老师的讲解,很快就上手了.呵呵,好多问题其实没有自己想象的那样难.这个人真的是感觉有点意思. JPA 的为了使项目中持久层的 ORM 项目解耦而出现的技术.无论项目的持久层由什么 ORM 来实现都对项目上层调用的代码没有影响.这里我们用 hibernate 来是 JPA 的实现

图画hadoop 1332

JPA,ORM,立即,延迟加载等知识的解释(1

1.传统的使用jdbc操作数据库的方法: 其中ORM思想: 目的:操作实体类就相当于操作数据库表,不再重点关注:sql语句 建立两个映射关系:1.实体表的映射关系。 2.实体类中的属性表中字段的映射关系。 实现了ORM思想的框架:mybatis,hibernate. JPA规范: JPA的全称是Java Persistence API, 即Java 持久化API,是SU...

weixin_42030357的博客 761

专辑:JPA详解视频教程

简介:JPA用于整合现有的ORM技术,可以简化现有Java EEJava SE应用的对象持久化的开发工作,实现ORM的统一。JPA作为一项对象持久化的标准,不但可以获得Java EE应用服务器的支持,还可以直接在Java SE中使用。JPA必将成为Java持久化解决方案的主流,如果你是...

171

ORM思想 JDBC规范 hibernate Jpa规范 Spring Data Jpa

本篇文章为黑马程序员传智播客的记录,方便自己复习 简单介绍: ORM思想: Object Relationship Mapping -----对象关系映射 目的:操作POJO(实体类)等价于操作数据库的表 ①POJO类表的映射关系 ②POJO类中属性表中字段的映射关系 JDBC: 只需要修改一下连接接口的规则其他的少量的地方即可使用多个数据库 hibernate: 一个开源的对象关系映射框架,他对JDBC进行了非常轻量级的对象封装,他将POJO(实体)数据库的表建立映射关系,是一个全自动的OR

BOWWOB的博客 330

传智播客_jpa详解视频教程

【观看须知:】本视频教程为传智播客JPA详解视频教程,教程采用的AVI方式发布,所以看起来很流畅,大家可以通过包中附带的CamPlay.exe(拖入即可)观看学习。【友情提示:】JPA用于整合现有的ORM技术,可以简化现有Java EEJava SE应用的对象持久化的开发工作,实现ORM的统一。JPA作为一项对象持久化的标准,不但可以获得Java EE应用服务器的支持,还...

weixin_33738578的博客 285

传智播客学习之JPA

今天是上课的第一天,由徐老师给我们上JPA的课,新年过后,这是一个惊喜,因为又是徐老师带我们的课程,大家都十分喜欢徐老师,因为自从听完Hibernate后,“徐侠客”这三个字已经深深扎在我们班的每个同学心里了。今天也大家分享一下JPA相关知识,虽然JPA在国内还不是很火,但是在国外,JPA的使用还是十分多的,而且JPA在未来还是很有发展前景的。一、JPA概述JPA(Java Pe

qinli_2009的专栏 655

Spring Data JPAJPAhibernate之间的关系(2)

Spring Data JPA 是 Spring 基于 ORM 框架、JPA 规范的基础上封装的一套JPA应用框架,可使开发者用极简的代码即可实现对数据库的访问操作。它提供了包括增删改查等在内的常用功能 关系: JPA是一套规范,内部是有接口抽象类组成的。hibernate是一套成熟的ORM框架,而且Hibernate实现了JPA规范,所以也可以称hibernateJPA的一种实现方式,我们...

weixin_42030357的博客 253

Spring Data JPA

一、JPA概述及基本操作 1、ORM思想 ORM(Object-Relational Mapping) 表示对象关系映射。 目的:通过操作实体类就可以对数据库表进行操作 建立两个映射: 实体表的映射 实体类属性表中字段的映射 实现ORM思想的框架:Hibernate、mybatis 2、JPA的介绍 Hibernate封装jdbc,是一个orm关系对象映射框架,可以自动生成sq...

USTSD的博客 108

jpa入门

1.表对应的实体类 @Entity //声明实体类 @Table(name = "cst_customer") //实体表建立映射关系 public class Customer { @Id //主键 @GeneratedValue(strategy = GenerationType.IDENTITY)//主键自增 @Column(name =...

weixin_33701294的博客 79

传智播客-web service(4)-利用jdk6开发WS应用

java开发web service最简单的方式是用jdk6自带的支持web service的注解功能。 1、编写代码如下:@WebService(serviceName="HelloWorldService", targetNamespace="www.itcast.cn")public class HelloWorldService { @WebMethod public String

那一抹云 5128

传智播客-web service(6)-即时发布定制发布、wsdl文档java对象

即时发布定制发布Axis开发WS应用有两种发布方案:即时发布定制发布。1、即时发布:开发这类服务时,只用编写源码,不用编译。源码一般放在项目的根目录下,扩展名改为jws即可。访问时通过完整路径(包括jws扩展名)直接访问该文件。访问时容器会对该服务类源码进行实时编译,编译后的文件放在生成的/WEB-INF/jwsClass目录下。 需要注意的是,即时发布的服务类不能有包名。为什么呢?因

那一抹云 2480

传智播客-总结

常言道,师傅领进门,修行在个人。很多人都会强调后面那句,往往忽略了必要的前提,如果那个师傅是个庸人,只是把徒弟带到门边,而根本没有领进门,又或者那个师傅是个自以为是或别有用心之人,把徒弟领进了一个完全错误的门呢?估计那个徒弟再努力也只是离正途渐行渐远而已。做为一个曾被人只是领到门边(客观的说,这人本身还是很有实力的,只是教的东西确实有限),然后又被某个至少有5年java开发经验的“年轻技术专家”完

那一抹云 2461

传智播客-web service(2)-ESB、SOAPWSDL

ESBESB,Enterprise Service Bus,企业服务总线。这个概念哪来的呢?得先从web service讲起,话说。。。(balabala~~~) web service,可以认为是“跨平台(OS)、跨语言(java、C等)系统间的一种整合方案,以实现各系统间的协同作业”。举例来说,某个公司由小发展到大,可能有很多部门,有很多系统,但系统开发语言并不一致(可能有自己开发的,

那一抹云 2352

传智播客-邮件开发(1)-关于电子邮件的一些基本常识

通常邮件开发主要包括两方面内容:发送接收邮件;创建解析邮件内容。不过在介绍如何简单开发一个邮件应用前先介绍一下关于电子邮件的一些基本常识,包括以下五点:邮件传输协议;邮件服务器;电子邮箱;邮件客户端软件;电子邮件的传输过程。 邮件传输协议SMTP协议:全称为Simple Mail Transfer Protocol(简单邮件传输协议),定义了邮件客户端软件SMTP服务器之间、以及两台

那一抹云 2336

B/S模式asp+sql图书管理系统

B/S模式 asp sql 2000图书管理系统,sql 2000安装时登录模式一定要选混合模式,否则连接不上数据库

上一篇: 传智播客-hibernate(2)-实体关系与基本的性能优化
下一篇: 传智播客-jpa与hibernate(2)-CRUD和关联关系
fjf133
博客等级 码龄18年 19粉丝 56原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值