Hibernate中的Session缓存问题
1. Session 缓存: 1) . 在 Session 接口的实现中包含一系列的 Java 集合 , 这些 Java 集合构成了 Session 缓存 . 它 用于存放 Session 关联的对象 ( Session 关联对象的方式有很多种。 例如:session.get ( Class , OID ) 、 session.update () 、 session
1. Session 缓存:1) . 在 Session 接口的实现中包含一系列的 Java 集合 , 这些 Java 集合构成了 Session 缓存 . 它用于存放 Session 关联的对象( Session 关联对象的方式有很多种。 例如:session.get (Class , OID )、 session.update()、 session.save () ...)。 只要 Session 实例没有结束生命周期 , 且没有清理缓存,则存放在它缓存中的对象也不会结束生命周期。 Session 缓存可减少 Hibernate 应用程序访问数据库的频率。
2) . 操作 Session 缓存的方法(了解一下吧)。
①. 若调用 session.get () 从数据库中加载一个对象,则该对象会被纳入到 Session 缓存中。
News news = (News ) session.get (News.class , 1);
//会向数据库发送 SQL 吗 ? 不会发送 SQL 语句 , 而是从 Session 缓存获取对象的引用(快照) News news2 = (News ) session.get (News.class , 1);
②. Session 的 clear() 方法可以清空 Session 的缓存
News news = (News) session.get(News.class, 1);
//清理 session 缓存 session.clear (); //会向数据库发送 SQL 吗 ? 会 ! 因为 Session 缓存被清空了 ! News news2 = (News ) session.get (News.class , 1);
③. Session 的 flush() 方法: 清理缓存 - 强制使数据库记录和 Session 缓存中对象状态保持一致,可能会发送 SQL 语句 (若数据库记录和 Session 中对象状态不一致,则发送 SQL,否则不发送 SQL)
I. 默认情况下,提交事务时,会先清理缓存,然后再提交事务
II. 若主键生成方式使用的是数据库底层的自增长方式,会在执行 Session 的 save() 方法时,就清理缓存,执行 INSERT 语句,而不是等到提交事务时。 Hibernate 要求和 Session 关联的对象必须有和数据表记录对应的 OID,这就意味着执行 save() 方法后,必须有 OID ,而底层自增长的方式生成主键,必须先执行 INSERT 才能获取主键值
//若使用 MySQL 底层自增的方式生成主键, save() 方法即会引起发送 INSERT 语句 session.save (news ); System.out.println (news.getId ());
III. 使用 HQL(Hibernate Query Language )查询记录时,不经过 Session 缓存!直接查询数据库,且要求查询的结果是最新的! 所以,在进行 HQL 查询之前需要先清理缓存 session.save(news);
//会导致清理缓存 News news2 = (News) session.createQuery ("FROM News n WHERE n.id = ?" ) .setInteger (0 , news.getId ()).uniqueResult ();
IV. commit() 和 flush() 方法的区别: flush 执行一系列 sql 语句,但不提交事务; commit 方法先调用flush() 方法,然后提交事务 . 意味着提交事务对数据库的操作永久保存下来。
④. refresh () 方法: 强制使 Session 缓存中的对象的状态和数据库记录保持一致。所以会强制发送一条 SELECT 语句。 注意,因为 MySQL 的默认的隔离级别为 READ REPTABLE 。所以需要设置事务的隔离级别才能看到实验的效果
!-- 设置 Hibernate 的事务的隔离级别, 设置为读已提交 --> property name ="connection.isolation" >2 property >

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

브라우저는 어떤 폴더에 동영상을 캐시하나요? 우리는 매일 인터넷 브라우저를 사용하다 보면 유튜브에서 뮤직비디오를 보거나 넷플릭스에서 영화를 보는 등 다양한 온라인 동영상을 자주 보게 됩니다. 이러한 비디오는 나중에 다시 재생할 때 빠르게 로드할 수 있도록 로드 프로세스 중에 브라우저에 의해 캐시됩니다. 그렇다면 문제는 캐시된 동영상이 실제로 어느 폴더에 저장되어 있느냐는 것입니다. 브라우저마다 캐시된 비디오 폴더를 다른 위치에 저장합니다. 아래에서는 몇 가지 일반적인 브라우저와 해당 브라우저를 소개합니다.

DNS(DomainNameSystem)는 인터넷에서 도메인 이름을 해당 IP 주소로 변환하는 데 사용되는 시스템입니다. Linux 시스템에서 DNS 캐싱은 도메인 이름과 IP 주소 간의 매핑 관계를 로컬로 저장하는 메커니즘으로, 도메인 이름 확인 속도를 높이고 DNS 서버의 부담을 줄일 수 있습니다. DNS 캐싱을 사용하면 시스템이 매번 DNS 서버에 쿼리 요청을 보낼 필요 없이 이후에 동일한 도메인 이름에 액세스할 때 IP 주소를 신속하게 검색할 수 있으므로 네트워크 성능과 효율성이 향상됩니다. 이 문서에서는 Linux에서 DNS 캐시를 보고 새로 고치는 방법과 관련 세부 정보 및 샘플 코드에 대해 설명합니다. DNS 캐싱의 중요성 Linux 시스템에서 DNS 캐싱은 중요한 역할을 합니다. 그 존재

제목: HTML 파일의 캐싱 메커니즘 및 코드 예제 소개: 웹 페이지를 작성할 때 브라우저 캐싱 문제에 자주 직면합니다. 이 기사에서는 HTML 파일의 캐싱 메커니즘을 자세히 소개하고 독자가 이 메커니즘을 더 잘 이해하고 적용할 수 있도록 몇 가지 특정 코드 예제를 제공합니다. 1. 브라우저 캐싱 원리 브라우저에서는 웹페이지에 액세스할 때마다 먼저 캐시에 웹페이지 복사본이 있는지 확인합니다. 있는 경우 웹페이지 콘텐츠를 캐시에서 직접 가져옵니다. 이것이 브라우저 캐싱의 기본 원칙입니다. 브라우저 캐싱 메커니즘의 이점

CPU(중앙 처리 장치), 메모리(Random Access Memory), 캐시 사이에는 긴밀한 상호 작용이 있으며, 이들은 함께 컴퓨터 시스템의 중요한 구성 요소를 형성합니다. 이들 간의 조정은 컴퓨터의 정상적인 작동과 효율적인 성능을 보장합니다. CPU는 컴퓨터의 두뇌로서 다양한 명령 실행과 데이터 처리를 담당합니다. 메모리는 데이터와 프로그램을 임시로 저장하여 빠른 읽기 및 쓰기 액세스 속도를 제공하고, 캐시는 버퍼링 역할을 하여 데이터 액세스 속도를 높입니다. 속도와 향상 컴퓨터의 CPU는 컴퓨터의 핵심 구성요소로 각종 명령, 산술연산, 논리연산 등을 수행하는 역할을 담당합니다. 컴퓨터의 '브레인'이라 불리며, 데이터를 처리하고 작업을 수행하는 데 중요한 역할을 합니다. 메모리는 컴퓨터에서 중요한 저장 장치이다.

PHPAPCu(php 캐시 대체)는 PHP 애플리케이션을 가속화하는 opcode 캐시 및 데이터 캐시 모듈입니다. 잠재력을 최대한 활용하려면 고급 기능을 이해하는 것이 중요합니다. 1. 일괄 작업: APCu는 동시에 많은 수의 키-값 쌍을 처리할 수 있는 일괄 작업 방법을 제공합니다. 이는 대규모 캐시 삭제 또는 업데이트에 유용합니다. //일괄적으로 캐시 키 가져오기 $values=apcu_fetch(["key1","key2","key3"]) //일괄적으로 캐시 키 지우기 apcu_delete(["key1","key2","key3"]) ;2 .캐시 만료 시간 설정: APCu를 사용하면 캐시 항목의 만료 시간을 설정하여 지정된 시간 후에 자동으로 만료되도록 할 수 있습니다.

SpringBoot는 사용 용이성과 빠른 개발로 잘 알려진 인기 있는 Java 프레임워크입니다. 그러나 애플리케이션의 복잡성이 증가함에 따라 성능 문제로 인해 병목 현상이 발생할 수 있습니다. springBoot 애플리케이션을 바람처럼 빠르게 생성할 수 있도록 이 문서에서는 몇 가지 실용적인 성능 최적화 팁을 공유합니다. 시작 시간 최적화 애플리케이션 시작 시간은 사용자 경험의 핵심 요소 중 하나입니다. SpringBoot는 캐싱 사용, 로그 출력 감소, 클래스 경로 검색 최적화 등 시작 시간을 최적화하는 여러 가지 방법을 제공합니다. application.properties 파일에 spring.main.lazy-initialization을 설정하면 됩니다.

jQuery.val()을 사용할 수 없는 문제를 해결하려면 구체적인 코드 예제가 필요합니다. 프론트 엔드 개발자에게는 jQuery를 사용하는 것이 일반적인 작업 중 하나입니다. 그중에서도 .val() 메서드를 사용하여 양식 요소의 값을 가져오거나 설정하는 것은 매우 일반적인 작업입니다. 그러나 특정한 경우에는 .val() 메서드를 사용하지 못하는 문제가 발생할 수 있습니다. 이 문서에서는 몇 가지 일반적인 상황과 해결 방법을 소개하고 구체적인 코드 예제를 제공합니다. 문제 설명 jQuery를 사용하여 프런트 엔드 페이지를 개발할 때 때때로 다음과 같은 문제가 발생할 수 있습니다.

브라우저 캐시 동영상을 내보내는 방법 인터넷의 급속한 발전으로 동영상은 사람들의 일상생활에서 없어서는 안 될 부분이 되었습니다. 웹을 탐색할 때 저장하거나 공유하고 싶은 비디오 콘텐츠를 자주 접하지만 비디오 파일이 브라우저의 캐시에만 존재할 수 있기 때문에 비디오 파일의 소스를 찾을 수 없는 경우가 있습니다. 그렇다면 브라우저 캐시에서 비디오를 어떻게 내보내나요? 이 기사에서는 몇 가지 일반적인 방법을 소개합니다. 먼저 브라우저 캐시라는 개념을 명확히 해야 합니다. 브라우저 캐시는 브라우저에서 사용자 경험을 개선하는 데 사용됩니다.
