文章目录

  • Getting Started
    • SessionFactory模式
    • EntityManager模式
  • User Guide
    • 1 Architecture
    • 2 Domain Model
      • 2.1,Mapping types
      • 2.2,Naming strategies
      • 2.3,Basic Types
      • 2.4 Embeddable types
      • 2.5 Entity types
      • 2.6 Identifiers
      • 2.7 Association
      • 2.8 Collections
      • 2.9 Natural Ids

官网:http://hibernate.org/orm/documentation/5.4/
JPA、hibernate关系:JPA为ORM规范,hibernate实现了JPA。

Getting Started

ORM,Object/Relational Mapping;mapping data between object model representation to relational model representation.
使用方式:SessionFactory/Session、EntityManagerFactory/EntityManager(JPA)

SessionFactory模式

配置文件
https://www.jianshu.com/p/7cf000f92016

<hibernate-configuration><session-factory><property name="name" value="value"/> 属性<mapping resource/class=""/> 映射文件,resource加载xml配置,class加载annotation配置</session-factory>
</hibernate-configuration>

配置文件也可使用properties格式。配置内容:dataSource、mapper
构建SessionFactory

SessionFactory sf = new Configuration().configure().buildSessionFactory()//configure()可指定配置文件位置
Session session = sf.openSession()//
Transaction t = session.beginTransaction()//获取事务
t.commit()//提交事务

EntityManager模式

配置文件
https://blog.csdn.net/qq_33349750/article/details/75078689
需配置:dataSource、mapper、transacton等
位置:META-INF/persistence.xml。
可配置多个persistence-unit,每个EntityManagerFactor对应一个,name属性。
构建EntityManagerFactory

EntityManagerFactory emf = Persistence.createEntityManagerFactory(puName);//name属性
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.getTransaction().commit();
em.close()//关闭

User Guide

https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html

1 Architecture

hibernate实现JPA规范:

  • SesseionFactory;继承EntityManagerFactory
  • Session;继承EntityManager
  • Transaction;继承EntityTransaction

2 Domain Model

resultMap、sql构建

2.1,Mapping types

org.hibernate.type.Type,规定数据映射。
hibernate type:value type(basic、embeddable、collection),entity type。
类比mybatis,basic–property,enbeddable–association,collection–collection,entity type–resultMap
entity type,id唯一。

2.2,Naming strategies

属性映射,两阶段:domain model–logical name,logical name–physical name

2.3,Basic Types

@Basic,标记model属性为basic type。数据库列默认映射为basic type。
@Column,绑定列。columnDefinition,列DDL声明。
@Enumerated,映射枚举类;值:EnumType.ORDINAL(顺序)、EnumType.STRING(名称)
@Lob,映射Blob(Blob、byte[])、Clob(Clob、String、char[])
@Temporal,映射时间,java类型非java.sql包下时使用。
列名为保留字时,字符串内使用双引号括起列名。全局配置:hibernate.globally_quoted_identifiers
@ColumnTransformer,列转换;read、write属性。
@Formula,公式;@Formula(“columnA * 100”)
Generated Properties
三要素:when(GenerationTime),strategy(GenerationType),generator。selectKey标签。
@Generated,标记自动生成属性(basic);值:GenerationTime.NEVER/INSERT/ALWAYS
@GeneratorType,自定义属性生成器;type生成器,when生成器时机(GenerationTime)
@CreationTimestamp/@UpdateTimestamp,标记属性为jvm时间。
@ValueGenerationType,元注解,指定属性生成器。

2.4 Embeddable types

association
2.4.1,Component/Embedded
复用基本类型映射。
@Embeddable标记类,@Column标记属性映射
@Embedded标记属性为embeddable类型
2.4.8,@Target mapping
@Target,标记多态属性实现类型
2.4.9,@Parent mapping
@Parent,关联owner entity。

2.5 Entity types

@Entity–resultMap;默认name属性为类名,不可重复。@Table绑定表。
hibernate懒加载,runtime proxy;基于entity为非final类型。
entity类提供无参构造器;声明getter/setter方法;
标记id属性,属性最好为对象。@Id。
基于id属性,重写equals()、hashCode()方法。id相同时,引用前序对象。

