返回顶部
首页 > 资讯 > 数据库 >Hibernate问题浅析
  • 759
分享到

Hibernate问题浅析

2024-04-02 19:04:59 759人浏览 薄情痞子
摘要

1、什么是SessionFactory?什么是Session?httpsession和hibernate的session的有什么区别?    SessionFactory接口负责初始化H

1、什么是SessionFactory?什么是Session?httpsession和hibernate的session的有什么区别?

    SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。----百度百科

   在hibernate中的session并不是Http中所说的session,一般把httpsession对象称为用户会话。。。

而hibernate中的Session呢?是用来表示,应用程序和数据库的一次交互(会话)。在这个Session中,包含了一般的持久化方法(CRUD)。而且,Session是一个轻量级对象(线程安全),通常将每个Session实例和一个数据库事务绑定,也就是每执行一个数据库事务,都应该先创建一个新的Session实例,在使用Session后,还需要关闭Session

2、n+1问题?

一般而言说n+1意思是,无论在一对多还是多对一当查询出n条数据之后,每条数据会关联的查询1次他的关联对象,这就叫做n+1。

下面是3中解决方案:


    1. 设置@ManyToOne的fetch属性值为fetchType.LAZY,这种方式解决后,后面的n条sql语句按需而发。但是有个弊端,就是如果需要级联查询就无法获取级联对象了。

    2. 设置@BatchSize(size=5)(该注解要加在类上面,跟@Entity在同一位置),这样发出的sql语句减少。这个设置在一定程度上提高了效率。

    3.  join fetch , 如 使用"from Student s left join fetch s.group g", 进行表连接查询,此时就发1条SQL语句。

    4.  使用QBC查询,默认效果与3相同。

              1)fetch="select" 会另外发出一条语句查询集合

              2) 设置 fetch="join" 采用外连接集合的 lazy 失效

              3) 这只 fetch="subselect" 另外发出一条 select 语句抓取前面查询到的所有的实体对象的关联集合 fetch只对 HQL 查询产生影响其他的则不会

 

3、Hibernate中的get和load加载有什么区别?

当我们使用session.load()方法来加载一个对象时,此时并不会发出sql语句,当前得到的这个对象其实是一个代理对象,这个代理对象只保存了实体对象的id值,只有当我们要使用这个对象,得到其它属性时,这个时候才会发出sql语句,从数据库中去查询我们的对象。

相对于load的延迟加载方式,get就直接的多,当我们使用session.get()方法来得到一个对象时,不管我们 使不使用这个对象,此时都会发出sql语句去从数据库中查询出来。

 

4、脏读和幻读?

脏读:是指当一个事务正在访问数据,且对数据做了修改,但是还没有提交到数据库。另一个事务查询到这个数据、这个数据就是脏数据,依靠这个数据所做的操作就是不正确的、

幻读:比如第一个事务对数据库的全部行进行了修改,同时第二个事务插入一条数据到数据库中,这时第一个事务就会发现,数据库中有一条记录没有被修改,像发生了幻觉一样、


您可能感兴趣的文档:

--结束END--

本文标题: Hibernate问题浅析

本文链接: https://www.lsjlt.com/news/50940.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Hibernate问题浅析
    1、什么是SessionFactory?什么是Session?httpsession和hibernate的session的有什么区别?    SessionFactory接口负责初始化H...
    99+
    2024-04-02
  • hibernate性能问题
    java.lang.NoSuchMethodError: com.test.People.getHibernateLazyInitializer()Lorg/hibernate/proxy/LazyInitializer;最近系统在linu...
    99+
    2023-06-03
  • jdbc.properties配置问题 hibernate
    使用ORACLE时的配置关键点:首先driverClassName=oracle.jdbc.driver.OracleDriver这个oracle.jdbc.driver.OracleDriver需要保证在...
    99+
    2024-04-02
  • Nodejs下DNS缓存问题浅析
    无意间看到一个文章,是关于nodejs下发送http请求不会缓存dns结果的。这意味着,如果你基于nodejs写了一个http采集程序,不提供dns缓存则会让每次请求都傻傻的重复解析域名为ip地址。听起来会...
    99+
    2022-06-04
    缓存 Nodejs DNS
  • 深入浅析python继承问题
    有如下的代码: class p1: def __init__(self,a,b): print("init in p1") self.a1=a self.b1=b self.f1() def f1(se...
    99+
    2022-06-04
    python
  • 浅析Linux中重定向问题
    简介 在计算领域,重定向是大多数命令行解释器所具有的功能,包括各种可以将标准流重定向用户规定地点的Unix shells。类Unix操作系统的程序可以通过dup2系统调用完成重定向,或者通过缺少...
    99+
    2022-06-04
    重定向 Linux
  • 浅析linux安装conda的问题
    1.下载安装脚本(按自己的情况选择) Miniconda — Conda documentation 2.运行下载好的安装脚本 执行以下代码,赋予脚本权限 chmod 777 Miniconda3-py38...
    99+
    2022-06-04
    linux安装conda
  • 深入浅析Hibernate中的配置文件
    今天就跟大家聊聊有关深入浅析Hibernate中的配置文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先我们看一下hibernate的主配置文件<!DOCTYPE hibe...
    99+
    2023-05-31
    hibernate te
  • 如何浅析C++类访问控制问题
    本篇文章给大家分享的是有关如何浅析C++类访问控制问题,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在介绍C++类之前,首先要了解下什么是C++类?其实C++类是将数据成员和进...
    99+
    2023-06-17
  • 浅析Hyper-V安装CentOS 8问题
    CentOS 8 已经发布很长时间了,作为一直折腾linux虚拟机的一员怎么少的了我。 环境&准备工作 系统:Win 10 pro 19H1 虚拟机:Hyper-V ISO:CentOS 8 问题...
    99+
    2022-06-04
    Hyper-V安装CentOS 8
  • 如何解决Hibernate Annotation问题
    这篇文章主要介绍“如何解决Hibernate Annotation问题”,在日常操作中,相信很多人在如何解决Hibernate Annotation问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何解决H...
    99+
    2023-06-17
  • Hibernate session问题怎么解决
    这篇文章主要介绍“Hibernate session问题怎么解决”,在日常操作中,相信很多人在Hibernate session问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hibernate s...
    99+
    2023-06-17
  • Hibernate常见问题有哪些
    这篇文章主要介绍“Hibernate常见问题有哪些”,在日常操作中,相信很多人在Hibernate常见问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hibernate常见问题有哪些”的疑惑有所帮助!...
    99+
    2023-06-17
  • 深入浅析Java中的Hibernate事务管理
    深入浅析Java中的Hibernate事务管理?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。环境与版本hibernate 版本:Hibernate 4.2.2 (下载后的文...
    99+
    2023-05-31
    java hibernate 事务管理
  • 浅析Node.js中的内存泄漏问题
    这篇文章是由Mozilla的Identity团队带来的 A Node.JS Holiday Season系列文章的首篇,该团队上个月发布了 Persona的第一个测试版本。在开发Persona时我们构建了...
    99+
    2022-06-04
    内存 Node js
  • 关于mysql时间区间问题浅析
    目录一、between……and……二、&lt;和&gt;问题三、在java代码中拼接四、转变格式查询附:My...
    99+
    2024-04-02
  • 浅析Golang中字符串拼接问题
    目录1.概述2.Golang中字符串拼接的方式3.总结1.概述 Go的字符串是一个不可改变的数据结构,这和其他语言如JAVA,C++等的设定很类似.总体来说,有如下五种拼接方式,下面...
    99+
    2023-05-15
    Golang字符串拼接 Go 字符串拼接 Golang字符串
  • 浅析Jmeter多用户token使用问题
    目录背景场景接口登录接口业务接口登录接口处理业务接口处理写在最后背景 在测试的时候,经常会有模拟用户登录,拿到用户 token 后再去请求接口的场景。 这个模拟用户登录就会分为两种,...
    99+
    2024-04-02
  • Vue中methods的this指向问题浅析
    如果是组件的话,将会是VueComponent实例对象,Vue和VueComponent两个类其实差不都,今后会另外开章节描述两者差别,这里先飘过。 比如下面的简单的一个demo代码...
    99+
    2022-11-13
    Vue methods Vue methods this指向
  • Hibernate性能问题怎么解决
    本篇内容主要讲解“Hibernate性能问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hibernate性能问题怎么解决”吧!在使用Hibernate进行分页的过程中,如果你收到如下...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作