传智播客——JPA

首先,JPA不是ORM框架,而是SUN官方提出的JAVA持久化规范。JPA整合了现有的Hibernate、TopLink等ORM框架,具有易于使用、伸缩性强等优点。下面我们就来学习关于JPA的知识。
1. JPA规范要求在类路径的META-INF目录下放置persistence.xml,文件的名称是固定的,配置模版可见hibernate-entitymanager开发包
2. JPA ORM映射元素数据有XML和注解两种方式,这里我们学习基于注解的方式,那么我们来谈谈JPA有哪些常用的注解
1) 在实体bean中用注解@Entity来指定实体以让jpa知道生成数据库中的表
2) 在实体bean中用注解@Column(length,nullable,name)指定数据库中的表的字段的长度,是否为空即字段的名字
3) 在实体类的前面用注解@Table(name="xx")指定生成表的名字
4) 在实体类中用注解@Temporal(TemporalType.Date)指定生日的时间类型
5) @Enumerated(EmumType.STRING//保存到数据库中是索引还是字符串)注解指定枚举类型
6) @Lob声明属性对应的数据库字段为大文本类型,可以存放大的数据(文本和字节)
7) @Transient不成为持久化字段及不跟数据库中的字段形成映射
8) @Basic(fetch=FetchType.LAZY)//是否把数据装载到内存中延迟初始化,第一次访问的时候在加载数据,一般用在大数据存放
9) @Embeddable指定联合组键
3. JPA的增删改查:
1) 读取数据不要开启事务,只要有更改数据的动作才需要开启事务
2) 增加数据:em.persist(new Person("老黎"));//插入
3) 删除数据:em.remove(person); //删除(注意有外键约束时,需要先解除外键约束才能删除)
4) 更新数据:
方法一:Person person = em.find(Person.class,1);
person.setName("老黎");(1).跟事务关联在一起了(2)对象处于托管状态
方法二:Person person = em.find(Person.class,1);
em.clear();//把试题管理器中的所有实体变成游离状态
person.setName("老黎");//现在还是不可以,实体还是处于游离状态
em.merge(person);//把游离状态中的实体bean同步到数据库
5) 查看数据:
方法一:Person person = em.find(Person.class,1);//查看数据,1为对象在数据库中的id值
方法二:Person person = em.getReference(Person.class,1);//没有值不出现异常,只person.getName()的时候报异常
em.refresh(person);//进行数据库刷新,拿出最新的数据
4. JPA中四种数据库状态:(1)新建:刚new出对象来的时候 (2)托管:从数据库中查出来的时候 (3)游离 (4)删除
5. JPA的查询语句:Query query = em.createQuery("select o from Person o");//必须有select o,id=等于后面不要直接写值以免sql注入
(1)匿名查询用:id
(2)未参数查询?1即:where o.id=?1//指明?的值从索引1开始
query.getSingleResult();//得到唯一的结果,前提是记录必须要存在啊,要不然会出错
6. JPA中的关系映射:
1) 一对多:多的一方为关系维护端,关系维护端负责外键记录的更新,关系被维护端没有权利更新外键记录,关系维护端@JoinColumn可以指定外键的名称,关系维护端@ManyToOne(cascade,optional)可以指定级联属性和关系被维护端是否为必须,关系被维护端需要指定mappedBy属性,可以设置fetch(延迟加载)属性
2) 一对一和多对多和一对多类似,关系维护端可以根据实际情况进行选取
3) 联合组键:主键类需要实现Serializable接口,重写equals()方法
传智播客JPA实战详解:日期、枚举等复杂字段类型的映射与应用 有些时候,数据库字段长度受限,或者对接的老系统只认缩写码,比如:枚举值希望存为ACTIVEAINACTIVEISUSPENDEDS这时候就得祭出终极武器——@Converter@Override@Override// 使用这样一来,Java层用语义清晰的枚举,数据库层用紧凑编码,完美兼顾可读性与兼容性 ✨回顾整个旅程,我们经历了:从→ 到从→ 到或自定义转换器。 阅读详情

相关推荐

01_传智播客JPA详解_全面阐释和精彩总结JPA

01_传智播客JPA详解_全面阐释和精彩总结JPA

传智播客_jpa详解视频教程

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

weixin_33738578的博客 285

传智播客——JPA学习笔记

传智播客——JPA学习笔记 网络上有一份pdf格式的《JPA学习笔记》,但是内容排版有点乱,而且有缺失的部分,小弟从原来的blog处拷贝出来,并加以排版,制作成了chm格式的,大家应该知道chm格式比较适合作为参考资料或帮助文档的文件格式了。

传智播客学习之JPA

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

qinli_2009的专栏 655

传智播客jpa详解视频教程

传智播客jpa详解视频教程PPT文件

传智播客jpa学习,jpa整合hibernate

      今天学习jpa,黎活明老师讲的,黎老师讲到,jpa可以简化现有的持久化开发工作和整合ORM技术,他的使用会越来越广。今天主要学习了它的技术原理,开发环境配置。      JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合O