2.6 Identifiers

标记主键,区分entity实例。主键类型最好为对象、包装对象。
特性:UNIQUE、NOT NULL、IMMUTABLE
2.6.1,Simple dentifiers
@Id,标记主键属性。
@GeneratedValue,自动生成主键;JPA自动生成主键时,仅整形id支持移植。
2.6.2,Composite identifiers
JPA
@EmbeddedId;标记主键属性。
@Embeddable,标记主键属性类;类中属性可为:basic、composite、@ManyToOne
@IdClass标记entity类,指定主键类;@Id标记主键类属性
hibernate
@Id,标记主键所有属性。若主键属性非basic类型,需标记@Entity。
2.6.7 Generate identifier values
JPA portably defines identifier value generation just for integer types.
Hibernate支持多种类型。
@GeneratedValue,生成并设置主键;strategy–GenerationType,generator–String
GenerationType

  • AUTO;自动确定。UUID–UUID identifier,numerical–自动匹配generator
  • SEQUENCE;通过sequence生成;对不支持squence的数据库,使用tableGenerator
  • IDENTITY;insert后通过主键策略生成主键;如自增。建议使用SEQUENCE替代。
  • TABLE;通过table生成主键;

generator

  • @SequenceGenerator;序列主键生成器。属性:name、squenceName序列名
  • @TableGenerator;表格生成主键;属性:name、table、pkColumnName/pkColumnValue、valueColumnName
  • @GenericGenerator;自定义主键策略。属性:name、strategy(如:native、uuid、increment等)、parameters参数,可指定optimizer(优化策略,none、pooled-lo、pooled、hilo)
@GenericGenerator(name = "product_generator",strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",parameters = {@Parameter(name = "sequence_name", value = "product_sequence"),@Parameter(name = "initial_value", value = "1"),@Parameter(name = "increment_size", value = "3"),@Parameter(name = "optimizer", value = "pooled-lo")})

2.6.15,Derived Identifiers
@MapsId,自动推断主键。用于@OneToOne、@ManyToOne
2.6.16,@RowId
@RowId,标记entity类;若数据库支持ROWID,则hibernate可使用其进行crud操作。

2.7 Association

entity间关联,表关联(外键、中间表)。注解前一个One、Many指当前类。
@ManyToOne,关联child、parent。
@OneToMany,关联parent、children。双向时通过mappedBy将外键维护交由Many端。
@OneToOne
@ManyToMany
如未指定关联关系,hibernate自动生成外键、关联表。
@JoinColumn;关联列;name外键列列名(Many)、refrenceColumnName关联列列名(默认主键)。Many端为关系维护端(双向时标记@JoinColumn),负责外键记录更新;关系被维护端无权更新外键记录。
@JoinColumns,多个关联列。
@PrimaryKeyColumn,主键关联。
@JoinTable;关联关系表;name、joinColumns、inverseJoinColumns
@NotFound;关联无匹配时策略;NotFoundAction.EXCEPTION/IGNORE

2.8 Collections

@ElementCollection;注解集合属性;集合元素为value type。
@OrderColumn/@OrderBy;声明collection顺序机制。
hibernate可根据@OneToMany、@ManyToOne自动生成外键或关联表。

2.9 Natural Ids

@NaturalId,标记natural id。mutable=true,默认不可变
api可使用natural id进行查询。
@Immutable,标记entity、collection;表示不可变

《Hibernate官方文档》_笔记相关推荐

  1. ZooKeeper官方文档学习笔记03-程序员指南03

    我的每一篇这种正经文章,都是我努力克制玩心的成果,我可太难了,和自己做斗争. ZooKeeper官方文档学习笔记04-程序员指南03 绑定 Java绑定 客户端配置参数 C绑定 陷阱: 常见问题及故障 ...

  2. Javassist 官方文档 随手笔记

    Javassist 官方文档 随手笔记 Javassist.CtClass Class search path Introspection and customization \$0, \$1, \$ ...

  3. Open3D官方文档学习笔记

    Open3D官方文档学习笔记 第一部分--点云 1 可视化点云 2 体素降采样 3 顶点法线评估 4 访问顶点法线 补充:Numpy在Open3D中的应用 5 裁剪点云 补充1:获取点云坐标 补充2: ...

  4. SpringBoot 官方文档

    一. 文档下载 1.SpringBoot官方文档下载地址 https://docs.spring.io/spring-boot/docs/current/reference/ 二. 文档解读 1. s ...

  5. 《SpringBoot官方文档》_笔记

    文章目录 Part III. Using Spring Boot Part IV Spring Boot Features 23 SpringApplication 23.1 Startup Fail ...

  6. tensorflow官方文档_开源分享:最好的TensorFlow入门教程

    如果一门技术的学习曲线过于陡峭,那么我们在入门时的场景往往是,一鼓作气,没入门,再而衰,三而竭.演绎一出从入门到放弃的败走麦城. 今天发现一个入门TensorFlow的宝藏,迫不及待的分享给大家.这个 ...

  7. vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍

    这是我的vue.js 2.0的学习笔记,采取了将官方文档中的代码集中到一个文件的形式.目的是保存下来,方便自己查阅. !官方文档:https://cn.vuejs.org/v2/guide/ 01. ...

  8. dubbo官方文档_狂神说SpringBoot17:Dubbo和Zookeeper集成

    狂神说SpringBoot系列连载课程,通俗易懂,基于SpringBoot2.2.5版本,欢迎各位狂粉转发关注学习.未经作者授权,禁止转载 分布式理论 什么是分布式系统? 在<分布式系统原理与范 ...

  9. OpenCV-Python官方文档学习笔记(上)

    整理自OpenCV-Python官方文档 一. OpenCV-Python Tutorials 1 安装及验证 2 图片读写,展示 3 视频读写,展示 4 绘图功能(绘制几何形状:线.圆.椭圆.矩形. ...

  10. kafka官方文档学习笔记2--QuickStart

    下载kafka https://www.apache.org/dyn/closer.cgi?path=/kafka/1.0.0/kafka_2.11-1.0.0.tgz 解压安装包 > tar ...

最新文章

  1. 这项技术是谷歌AI的New Sexy:利于隐私、节能环保,目前最大挑战是布道阐释
  2. php 中文相等_php判断字符串是否相等
  3. 蓝奏云数值验证码识别,python调用虹鱼图灵识别插件,超高正确率
  4. OpenVINO 部署 Mask-RCNN 实例分割
  5. Android 学习笔记 databinding简单使用:使用databinding在listview加入不同类型的view
  6. Volley源码解析(二)
  7. 使用 SqlDependency 对象缓存数据以提高性能
  8. InnoDB脏页,重做日志文件
  9. HTTP Live Streaming (HLS) - 概念
  10. RFID仓库管理系统解决方案有哪些功能模块
  11. layui表格宽度自适应
  12. java emoji表情_java处理emoji表情的方法
  13. SpringBoot+Beetlsql代码生成
  14. 网站服务器采用CDN+专线 ,完美加速
  15. HI3516EV100 AEC回音消除 + ANR语音降噪功能实现
  16. 浏阳计算机学习,浏阳十五岁孩子中等职业技术学校学计算机网络
  17. VB.net小技巧——读取文本文件并显示到文本框中
  18. 济南小学计算机教师工资多少钱一个月,2019济南中小学教师工资待遇水平新调整通知...
  19. 艺工交叉之神--达芬奇
  20. a标签点击中文文件名乱码_关于a href传参的中文乱码问题

热门文章

  1. 一款上手即用的Java代码混淆工具
  2. Java | ProGuard——java代码混淆利器
  3. Q学习(Q learning) 强化学习的简单例子 Matlab实现 可视化
  4. java 记住密码的实现_javaweb实现记住密码功能
  5. 微信小程序调用app.js里的函数
  6. svn代码量统计工具StatSVN的使用
  7. 音乐和计算机跨界融合,音乐类综艺跨界融合有了新思路
  8. html3D创意相册附源码
  9. 中国单箱梁体最宽矮塔斜拉桥合龙
  10. php怎么eclipse打开,PHPEclipse的安装和使用