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:
select-before-update="false" lazy="true">
看红色部分配置,这样可以在查询seal的时候延迟加载sealData。
延迟加载主要可以用在:
Hibernate3.x,lazy默认是打开的
Hibernate Lazy策略使用:标签,可以取值true/false/extra
load支持lazy,get不支持,无论持久化类设置与否,都会立即检索。
(1)class标签
默认为true
class上的Lazy,只对普通属性起作用,对集合和
即:如果一个类里有Set集合成员变量和需要用
如果在使用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的延迟策略来达到懒加载目的。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在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

hibernate和mybatis的差別:1、實作方式;2、效能;3、物件管理的比較;4、快取機制。詳細介紹:1、實作方式,Hibernate是一個完整的物件/關係映射解決方案,將物件與資料庫表進行映射,MyBatis則需要開發者手動編寫SQL語句以及ResultMap;2、效能,Hibernate在開發速度上可能比MyBatis快,因為Hibernate簡化了DAO層等等。

Hibernate的一對多和多對多Hibernate是一個優秀的ORM框架,它簡化了Java應用程式與關係型資料庫之間的資料存取。在Hibernate中,我們可以使用一對多和多對多的關係來處理複雜的資料模型。 Hibernate的一對多在Hibernate中,一對多關係是指一個實體類別對應多個另一個實體類別。例如,一個訂單(Order)可以對應多個訂單項目(OrderItem),一個使用者(User)可以對應多個訂單(Order)。要在Hibernate中實作一對多關係,需要在實體類別中定義一個集合屬性來存

2025年全球數字虛擬幣交易平台競爭激烈,本文根據交易量、安全性、用戶體驗等指標,權威發布2025年全球十大數字虛擬幣交易平台排行榜。 OKX憑藉強大的技術實力和全球化運營策略居首,Binance以高流動性和低費用緊隨其後。 Gate.io、Coinbase、Kraken等平台憑藉各自優勢穩居前列。榜單涵蓋Huobi、KuCoin、Bitfinex、Crypto.com和Gemini等交易平台,各有特色,但投資需謹慎。選擇平台需考慮安全性、流動性、費用、用戶體驗、幣種選擇及監管合規性等因素,理性投資

質因數 - 在數論中,正整數的質因數是精確整除該整數的質因數。找出這些數字的過程稱為整數分解或質因數分解。例 - 288 的質因數是:288=2x2x2x2x2

虛擬貨幣十大交易平台排行榜(2025年最新): 幣安:全球龍頭,高流動性,監管受關注。 OKX:龐大用戶基數,支持多種幣種,提供槓桿交易。 Gate.io:資深交易所,多種法幣支付方式,提供多種交易對和投資產品。 Bitget:衍生品交易所,高流動性,低費用。 火幣:老牌交易所,支持多種幣種和交易對。 Coinbase:美國知名交易所,受監管嚴格。 Phemex等等。

Hibernate是一個開放原始碼的ORM框架,它將關係型資料庫和Java程式之間的資料映射相互綁定,這樣可以讓開發人員更方便地存取資料庫中的資料。使用Hibernate框架可以大幅減少編寫SQL語句的工作,並提高應用程式的開發效率和可重複使用性。以下從以下幾個方面來介紹Hibernate框架。一、Hibernate框架的優點物件關係映射,隱藏資料庫存取細節,使開發
