搜索
首页数据库mysql教程Hibernate配置---检索策略

Hibernate是一个持久层的框架,不依赖任何容器,支持对象到数据库表的映射,ORM。支持开发中的增删改查操作,将基本的JDBC操作进

Hibernate是一个持久层的框架,不依赖任何容器,支持对象到数据库表的映射,ORM。

支持开发中的增删改查操作,将基本的JDBC操作进行封装,可以通过配置hibernate.cfg.xml来方便的切换数据库。做到了系统和数据库的解偶。

支持数据库连接池,防止高并发导致系统响应慢和系统崩溃。当多用户同时访问应用时,每次请求都会开辟一个连接对象,当开启和关闭时都会有时间的消耗,如果没有访问数据库的限制,那么将导致系统响应越来越慢,内存如果没有及时回收导致系统崩溃。hibernate常用的为c3p0连接池,通过在hibernate.cfg.xml中配置。

检索策略:

多对一配置策略:

在many-to-one元素中可以指定outer-join="true" lazy="false",采用迫切做外连接的方式检索,,使用一条语句查询出与之相关的一端,默认为立即检索,会分别发出语句查询相关联的表。lazy只可以取值:proxy,no-proxy,false。如果要延迟加载一的一端,那么需要在many-to-one中配置outer-join="proxy" ,在one-to-many端的类属性上配置lazy=true

one-to-many元素中可以在set上指定outer-join="true" lazy="false",采用迫切左外连接方式检索,默认立即检索。

如果将lazy设置为true,那么无论outer-join为什么值,都将采用延迟加载。

一对一关联延迟加载配置:

one-to-one

在一端Seal类:

  
   cascade="save-update" lazy="proxy" constrained="true"/>

在另一端SealData:

  table="tsealdata" dynamic-update="true" dynamic-insert="true"
  select-before-update="false" lazy="true">

看红色部分配置,这样可以在查询seal的时候延迟加载sealData。

延迟加载主要可以用在:

Hibernate3.x,lazy默认是打开的
Hibernate Lazy策略使用:
标签,可以取值true/false
标签,可以取值true/false
标签,可以取值true/false/extra
单端关联,可以取值:false/proxy/noproxy
load支持lazy,get不支持,无论持久化类设置与否,都会立即检索。

(1)class标签

默认为true
class上的Lazy,只对普通属性起作用,对集合和 不起作用
即:如果一个类里有Set集合成员变量和需要用 来映射的成员变量,即使在class里设置lazy为false,他们在使用之前也不会加载。需要单独设置lazy,也就是lazy的另外两个用法。
如果在使用load加载了某个对象,但是没有使用,即没有发出SQL语句,就把session给关了,此时,如果再使用这个对象就会抛出LazyInitalizationException。因为对象并没有加载上来,因为使用了lazy策略,只是加载了类的一个代理子类。

(2)集合

默认为true
默认为true情况下,只要使用到了Set对象,就会把整个set全部查询出来。
false情况下,不使用Lazy,查询Lazy所属的对象时,set就会被查询上来。需要类增强工具。
extra情况下,比较智能,根据查询的内容,生成不同的SQL语句。效率会高一些。

(3)单端关联

默认为proxy
false:不使用Lazy。
noproxy:需要类增强工具

(4)property

默认false
true:较少使用,如果某个字段是内容量比较大,可以设置为true,在真正使用的时候再加载。可以提高效率。,但是需要hibernate的工具包,org.hibernate.tool.instrument.cglib借助Ant来对编译完成的class文件做一个增强,实际上是在class文件中加入一些cglib代码,这样hibernate可以在运行时判断属性是否需要立即加载,否则延迟加载。为了达到这个目的需要每次都编译增强,不利于项目维护。采用的方法为:将大字段抽取到一张表里面,然后和基础表建立一对一关联关系,具体是业务来定,当查询的时候就可以借助Hibernate的延迟策略来达到懒加载目的。

Hibernate配置---检索策略

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
您可以使用哪些工具来监视MySQL性能?您可以使用哪些工具来监视MySQL性能?Apr 23, 2025 am 12:21 AM

