当前位置: 首页 > news >正文

JPA学习笔记(一)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

为什么需要JPA?

  • 简化现有Java EE和Java SE应用的对象持久化的开发工作
  • Sun希望整合对ORM技术,实现天下归一。

JPA 包含哪些技术?

  • ORM映射元数据,JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中
  • JPA 的API,用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来
  • 查询语言,这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦

实体(Entity)

  • 概念: 具有ORM元数据的领域对象称为实体(Entity)
  • 特征:
    • 必须使用javax.persistence.Entity注解或者在XML映射文件中有对应的元素
    • 必须具有一个不带参的构造函数,类不能声明为final,方法和需要持久化的属性也不能声明为final
    • 如果游离状的实体对象需要以值的方式进行传递,如通Session bean的远程业务接口传递,则必须实现Serializable接口
    • 需要持久化的属性,其访问修饰符不能是public,它们必须通过实体类方法进行访问
  • 实体的持久字段和属性:
    • 持久化字段: 如果实体类使用持久化字段, 那么持久化运行时将直接读取实体对象的变量. 所有没有被javax.persistence.Transient注解或transient关键字标注的字段都将被持久化. ORM注解必须被应用到字段上.
      • 例: image
    • 持久化属性: 必须是JavaBean风格的属性, 通过getter/setter方法. ORM注解必须被标注在getter方法上. 同时, ORM注解不能被标注在@Transient或transient关键字修饰的字段或属性上
      • 例: image
    • 集合类的持久化: 如果一个实体含有一个集合字段或属性, 使用javax.persistence.ElementCollection注解来标记ORM
      • java.util.Collection子类: 使用javax.persistence.ElementCollection注解来标记ORM. 不用泛型需填写targetClass属性.
      • java.util.Map子类: Map的情况要复杂些, 对Map集合持久化需要遵循以下原则(详细见: JavaEE Tutorial Release7 37.1.2.3)
  • 实体的态:
    • New:瞬时对象,尚未有id,还未和Persistence Context建立关联的对象。
    • Managed:持久化受管对象,有id值,已经和Persistence Context建立了关联的对象。
    • Detached:游离态离线对象,有id值,但没有和Persistence Context建立关联的对象。
    • Removed:删除的对象,有id值,尚且和Persistence Context有关联,但是已经准备好从数据库中删除。
    • 状态名 作为Java对象存在 在实体管理器中存在 在数据库中存在
      New Y N N
      Managed Y Y Y
      Detached N N N
      Removed Y Y N
    • 14160022_rcdR.png

 

转载于:https://my.oschina.net/CasparLi/blog/367645

相关文章:

  • android setResut intent ==null?
  • PHP查询MySQL大量数据的内存占用分析
  • 网络工程师
  • MailGorupMemeber Export to excel
  • 人工智能博弈树算法做的井字棋游戏
  • CSS z-index 属性
  • Error No matching provisioning profiles found
  • 微软消息分析器(Microsoft Message Analyzer )更新至1.2版-2015-1-20
  • java的动态代理机制详解
  • 查询句柄引用计数源码
  • PHP 启动 cURL模块以及启动失败的解决方案
  • selenium webdriver 学习笔记(三)
  • 4在二元树中找出和为某一值的所有路径
  • Android.Hack.02_Animations
  • [转]Asp.net MVC中Html.Partial, RenderPartial, Action,RenderAction 区别和用法
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 230. Kth Smallest Element in a BST
  • Angular4 模板式表单用法以及验证
  • co模块的前端实现
  • crontab执行失败的多种原因
  • C语言笔记(第一章:C语言编程)
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • ES6核心特性
  • express + mock 让前后台并行开发
  • FastReport在线报表设计器工作原理
  • fetch 从初识到应用
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Java新版本的开发已正式进入轨道,版本号18.3
  • jquery cookie
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • Material Design
  • 爱情 北京女病人
  • 简单基于spring的redis配置(单机和集群模式)
  • 开源SQL-on-Hadoop系统一览
  • 排序算法学习笔记
  • 前端面试题总结
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 项目实战-Api的解决方案
  • - 转 Ext2.0 form使用实例
  • Java总结 - String - 这篇请使劲喷我
  • k8s使用glusterfs实现动态持久化存储
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • ###项目技术发展史
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (4)事件处理——(7)简单事件(Simple events)
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (编译到47%失败)to be deleted
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (三)uboot源码分析