Hibernate4基础

2023-12-26 03:48
文章标签 基础 hibernate4

本文主要是介绍Hibernate4基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

hibernate4核心包

<<hibernate4.rar>>

hibernate4jar包

<<hibernate-release-4.3.5.Final.zip>>

   

hibernate配置文件

<<hibernate.cfg.xml>>

映射文件

<<Student.hbm.xml>>

Hibernate 简介

Hibernate4 版 Hello World 实现

配置映射文件

设置Hibernate配置文件

hibernate会根据hibernate配置文件找到映射文件,读取映射文件在数据库中自动建立表,添加表中内容

用Service创建数据库的表

Hibernate4 CRUD 体验

HibernateUtil 封装

<<HibernateUtil.java>>

XML 版 CRUD 实现

<<StudentTest.java>>

注解版 CRUD 实现

<<Teacher.java>>

配置hibernate配置文件

Junit4 单元测试框架引入

<<junit4.4.jar>>

配置

   

   

配置文件

<<TeacherTest2.java>>

单元测试

映射对象标识符(OID)

Hibernate 用对象标识符(OID)来区分对象

   

Hibernate 对象标识符生成策略

   

关联关系一对多映射

班级学生一对多映射实现(单向)

在多对一的多中实例一个一的关联对象(外键关联)

配置一的配置文件

配置主表

配置hibernate文件

事物处理

Junit4 方法详解

test() 测试方法

级联保存更新

   

事务操作

设置配置文件

班级学生一对多映射实现(双向)

一对多中在一的类中实例多的Set集合用于存放多的元素

配置一对多中一的配置文件

配置事务

单元测试

inverse 属性

配置文件

事务处理

级联删除(一般不使用,操作很危险,导致业务数据丢失)

(内部操作是先删除要要删除表的外键表的元素,再删除表)

配置文件

事务处理

一对多双向自身关联关系映射

类成员(自身关联)

配置文件(自身一对多,自身多对一,放在一起)

配置hibernate文件

事务处理

Hibernate 操作对象

Hibernate 中四种对象状态

   

   

数据的状态和持久层操作的关系

Hibernate操作对象&Session 常用方法讲解

Load和Get

游离状态和持久化状态的转化

把不同状态的对象自动持久化

合并对象(使用merge方法,将存活的对象一起提交)

(使用update时,当一个session操作数据时,另一个session不可以操作同一个数据(Session缓存中有一个存活的数据),会报错)

删除对象

Hibernate 映射类型

基本类型映射

基本映射类型

配置文件

配置hibernate文件

具体事务

集合类型映射(数据类型的映射)

Set

设置Set集合

配置文件

配置hibernate文件

具体事务

设置集合

获取集合

List

设置List集合

配置文件

配置hibernate文件

具体事务

设置集合

获取集合

Bag

设置List集合(用List模拟,没有序列的List)

配置文件

配置hibernate文件

具体事务

设置集合

获取集合

Map

设置Map集合

配置文件

配置hibernate文件

具体事务

设置集合

获取集合

Hibernate 映射继承(三种继承关系,表的主外键结构)

每个具体类对应一个表

Student

Image(是抽象的,不做具体实现的)

LifeImage,WorkImage(做具体实现的)

配置具体实现的类

Set集合的Student,Student对应的是抽象的类不用设置一对多

配置Hibetnate文件

具体事务

根类对应一个表

当Image是具体实现的不是抽象的时候,image下的LifeImage不做具体实现

配置节点字段或根节点字段

在节点字段或根字段的类,添加标识

配置hibernate文件

具体事务

每个类对应一个表

当节点字段或根节点字段做实现,子类字段也做实现时

配置节点字段或根节点字段

具体事务

表结构

Hibernate 映射关系

Hibernate 一对一映射关系实现

主键映射

配置文件

主表

   

从表

   

表结构(主表的主键关联从表的主键)

具体事务(先插入到主表中,在根据和主表主键一致的从表主键插入数据到从表)

外键映射

配置文件

主表

   

从表

   

表结构(主表的外键关联从表的主键,主表的一个外键只能关联一个从表的主键)

Hibernate 多对多映射关系实现

单向

主表

配置文件

从表(单向的从表不需要配置文件和关联成员字段)

配置hibernate文件

表结构(通过中间表实现多对多的关系)

具体事务

可以通过学生获取该学生的所有课程(多对多,单向,)

不可通过课程获取学生

双向

主表

配置文件

从表

配置文件

表结构

具体事务

除了可以单向的获取信息,同时可以反向获取数据

Hibernate 检索策略

检索策略属性 Lazy(一般使用默认的)