如何有效监控MySQL性能?使用mysqladmin、SHOWGLOBALSTATUS、PerconaMonitoringandManagement(PMM)和MySQLEnterpriseMonitor等工具。1.使用mysqladmin查看连接数。2.用SHOWGLOBALSTATUS查看查询数。3.PMM提供详细性能数据和图形化界面。4.MySQLEnterpriseMonitor提供丰富的监控功能和报警机制。

MySQL与SQL Server有何不同?MySQL与SQL Server有何不同?Apr 23, 2025 am 12:20 AM

MySQL和SQLServer的区别在于:1)MySQL是开源的,适用于Web和嵌入式系统,2)SQLServer是微软的商业产品,适用于企业级应用。两者在存储引擎、性能优化和应用场景上有显着差异,选择时需考虑项目规模和未来扩展性。

在哪些情况下,您可以选择SQL Server而不是MySQL?在哪些情况下,您可以选择SQL Server而不是MySQL?Apr 23, 2025 am 12:20 AM

在需要高可用性、高级安全性和良好集成性的企业级应用场景下,应选择SQLServer而不是MySQL。1)SQLServer提供企业级功能,如高可用性和高级安全性。2)它与微软生态系统如VisualStudio和PowerBI紧密集成。3)SQLServer在性能优化方面表现出色,支持内存优化表和列存储索引。

MySQL如何处理角色集和碰撞?MySQL如何处理角色集和碰撞?Apr 23, 2025 am 12:19 AM

mySqlManagesCharacterSetsetSandCollat​​ionsyutusututf-8asthEdeFault,允许ConfigurationAtdataBase,table和columnlevels,AndrequiringCarefullageLignmentToavoidMismatches.1)setDefeaultCharactersetTercharactersetEtCollacterSeteTandColletationForAdataBase.2)conformentcollecharactersettersetertersetcollat​​ertersetcollat​​ioncollat​​ion

MySQL中有什么触发器?MySQL中有什么触发器?Apr 23, 2025 am 12:11 AM

MySQL触发器是与表相关联的自动执行的存储过程,用于在特定数据操作时执行一系列操作。1)触发器定义与作用:用于数据校验、日志记录等。2)工作原理:分为BEFORE和AFTER,支持行级触发。3)使用示例:可用于记录薪资变更或更新库存。4)调试技巧:使用SHOWTRIGGERS和SHOWCREATETRIGGER命令。5)性能优化:避免复杂操作,使用索引,管理事务。

您如何在MySQL中创建和管理用户帐户?您如何在MySQL中创建和管理用户帐户?Apr 22, 2025 pm 06:05 PM

在MySQL中创建和管理用户账户的步骤如下:1.创建用户:使用CREATEUSER'newuser'@'localhost'IDENTIFIEDBY'password';2.分配权限:使用GRANTSELECT,INSERT,UPDATEONmydatabase.TO'newuser'@'localhost';3.修正权限错误:使用REVOKEALLPRIVILEGESONmydatabase.FROM'newuser'@'localhost';然后重新分配权限;4.优化权限:使用SHOWGRA

MySQL与Oracle有何不同?MySQL与Oracle有何不同?Apr 22, 2025 pm 05:57 PM

MySQL适合快速开发和中小型应用,Oracle适合大型企业和高可用性需求。1)MySQL开源、易用,适用于Web应用和中小型企业。2)Oracle功能强大,适合大型企业和政府机构。3)MySQL支持多种存储引擎,Oracle提供丰富的企业级功能。

与其他关系数据库相比,使用MySQL的缺点是什么?与其他关系数据库相比,使用MySQL的缺点是什么?Apr 22, 2025 pm 05:49 PM

MySQL相比其他关系型数据库的劣势包括:1.性能问题:在处理大规模数据时可能遇到瓶颈,PostgreSQL在复杂查询和大数据处理上表现更优。2.扩展性:水平扩展能力不如GoogleSpanner和AmazonAurora。3.功能限制:在高级功能上不如PostgreSQL和Oracle,某些功能需要更多自定义代码和维护。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

禅工作室 13.0.1

禅工作室 13.0.1

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

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 英文版

SublimeText3 英文版

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

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用