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

Hibernate 相关特性

1. Hibernate一般使用hql进行查询,但也有sql执行的方法

Native sql 查询,。需要注意的是,使用Native SQL查询可能会破坏Hibernate的缓存机制,并可能导致性能问题

String sql = "SELECT * FROM users WHERE age > :age";
Query query = session.createNativeQuery(sql, User.class);
query.setParameter("age", 18);
List<User> users = query.getResultList();

2. hibernate的查询年龄大于18的用户

HQL

String hql = "FROM User WHERE age > 18";
List<User> users = session.createQuery(hql, User.class).getResultList();

Criteria API

CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<User> query = cb.createQuery(User.class);
Root<User> root = query.from(User.class);
query.select(root).where(cb.gt(root.get("age"), 18));
List<User> users = session.createQuery(query).getResultList();

3. hql和sql的区别

对象模型不同:HQL是面向对象的查询语言,用于查询Hibernate映射的对象模型,而SQL是面向关系模型的查询语言,用于查询关系型数据库中的数据。

语法不同:HQL语法与SQL语法有些类似,但也有很多不同点。例如,HQL使用实体类名和属性名代替表名和列名,使用关键字FROM代替SELECT,使用关键字JOIN代替INNER JOIN或LEFT OUTER JOIN等。

映射不同:在Hibernate中,实体类和数据库表之间需要进行映射,而HQL查询的是实体类,而不是数据库表。这意味着在HQL中不需要考虑表之间的关系,而是通过对象关系进行查询,这也是HQL的一大优势。

执行方式不同:HQL查询是在Hibernate的一级缓存中执行的,因此可以避免多次查询数据库。而SQL查询则是直接查询数据库中的数据。

性能不同:由于HQL查询是在Hibernate的一级缓存中执行的,因此可以提高查询效率。同时,HQL还可以利用Hibernate的缓存机制来进一步提高性能。而SQL查询则没有这些优势,通常需要通过数据库索引等方式来提高查询效率。

4. HQL查询的是实体类,而不是数据库表

在Hibernate中,HQL查询的是实体类,而不是数据库表,这意味着开发者可以使用面向对象的方式进行数据查询和操作,而无需关注底层数据库表的具体实现。

在HQL中,查询语句的主体是实体类,而不是数据库表。例如,以下HQL查询语句查询所有用户的用户名和年龄:

SELECT u.userName, u.age FROM User u

在这个查询语句中,User代表的是Hibernate映射的实体类,而不是底层数据库表。开发者只需要知道实体类的属性名称,就可以完成数据查询和操作,而无需了解数据库表的详细信息。

这种面向对象的查询方式具有很大的优势,因为它能够更好地体现对象模型的特性,避免了开发者直接操作数据库的复杂性和繁琐性,使开发工作更加简单和高效。同时,HQL查询也可以利用Hibernate的缓存机制,提高数据查询和操作的性能。

5.跨平台

不同的数据库平台的SQL语句可能会有所不同。不同的数据库平台有着不同的实现方式、不同的语法、不同的数据类型等等,这些因素都会影响SQL语句的编写。

例如,在MySQL中,字符串类型的字段可以使用单引号或双引号表示,而在Oracle数据库中,字符串类型的字段只能使用单引号表示;MySQL中的LIMIT语法用于限制查询结果的数量,而在Oracle数据库中则需要使用ROWNUM语法实现类似的功能。此外,还有一些特定的函数、操作符和语法,在不同的数据库平台上也有着不同的实现方式。

因此,在使用不同的数据库平台时,需要针对具体的数据库平台来编写SQL语句,以保证SQL语句的正确性和可执行性。这也是ORM框架(如Hibernate和MyBatis)的一个重要作用,它们可以自动地将Java对象转换为适用于不同数据库平台的SQL语句,并进行适当的优化和调整。

所以,Hibernate具有较好的跨数据库平台兼容性,可以支持多种关系型数据库,包括MySQL、Oracle、SQL Server等。而MyBatis也支持多种数据库,但需要针对不同的数据库进行特定的配置和优化。

6. DTO和DAO

在Hibernate中,通常使用的是实体类(Entity Class)而不是数据访问对象(Data Access Object,DAO)。实体类是与数据库表映射的Java类,它包含了与数据库表中的字段相对应的属性,以及与数据库表中的记录相对应的操作方法。在Hibernate中,通过实体类可以进行对象与关系的映射,从而实现了对象关系映射(ORM)的功能。

另一方面,数据访问对象(DAO)是一种设计模式,它的主要作用是将数据访问逻辑与业务逻辑分离开来,使得系统更加灵活和可维护。在使用DAO模式时,通常会定义一个数据访问接口(DAO接口),以及一个具体的数据访问实现类(DAO实现类),DAO实现类封装了与数据库的交互细节,包括SQL语句的编写、数据库连接的管理等等。

在Hibernate中,由于使用了ORM框架,因此不再需要手动编写SQL语句,也不需要手动管理数据库连接等细节,因此通常不需要使用DAO模式。同时,由于Hibernate的实体类已经具有了数据访问的功能,因此通常也不需要再定义额外的数据访问接口和实现类。不过,在某些特定的场景中,可能会需要使用DAO模式来进一步封装数据访问的细节,以便更好地管理数据访问逻辑。

7. demo

@Entity
@Table(name = "user")
public class User {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id;@Column(name = "username")private String username;@Column(name = "password")private String password;// 省略getter和setter方法
}
public interface UserRepository extends JpaRepository<User, Long> {List<User> findByUsername(String username);
}
@SpringBootApplication
@EnableJpaRepositories(basePackages = "com.example.demo.repository")
@EntityScan(basePackages = "com.example.demo.entity")
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

相关文章:

Hibernate 相关特性

1. Hibernate一般使用hql进行查询&#xff0c;但也有sql执行的方法 Native sql 查询,。需要注意的是&#xff0c;使用Native SQL查询可能会破坏Hibernate的缓存机制&#xff0c;并可能导致性能问题 String sql "SELECT * FROM users WHERE age > :age"; Query …...

【研究生学术英语读写教程翻译 中国科学院大学Unit1-Unit8】

Unit1 Descartes Was Wrong 笛卡尔错了:“他人在,故我在” Unit2 Are we ready for the next volcanic catastrophe?我们准备好应对下一次火山灾难了吗? Unit3 Theorists,experimentalists and the bias in popular physics理论家,实验家和大众物理学的偏见 unit4 Magic Nu…...

ListView 控件的使用

第一步&#xff1a;找到ListView的控件通过findViewById 找到ListView的控件 ListView listView findViewById(R.id.listView);第二步&#xff1a;创建Bean类 得到set和get的方法解析获取的数据创建Bean类 得到set和get的方法public class Bean {String nanm""; pub…...

域控制器搭建以及成员加入

需要iso&#xff1a;windows server 2016软件使用&#xff1a;vmwarewindows server 2016系统搭建自己选iso&#xff0c;一直下一步就可以安装完成。&#xff08;记得要设置密码&#xff09;&#xff08;密码要求大小写字母数字符号&#xff09;等待就能安装完成。安装和配置Ac…...

利用 MLP(多层感知器)和 RBF(径向基函数)神经网络解决的近似和分类示例问题(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 1、径向基神经网络 径向基函数网络是由三层构成的前向网络&#xff1a;第一层为输入层&#xff0c;节点个数的能与输入的维数&…...

进阶C语言——数据的存储【详解】

文章目录1. 数据类型介绍1.1 类型的基本归类2. 整形在内存中的存储2.1 原码、反码、补码2.2 大小端介绍2.3 练习3. 浮点型在内存中的存储3.1 一个例子3.2 浮点数存储的规则1. 数据类型介绍 前面我们已经学习了基本的内置类型&#xff1a; char //字符数据类型 short //短整型 …...

KUKA机器人修改机器人名称和IP地址的具体方法示例

KUKA机器人修改机器人名称和IP地址的具体方法示例 修改机器人名称 如下图所示,首先切换用户组到管理员,输入默认密码:kuka, 如下图所示,点击菜单键—投入运行—机器人数据, 如下图所示,此时可以看到机器人的名称为rrr445, 如下图所示,修改之后,点击左侧的“”…...

【数据分析师求职面试指南】必备基础知识整理

数据分析师基础知识统计 数据分析知识基础概念随机变量常用特征正态分布与大数定律、中心极限定律假设检验模型、数据挖掘知识常用概念数据集划分欠拟合过拟合模型分类方法常见模型介绍线性回归模型&#xff1a;逻辑回归模型决策树模型随机森林模型Boosting模型XGBoost模型模型…...

《开关电源宝典 降压电路(BUCK)的原理与应用》

嗨&#xff0c;硬件攻城狮或电源工程师同行们&#xff0c;我想写本专门解析BUCK电源电路的书籍&#xff0c;以下是“前言”内容的部分摘录以及当前的目录&#xff0c;当前已经完成22万多字500多页了&#xff0c;即使如此&#xff0c;离真正出版书籍&#xff0c;还有很长的路要走…...

R语言基础(一):注释、变量

R语言用于统计分析和绘制图表等操作。不同于Java等其它语言&#xff0c;R用于统计&#xff0c;而不是做一个网站或者软件&#xff0c;所以R的一些开发习惯和其它语言不同。如果你是一个编程小白&#xff0c;那么可以放心大胆的学。如果你是一个有编程基础的人&#xff0c;那么需…...

Java 集合进阶(二)

文章目录一、Set1. 概述2. 哈希值3. 元素唯一性4. 哈希表5. 遍历学生对象6. LinkedHashSet7. TreeSet7.1 自然排序7.2 比较器排序8. 不重复的随机数二、泛型1. 概述2. 泛型类3. 泛型方法4. 泛型接口5. 类型通配符6. 可变参数7. 可变参数的使用一、Set 1. 概述 Set 集合特点&am…...

小孩用什么样的台灯比较好?2023眼科医生青睐的儿童台灯推荐

小孩子属于眼睛比较脆弱的人群&#xff0c;所以选购护眼台灯时&#xff0c;选光线温和的比较好&#xff0c;而且调光、显色效果、色温、防蓝光等方面也要出色&#xff0c;否则容易导致孩子近视。 1、调光。台灯首先是照度高&#xff0c;国AA级&#xff0b;大功率发光&#xff0…...

Ubuntu c++ MySQL数据库操作

mysql安装sudo apt-get install updatesudo apt-get install mysql-server libmysqlclient-dev mysql-workbenchmysql启动/重启/停止sudo service mysql start/restart/stop登录mysql命令&#xff1a;mysql -uroot -p错误异常&#xff1a;解决办法&#xff1a;修改mysqld.cnf配…...

C++11:lambda表达式

文章目录1. 概念2. 语法3. 示例示例1示例2示例3示例44. 捕捉方式基本方式隐式和混合补充5. 传递lambda表达式示例6. 原理7. 内联属性1. 概念 lambda表达式实际上是一个匿名类的成员函数&#xff0c;该类由编译器为lambda创建&#xff0c;该函数被隐式地定义为内联。因此&#…...

【Android -- 开源库】表格 SmartTable 的基本使用

介绍 1. 功能 快速配置自动生成表格&#xff1b;自动计算表格宽高&#xff1b;表格列标题组合&#xff1b;表格固定左序列、顶部序列、第一行、列标题、统计行&#xff1b;自动统计&#xff0c;排序&#xff08;自定义统计规则&#xff09;&#xff1b;表格图文、序列号、列标…...

自动化测试实战篇(9),jmeter常用断言方法,一文搞懂9种测试字段与JSON断言

Jmeter常用的断言主要有&#xff0c;JSON断言和响应断言这两种方式。 断言主要就是帮助帮助人工进行快速接口信息验证避免繁杂的重复的人工去验证数据 第一种响应断言Apply to&#xff1a;表示应用范围测试字段&#xff1a;针对响应数据进行不同的匹配响应文本响应代码响应信息…...

vue-virtual-scroll-list虚拟列表

当DOM中渲染的列表数据过多时&#xff0c;页面会非常卡顿&#xff0c;非常占用浏览器内存。可以使用虚拟列表来解决这个问题&#xff0c;即使有成百上千条数据&#xff0c;页面DOM元素始终控制在指定数量。 一、参考文档 https://www.npmjs.com/package/vue-virtual-scroll-li…...

C++学习笔记(以供复习查阅)

视频链接 代码讲义 提取密码: 62bb 文章目录1、C基础1.1 C初识&#xff08;1&#xff09; 第一个C程序&#xff08;2&#xff09;注释&#xff08;3&#xff09;变量&#xff08;4&#xff09;常量&#xff08;5&#xff09;关键字&#xff08;6&#xff09;标识符命名规则1.2 …...

备份时间缩短为原来 1/4,西安交大云数据中心的软件定义存储实践

XEDP 统一数据平台为西安交通大学云平台业务提供可靠的备份空间和强大的容灾能力&#xff0c;同时确保数据安全。西安交通大学&#xff08;简称“西安交大”&#xff09;是我国最早兴办、享誉海内外的著名高等学府&#xff0c;是教育部直属重点大学。学校现有兴庆、雁塔、曲江和…...

我国近视眼的人数已经超过了六亿,国老花眼人数超过三亿人

眼镜是一种用于矫正视力问题、改善视力、减轻眼睛疲劳的光学器件&#xff0c;在我们的生活中不可忽略的一部分&#xff0c;那么我国眼镜市场发展情况是怎样了&#xff1f;下面小编通过可视化互动平台对我国眼镜市场的状况进行分析。我国是一个近视眼高发的国家&#xff0c;据统…...

pdf2pptx:三分钟实现LaTeX幻灯片到PowerPoint的无缝转换

pdf2pptx&#xff1a;三分钟实现LaTeX幻灯片到PowerPoint的无缝转换 【免费下载链接】pdf2pptx Convert your (Beamer) PDF slides to (Powerpoint) PPTX 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2pptx 还在为学术演示的格式兼容问题烦恼吗&#xff1f;你是否需…...

嵌入式软件测试的范式革命——技术体系与工程价值深度解析

第一章 引言&#xff1a;嵌入式软件质量危机的时代背景在汽车电子、航空航天、工业控制、医疗设备等安全关键领域&#xff0c;嵌入式软件的复杂度正以指数级速度增长。一辆高端智能电动汽车的代码量已突破两亿行&#xff0c;超越了波音787客机的软件规模。与此同时&#xff0c;…...

终极矢量图标库完全指南:Remix Icon 3200+免费图标深度解析

终极矢量图标库完全指南&#xff1a;Remix Icon 3200免费图标深度解析 【免费下载链接】RemixIcon Open source neutral style icon system 项目地址: https://gitcode.com/gh_mirrors/re/RemixIcon Remix Icon 是一套开源的矢量图标库&#xff0c;包含超过3200个精心设…...

Illustrator智能脚本终极指南:如何让设计效率提升300%

Illustrator智能脚本终极指南&#xff1a;如何让设计效率提升300% 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在为Adobe Illustrator中重复繁琐的操作而烦恼吗&#xff1f;想…...

Qt界面嵌入Halcon窗口实战:告别弹窗,实现图像控件一体化显示

Qt与Halcon深度整合&#xff1a;实现无缝图像控件嵌入的工程实践 在工业视觉和医疗影像处理领域&#xff0c;Qt框架与Halcon图像处理库的结合堪称黄金搭档。但许多开发者初次尝试这种混合开发时&#xff0c;都会遇到一个恼人的问题——Halcon的显示窗口总是顽固地以独立弹窗形式…...

基于ASR与NLP的法庭音频智能分析系统:架构、微调与法律场景实践

1. 项目概述&#xff1a;当法庭记录“开口说话” 在司法与法律科技领域&#xff0c;数据正以前所未有的方式重塑工作流程。传统的法庭记录&#xff0c;无论是书记员手写的笔录&#xff0c;还是后来普及的录音录像&#xff0c;其核心价值在于“记录”本身——它们是静态的、被动…...

CCS6.0新建DSP28069工程后,必做的5项TI官方库配置(解决编译错误与链接问题)

CCS6.0新建DSP28069工程后必做的5项TI官方库配置实战指南 当你用CCS6.0为DSP28069新建一个空工程并点击"Finish"后&#xff0c;真正的挑战才刚刚开始。那些看似简单的编译错误和链接问题背后&#xff0c;隐藏着TI官方库配置的关键逻辑。本文将带你深入理解每个配置步…...

FcμR识别IgM复杂机制的揭示:解锁人体免疫早期应答之谜

一、引言免疫系统是机体抵御病原体入侵、维持内环境稳定的关键防线。在免疫应答过程中&#xff0c;不同类型的免疫球蛋白发挥着独特的作用。其中&#xff0c;IgM作为人体五类免疫球蛋白之一&#xff0c;在免疫应答早期起着至关重要的作用。而Fc受体作为免疫系统中的重要组成部分…...

5个简单步骤:在Windows电脑上直接安装Android应用的终极指南

5个简单步骤&#xff1a;在Windows电脑上直接安装Android应用的终极指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了在Windows电脑上使用Android模拟器…...

Picotron实战案例:在8个H100 GPU上训练SmolLM-1.7B模型的完整指南

Picotron实战案例&#xff1a;在8个H100 GPU上训练SmolLM-1.7B模型的完整指南 【免费下载链接】picotron Minimalistic 4D-parallelism distributed training framework for education purpose 项目地址: https://gitcode.com/gh_mirrors/pi/picotron Picotron是一个极简…...