Lazy默认true(延迟检索)

配置一对多的多一端(主表的配置文件,配置的从表)

具体事务

Lazy为flase(立即检索)

配置文件

具体事务

Lazy为extra(增强延迟检索)

例如查询结果集的数量,不需要全部查询,使用extra会优化Sql查询语句

Lazy为proxy(代理延迟检索)

查询多对一中的多端时,当数据被使用的时,会使用代理类查询具体数据

Lazy为no-proxy(无代理延迟检索)

查询多对一中的多端时,当数据被使用的时,使用一个null值查询具体数据

检索策略属性 batch-size

具体事务Class端配置的,链接维护端

批量延迟检索

配置文件(批量检索3个班级,不是一次检索一个班级)

批量立即检索(不需要一个一个的,直接去不查询Class)

配置文件

检索策略属性 Fetch

配置文件Class端配置的,链接维护端

查询方式

子查询

在查询数据量大的时候,sql查询会被优化一些

迫切左外连接查询方式

使用hql查询时,设置会被忽略,还是查询方式

在查询数据量大的时候,sql查询会被优化一些

具体事务

Hibernate 查询方式

Hibernate 查询方式简介

本地 SQL 查询方式

Sql查询

带参数的Sql查询

HQL 查询方式(面向对象的查询语言,使用最广的)

普通查询

带条件查询

使用别名

对结果排序

分页查询

查询单个对象

链式写法

QBC 查询方式(用接口来实现的查询方式)

普通查询

带条件的查询

对结果排序

分页查询

查询单个对象

链式查询

Hibernate 高级配置

<<C3P0.rar>>

配置数据库连接池

配置hibernate文件

C3P0配置

<!-- 最小连接数 -->

<property name="c3p0.min_size">7</property>
<!-- 最大连接数 -->
<property name="c3p0.max_size">42</property>
<!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 -->
<property name="c3p0.timeout">1800</property>
<!-- 最大的PreparedStatement的数量 -->
<property name="c3p0.max_statements">50</property>

配置日志框架 Log4J

<<log4j-1.2.17.rar>>

lpg4j配置百度百科

https://baike.baidu.com/item/log4j/480673?fr=aladdin

   

具体事务日志输出配置

   

输出样式

配置 Hibernate 二级缓存

   

从一级缓存中获取

单个事务中缓存中的数据是共享的

多个事务中缓存中的数据是独立的

Hibernate二级缓存配置

<<ehcache.rar>>

ehcache配置文件加入工程的src目录

<<ehcache.xml>>

配置Hibernate配置文件

<!-- 启用二级缓存 -->
<property name="cache.use_second_level_cache">true</property>
<!-- 配置使用的二级缓存的产品 -->
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
<!-- 配置启用查询缓存 -->
<property name="cache.use_query_cache">true</property>

配置对象文件

具体事务

   

这篇关于Hibernate4基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/538000

相关文章

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

音视频入门基础:WAV专题(10)——FFmpeg源码中计算WAV音频文件每个packet的pts、dts的实现

一、引言 从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以打印WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的pts、dts: 打印出来的“pts”实际是AVPacket结构体中的成员变量pts,是以AVStream->time_base为单位的显

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

c++基础版

c++基础版 Windows环境搭建第一个C++程序c++程序运行原理注释常亮字面常亮符号常亮 变量数据类型整型实型常量类型确定char类型字符串布尔类型 控制台输入随机数产生枚举定义数组数组便利 指针基础野指针空指针指针运算动态内存分配 结构体结构体默认值结构体数组结构体指针结构体指针数组函数无返回值函数和void类型地址传递函数传递数组 引用函数引用传参返回指针的正确写法函数返回数组

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是

【MRI基础】TR 和 TE 时间概念

重复时间 (TR) 磁共振成像 (MRI) 中的 TR(重复时间,repetition time)是施加于同一切片的连续脉冲序列之间的时间间隔。具体而言,TR 是施加一个 RF(射频)脉冲与施加下一个 RF 脉冲之间的持续时间。TR 以毫秒 (ms) 为单位,主要控制后续脉冲之前的纵向弛豫程度(T1 弛豫),使其成为显著影响 MRI 中的图像对比度和信号特性的重要参数。 回声时间 (TE)

Java基础回顾系列-第七天-高级编程之IO

Java基础回顾系列-第七天-高级编程之IO 文件操作字节流与字符流OutputStream字节输出流FileOutputStream InputStream字节输入流FileInputStream Writer字符输出流FileWriter Reader字符输入流字节流与字符流的区别转换流InputStreamReaderOutputStreamWriter 文件复制 字符编码内存操作流(

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma