Hibernate
文章平均质量分 86
传统的ORM框架
流烟默
这个作者很懒,什么都没留下…
展开
-
几种常见的ORM框架
【1】Mybatis官网地址:https://github.com/mybatis/mybatis-3① 概要MyBatis 是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的JDBC 代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。mybatis原是Apache的一个开源项目iBatis, 201原创 2021-07-04 10:22:00 · 11488 阅读 · 0 评论 -
Hibernate - HQL对象检索详解
Hibernate 提供了以下几种检索对象的方式:导航对象图检索方式: 根据已经加载的对象导航到其他对象OID 检索方式: 按照对象的 OID 来检索对象HQL 检索方式: 使用面向对象的 HQL 查询语言QBC 检索方式: 使用 QBC(Query By Criteria) API 来检索对象. 这种 API 封装了基于字符串形式的查询语句, 提供了更加面向对象的查询接口.本地 ...原创 2018-10-19 11:40:58 · 855 阅读 · 0 评论 -
Hibernate5中实体映射命名策略
对象模型到关系数据库的映射的一部分是将对象模型中的名称映射到相应的数据库名称。Hibernate将此视为2阶段过程:第一阶段是从域模型映射中确定正确的逻辑名称。逻辑名可以由用户显式指定(使用@Column或 @Table例如),也可以由Hibernate通过ImplicitNamingStrategy契约隐式确定 。其次是将此逻辑名解析为PhysicalNamingStrategy合约定义...原创 2018-12-04 16:11:38 · 6648 阅读 · 1 评论 -
Hibernate与Spring整合实践实例
【1】Hibernate使用XML方式与Spring整合即,Model上面不添加注解,使用*.hbm.xml方式与数据库进行关联。① applicationContext.xml如下所示:<?xml version="1.0" encoding="UTF-8&q原创 2018-10-24 10:46:53 · 883 阅读 · 1 评论 -
Hibernate - Session管理与批量数据处理详解
【1】Hibernate管理session① Hibernate 自身提供了三种管理 Session 对象的方法:Session 对象的生命周期与本地线程绑定Session 对象的生命周期与 JTA 事务绑定Hibernate 委托程序管理 Session 对象的生命周期在 Hibernate 的配置文件中, hibernate.current_session_context_cl...原创 2018-10-23 18:29:39 · 569 阅读 · 0 评论 -
Hibernate - 查询缓存和时间戳缓存区域使用详解
【1】查询缓存对于经常使用的查询语句, 如果启用了查询缓存, 当第一次执行查询语句时, Hibernate 会把查询结果存放在查询缓存中。 以后再次执行该查询语句时, 只需从缓存中获得查询结果, 从而提高查询性能。① 查询缓存使用于如下场合:应用程序运行时经常使用查询语句很少对与查询语句检索到的数据进行插入, 删除和更新操作② 启用查询缓存的步骤:配置二级缓存, 因为查询缓存依赖...原创 2018-10-23 15:25:58 · 1247 阅读 · 0 评论 -
Hibernate - 整合Ehcache二级缓存使用详解
SessionFactory与Session详解博文中讲述了基于Session的一级缓存,本篇博文讲述基于SessionFactory的二级缓存。缓存(Cache)计算机领域非常通用的概念。它介于应用程序和永久性数据存储源(如硬盘上的文件或者数据库)之间,其作用是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行性能。缓存中的数据是数据存储源中数据的拷贝。缓存的物理介质通常是内存。...原创 2018-10-21 15:58:31 · 928 阅读 · 0 评论 -
Hibernate - QBC和本地SQL对象检索详解
【1】QBC检索QBC 查询就是通过使用 Hibernate 提供的 Query By Criteria API 来查询对象,这种 API 封装了 SQL 语句的动态拼装,对查询提供了更加面向对象的功能接口。即使用面向对象的思想实现动态SQL拼接一样的功能,可以理解一下HQL和标准SQL。这里就需要了解几个接口和实现类。① Criterion接口An object-oriented rep...原创 2018-10-21 11:47:27 · 450 阅读 · 0 评论 -
Hibernae - 双向多对一关联关系映射
双向 1-n 与 双向 n-1 是完全相同的两种情形。双向 1-n 需要在 1 的一端可以访问 n 的一端, 反之依然。域模型:从 Order 到 Customer 的多对一双向关联需要在Order 类中定义一个 Customer 属性, 而在 Customer 类中需定义存放 Order 对象的集合属性。关系数据模型:ORDERS 表中的 CUSTOMER_ID 参照 CUSTOMER 表的...原创 2018-10-10 17:02:26 · 492 阅读 · 0 评论 -
Hibernate - 单向一对多关联关系映射
上篇博文描述了Hibernate - 单向多对一关联关系映射,本篇博文继续学习单向一对多关系映射。【1】修改Customer和OrderCustomer修改如下:public class Customer { private Integer customerId; private String customerName; private Set<Order> orde...原创 2018-10-10 16:54:18 · 513 阅读 · 0 评论 -
Hibernate - 单向多对一关联关系映射
在领域模型中, 类与类之间最普遍的关系就是关联关系。在 UML 中, 关联是有方向的。以 Customer 和 Order 为例: 一个用户能发出多个订单, 而一个订单只能属于一个客户。从 Order 到 Customer 的关联是多对一关联; 而从 Customer 到 Order 是一对多关联。【1】单向n-1单向 n-1 关联只需从 n 的一端可以访问 1 的一端。域模型: 从 O...原创 2018-10-09 16:16:09 · 715 阅读 · 0 评论 -
Hibernate - 继承关联关系映射
对于面向对象的程序设计语言而言,继承和多态是两个最基本的概念。Hibernate 的继承映射可以理解持久化类之间的继承关系。例如:人和学生之间的关系。学生继承了人,可以认为学生是一个特殊的人,如果对人进行查询,学生的实例也将被得到。Hibernate支持三种继承映射策略:使用 subclass 进行映射: 对于继承关系中的子类使用同一个表,这就需要在数据库表中增加额外的区分子类类型的字段。...原创 2018-10-15 16:37:16 · 629 阅读 · 0 评论 -
Hibernate - 多对多关联关系映射
【1】单向多对多如Category:Item=n:n。在关系数据模型中,是需要一个中间表Category-Item来维持这种关联关系的。该表中存放Category_ID和Item_ID。与 1-n 映射类似,必须为 set 集合元素添加 key 子元素,指定 CATEGORIES_ITEMS 表中参照 CATEGORIES 表的外键为 CATEGORIY_ID。与 1-n 关联映射不同的...原创 2018-10-15 11:59:25 · 367 阅读 · 0 评论 -
Hibernate - Java 类型, Hibernate 映射类型及 SQL 类型之间的对应关系
常见的映射对应关系如下表所示:Hibernate映射类型Java类型标准SQL类型字节大小integer/intjava.lang.Integer/intINTEGER4Bytelongjava.lang.Long/longBIGINT8Byteshortjava.lang.Short/shortSMALLINT2Bytebyteja...原创 2018-10-08 10:45:51 · 3544 阅读 · 1 评论 -
Hibernate - 对象关系映射文件(*.hbm.xml)详解
对象关系映射文件,即POJO 类和数据库的映射文件*.hbm.xml(映射文件的扩展名为 .hbm.xml)。POJO 类和关系数据库之间的映射可以用一个XML文档来定义。通过 POJO 类的数据库映射文件,Hibernate可以理解持久化类和数据表之间的对应关系,也可以理解持久化类属性与数据库表列之间的对应关系。在运行时 Hibernate 将根据这个映射文件来生成各种 SQL 语句。常...原创 2018-10-07 16:54:19 · 3739 阅读 · 1 评论 -
Hibernate - hibernate.cfg.xml配置文件详解
Hibernate 配置文件主要用于配置数据库连接和 Hibernate 运行时所需的各种属性。每个 Hibernate 配置文件对应一个 Configuration 对象。Hibernate配置文件可以有两种格式:hibernate.propertieshibernate.cfg.xml常用实例如下:<?xml version="1.0" encod原创 2018-10-07 15:51:37 · 8093 阅读 · 1 评论 -
Hibernate -双向一对一关联关系映射
双向一对一关联关系映射中,关系数据模型有两种方式:按照外键映射和按照主键映射。【1】基于外键映射的双向1-1对于基于外键的1-1关联,其外键可以存放在任意一边,在需要存放外键一端,增加many-to-one元素。为many-to-one元素增加unique=“true” 属性来表示为1-1关联。实例如下: <!-- 使用 many-to-one 的方式来映射 1-1 关联关系 --...原创 2018-10-12 16:02:07 · 416 阅读 · 0 评论 -
Hibernate - Session方法与持久化对象详解
【1】持久化对象的状态站在持久化的角度, Hibernate 把对象分为 4 种状态: 持久化状态, 临时状态, 游离状态, 删除状态。Session 的特定方法能使对象从一个状态转换到另一个状态.① 临时对象(Transient)在使用代理主键的情况下, OID 通常为 null不处于 Session 的缓存中在数据库中没有对应的记录② 持久化对象(也叫”托管”)(Persis...原创 2018-10-05 13:44:05 · 1189 阅读 · 0 评论 -
Hibernate - SessionFactory和Session详解
【1】SessionFactory 接口SessionFactory 接口是针对单个数据库映射关系经过编译后的内存镜像,是线程安全的。SessionFactory 对象一旦构造完毕,即被赋予特定的配置信息。SessionFactory是生成Session的工厂,构造 SessionFactory 很消耗资源,一般情况下一个应用中只初始化一个 SessionFactory 对象。Hibern...原创 2018-10-04 14:58:19 · 12602 阅读 · 0 评论 -
Hibernate - 检索策略入门与详解
检索数据时的 2 个问题:不浪费内存:当 Hibernate 从数据库中加载 Customer 对象时, 如果同时加载所有关联的 Order 对象, 而程序实际上仅仅需要访问 Customer 对象, 那么这些关联的 Order 对象就白白浪费了许多内存。更高的查询效率:发送尽可能少的 SQL 语句。其实检索策略就是围绕内存和效率这两个核心问题来展开的。...原创 2018-10-16 16:51:29 · 371 阅读 · 0 评论 -
Hibernate - 基础入门详解
【1】什么是Hibernate一个框架,一个Java领域的持久化框架,一个ORM框架。① 什么是对象的持久化狭义的理解,“持久化”仅仅指把对象永久保存到数据库中。广义的理解,“持久化”包括和数据库相关的各种操作:保存:把对象永久保存到数据库中。更新:更新数据库中对象(记录)的状态。删除:从数据库中删除一个对象。查询:根据特定的查询条件,把符合查询条件的一个或多个对象从数据库加载...原创 2018-10-04 09:42:34 · 2073 阅读 · 1 评论