TuiRoger的专栏 1722

传智播客jpa学习,jpa中用到的注解和jpql语言的使用

     今天继续学习jpa,黎老师准备了对jpa重点的部分学习的很多例子程序,对实体bean持久化建模的思想,持久化实体bean中各种类型的属性要用到的注解,对实体bean进行增,删,改,查操作以及jpql语言的使用。敲了一遍例子代码,基本掌握了jpa的使用,再学新项目也把它整合进去。    两种建模思想,1先建表,后再根据表来编写配置文件和实体bean,使用这种方案的开发人员受到了传统数据

TuiRoger的专栏 2560

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

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

图画hadoop 1332

传智播客--JPA的关系映射和JPQL查询

通过昨天的学习和晚上上自习时候的练习对 JPA 有了一定的了解,对学好 JPA 有了很大的信心.呵呵...在学一门新技术的时候,总是感觉它很难可能学不会.这技术有多高深啊,不好掌握.可是每次学完了回头一看,又感觉原来如此啊,其实不是想的那样.哈哈...还是经验少啊.下面对今天的学习内容总结一下.1.关系映射1)多对一ManyToOne(@ManyToOne)Cl

图画hadoop 2316

黑马程序员 jpa详解视频教程配套源代码 笔记 jar包 很全的

该资料是传智播客JPA详解视频教程的配套源代码、课堂笔记、实战过程中的jar包等,让您在观看视频的同时,方便练习视频中的案例。

传智播客jpahibernate(2)-CRUD和关联关系

传智播客ms很多关于“数据”的课程都是徐培成老师讲的,hibernatejpa、后面还有个数据采集课程,当然还有讲解其他课程,赞一下,课讲得确实很好,尤其是课上没有半句废话--对于号称笔记狂的本人而言恨不得每个字都记下来,而且看得出确实经验丰富。当然,本人博客里提到的其他老师也都很好~最最起码的,能看出大家都很敬业。本人一直都认为,做事最重要的就是看态度。常言道:能力可以培养,态度难以改变 >

那一抹云 1308

传智播客java学习--jpa初步

我今天学习了徐老师讲的jpa,我做了简单的笔记: JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate、TopLink等ORM框架各自为营的局面。值得注意的是,JPA是在充分吸收了现有H

275

传智播客java学习--jpa进阶_ejb初步

我今天学习了徐老师讲的ejb3的知识,我做了简单的笔记:        上午讲的是jpa的知识,下午讲的是EJB3的知识:       JPQL语句:hibernate的HQL语句一样。简单查询:  Query query = em.createQuery("SELECT c FROM Customer c");  return query.getResultList(

320

传智播客jpahibernate(1)-实体和主键生成

jpa全称是Java Persistence API,是sun公司出台的面向数据持久化层的规范,即面向接口编程,以达到“平台”无关性(这个“平台”是指jpa产品,例如hibernate,toplink,openjpa等)。hibernate是符合jpa规范的产品之一。 说到数据持久化,先说一下以下几点:1、对于数据持久化的思想而言,内存只是一个交换数据的地方,这意味着如果断电或者进程被杀,

那一抹云 1303

传智播客jpahibernate(3)-继承映射

Hibernate支持三种基本的继承映射策略:每个类分层结构一张表(table per class hierarchy),每个子类一张表(table per subclass),每个具体类一张表(table per concrete class),此外,Hibernate还支持第四种稍有不同的多态映射策略--隐式多态(implicit polymorphism) 。这里只介绍前三种,最后一种请参阅

那一抹云 1936

2010-01-20 传智播客JPA与EJB (转载)

今天内容为两个版块JPA与EJB,从学习hibernate、UML到JPA。他们都涉及到一个极为重要的细节——类与类、接口与接口或类与接口之间的四类关联关系。今日上午到下午3点左右内容为JPA中处理这四类关系。我想我应该将他们系统的做一下总结,这项任务就留着后天休息来完成吧! 近三天的课程内容除了带给我知识上的获取和见识的增长,更让我感觉到一种力量!在学习WEB之前,这些互联网的东西让我满头...

Big JavaEye 133

传智播客jpa详解视频教程(七):JPA中的一对多双向关联与级联操作、延迟加载与关系维护

以“订单Order 1:N 订单项OrderItem”为例: //在JPA中,如果是双向1:N的关系,则N的一方为关系维护端 //关系维护端负责外键记录的更新,关系被维护端是没有权利更新外键记录的 ‍//例如只能通过订单项(OrderItem)来修改所属的订单(Order),而不能通过订单来修改订单项所属的订单 //N一边的默认加载方式为延迟加载,1一边的默认加载方式为立即加载

zygzzp的专栏 1391

视频教程-Spring Data JPA项目-Java

Spring Data JPA项目 2011年毕业后在澳门 遊澳集团(UO...

weixin_34377424的博客 197
上一篇: Javamail 邮件回复
下一篇: Java核心之Java内存分配原理
stevenbill
博客等级 码龄16年 13粉丝 518原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值