本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/blog/8/8-141.html (1)大量分页查询时,及时session.clear(),可能导致内存溢出; 大集合遍历:如寻找敏感词汇; 注:内存泄漏,Java本身不会内存泄漏,但是Java调用的底层C会内存泄
本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/blog/8/8-141.html
(1)大量分页查询时,及时session.clear(),可能导致内存溢出;
大集合遍历:如寻找敏感词汇;
注:内存泄漏,Java本身不会内存泄漏,但是Java调用的底层C会内存泄漏。
(2)1+N问题:(典型面试题)
一个实体A关联着另一个实体B,查询所有的实体A时,原本一条sql语句就可完成,结果后面却多了N条查询各个A关联的实体B的查询语句的问题,影响性能。
解决办法:A. 实体B设置为LAZY;
B.BatchSize多次单条查询合并成少次的多条查询,减少sql次数;
C.join fetch:设置外连接,把后面要查询的也一起查出来,减少查询次数。
(3)BatchSize多次单条查询合并成少次的多条查询,减少sql次数。
(4)List的Iterator:
A.List:Query查询到的List是直接一条sql查询所有结果;
B.Iterator:只查询表的最小主键,接下来每访问一条才发送一条sql语句查询具体的记录,但是Iterator使用了Hibernate的缓存,同一个session查询两次,底层sql只发送一次而已,它会自己去缓存中查询结果是否已经有了,减少sql查询次数。
(5)一级缓存、二级缓存、查询缓存(面试题)
A.一级缓存:session中的缓存,查询过一次之后的同一个session下再次查询会从缓存中查询;
B.二级缓存:SessionFactory级别的缓存,可以跨越session,Hibernate没有实现,需要使用第三方二级缓存实现,默认EHCache,需要EHCache和Logging的jar;
a.打开二级缓存:Hibernate主配置文件设置打开缓存并指定二级缓存实现类;
@Cache注解:标注需要缓存到二级缓存的实体Entity;
Ehcache.xml:EHCache二级缓存的配置文件,可设置多个缓存配置,根据
name选择设置的属性配置;
b.适用二级缓存:经常访问、改动不大、数量有限;
c.load、iterator默认使用二级缓存,list有往二级缓存加数据但是查询时不使用;
d.query若要使用二级缓存,需要打开查询缓存,
setCachable(true);指明Query打开二级缓存;
e.缓存算法:LRU最近最少使用、FIFO(先进先出)、LFU(最近最不常使用)
C.查询缓存:特殊的二级缓存,专门用于查询操作;
(6)二级缓存使用步骤:
A.导入ehcache的jar和commons-logging的jar;
B.类路径加入ehcache的配置文件,里面配置缓存配置;
C.hibernate的全局配置文件配置开启二级缓存;
D.
E.
(7)事务并发处理(面试):
事务基础知识见JDBC笔记;
A. 悲观锁:解决不可重复读,load添加第三个参数设置;
悲观地认为别人总想着影响自己,直接加锁,防止别人的影响;
B. 乐观锁:解决多人同时修改,程序中实现;
乐观地认为别人不会来影响自己,加一个记录版本号的属性,@Version,事务开始时检查版本号,到真正要修改时再检查版本号,若版本号不变,则正确执行,版本号变了说明被影响了,报错;
(8)一定要设置连接池!!!
(9)一定注意数据库的全表查询是禁止的,关联关系的多方直接不延迟也是禁止的,Hibernate会把整个表加入内存和一级缓存,很容易导致内存溢出。
本文为博主原创,允许转载,但请声明原文地址:http://www.coselding.cn/blog/8/8-141.html

电脑性能看如下几个方面:1、电脑安装的操作系统的版本;2、电脑所配置的处理器类型;3、电脑安装的内存大小;4、操作系统是32位的还是64位的。

Vue3是一款流行的JavaScript框架,它具有易学易用、高效稳定的特点,尤其擅长构建单页应用程序(SPA)。Vue3中的lazy函数,作为懒加载组件的利器之一,可以很大程度上提高应用程序的性能。本文将详解Vue3中的lazy函数的使用方法与原理,以及它在实际开发中的应用场景和优点。什么是懒加载?在传统的前后端分离的开发中,前端开发人员往往需要处理大量的

MySQL是一种常用的关系型数据库管理系统(RDBMS),在各种应用场景下都得到广泛的应用。然而,在高并发、大数据量的情况下,MySQL数据库的性能受到挑战,特别是在读写操作频繁的场景下,容易出现性能瓶颈。为了提高MySQL数据库的性能,可以通过设置MySQL缓存来减少数据库的IO操作,从而提高MySQL的查询效率。在本文中,我们将介绍如何通过设置MySQL

在SpringBoot项目中集成Hibernate前言Hibernate是一个流行的ORM(对象关系映射)框架,它可以将Java对象映射到数据库表,从而方便地进行持久化操作。在SpringBoot项目中,集成Hibernate可以帮助我们更轻松地进行数据库操作,本文将介绍如何在SpringBoot项目中集成Hibernate,并提供相应的示例。1.引入依赖在pom.xml文件中引入以下依赖:org.springframework.bootspring-boot-starter-data-jpam

Java是一种面向对象编程语言,它被广泛地应用于软件开发领域。Hibernate是一种流行的Java持久化框架,它提供了一种简单且高效的方式来管理Java对象的持久化。然而,开发过程中经常会遇到Hibernate错误,这些错误可能会导致程序的异常终止或者不稳定。如何处理和避免Hibernate错误成为了Java开发者必须掌握的能力。本文将介绍一些常见的Hib

随着深度强化学习技术的快速发展,越来越多的研究团队开始将其应用于自动驾驶决策规划中,将行为决策与运动规划模块相融合,直接学习得到行驶轨迹。 自动驾驶中的决策规划模块是衡量和评价自动驾驶能力最核心的指标之一,它的主要任务是在接收到传感器的各种感知信息之后,对当前环境作出分析,然后对底层控制模块下达指令。典型的决策规划模块可以分为三个层次:全局路径规划、行为决策、运动规划。01 引言在一套完整的自动驾驶系统中,如果将感知模块比作人的眼睛和耳朵,那么决策规划就是自动驾驶的大脑。大脑在接收到传感器的各种

昨天一个跑了220个小时的微调训练完成了,主要任务是想在CHATGLM-6B上微调出一个能够较为精确的诊断数据库错误信息的对话模型来。不过这个等了将近十天的训练最后的结果令人失望,比起我之前做的一个样本覆盖更小的训练来,差的还是挺大的。这样的结果还是有点令人失望的,这个模型基本上是没有实用价值的。看样子需要重新调整参数与训练集,再做一次训练。大语言模型的训练是一场军备竞赛,没有好的装备是玩不起来的。看样子我们也必须要升级一下实验室的装备了,否则没有几个十天可以浪费。从最近的几次失败的微调训练来看

hibernate和mybatis的区别:1、实现方式;2、性能;3、对象管理的对比;4、缓存机制。详细介绍:1、实现方式,Hibernate是一个完整的对象/关系映射解决方案,将对象与数据库表进行映射,MyBatis则需要开发者手动编写SQL语句以及ResultMap;2、性能,Hibernate在开发速度上可能比MyBatis快,因为Hibernate简化了DAO层等等。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

Dreamweaver CS6
视觉化网页开发工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境