延遲載入,快取與宣告式事務

2021-08-29 04:02:09 字數 3056 閱讀 5242

resultmap(一對一,一對多的關係自帶延遲載入,在開發裡面最常用的)

作用是:什麼時候用什麼時候載入

name

="lazyloadingenabled"

value

="true"

/>

name

="aggressivelazyloading"

value

="false"

/>

name

="lazyloadtriggermethods"

value="

"/>

(呼叫tostring無效時載入)

查詢主表的資訊(根據id來進行查詢,子查詢在resultmap(select="")如果是另乙個包引入進來要加上完整的包名和類名,關聯的字段)

呼叫其方法時,會走子查詢;

好處:提高載入的速度,同樣的資料,不用一直查詢資料庫

缺點;可能查詢出髒資料;

一級快取:(一級快取的作用域是針對於我們的sqlsession(出了sqlsession 就沒有一級快取);預設一級快取自動開啟;

如果是要關閉一級快取,需要呼叫其commit()方法;

配置二級快取要注意(settings 裡面配置兩句話(開啟快取配置的按鈕,第二個是要把你的物件序列化,

第三個就是要把你的namespace 配置 標籤,這樣就配置了二級快取(用二級快取的時候,一定要sqlsession.commit()(關閉一級快取,載入二級快取)),

步驟:在namespace 加上 cache;重新整理二級快取的方法:sqlsession.clearcache();禁用:usecache=「false」

自定義快取

spring的宣告式事務

事務:避免髒資料或者錯誤的資料提交到資料庫,一般讀取快取裡面的資料,容易產生髒資料

四大原則:原子性,隔離性,永續性,一致性;spring宣告式事務也支援這四大原則

class

=>

name

= value

=>

property

>

name

="sqlsessionfactory"

ref="sqlsessionfactory"

>

property

>

bean

>

class

=>

name

="basepackage"

value

=>

property

>

bean

>

spring 的宣告式事務:

事務:避免髒資料或錯誤的資料提交到資料庫,一般讀取快取裡面的資料容易產生髒資料

事務的四大原則:原子性,隔離性,一致性,永續性 宣告式事務也支援這四大原則

第一步:引入資料庫的配置資訊(datasource)

第二步:配置dao層

第三步:配置事務管理器datasourcetransactionmanager(引入資料來源資源,也就是datasource)

第四步:定義事務通知(一種不用註解,一種使用註解)

第一種:

<

tx:adviceid=

"txadvice"

transaction-manager

="transactionmanager"

>

<

tx:attributes

>

<

tx:method

name

="find*"

propagation

="supports"

/>

<

tx:method

name

="add*"

propagation

="required"

/>

<

tx:method

name

="del*"

propagation

="required"

/>

<

tx:method

name

="update*"

propagation

="required"

/>

<

tx:method

name

="*"

propagation

="required"

/>

tx:attributes

>

tx:advice

>

<

aop:config

>

<

aop:pointcutid=

"servicemethod"

expression

="execution(* com.offcn.service.*.*(..))"

/>

<

aop:advisor

advice-ref

="txadvice"

pointcut-ref

="servicemethod"

/>

aop:config

>

第二種:使用關鍵註解

<

context:component-scan

base-package

="com.offcn.service"

/>

<

tx:annotation-driven

/>

在類前面,也就是你的service的類上@transactional

再到你的方法上配置具體的 @transactional(propagation = propagation.required)等同於

前面寫過的註解

dao層註解@repository service層的@service @autowired(按型別) @qualifired(按名稱) @resource

Spring快取與宣告式事務管理

spring dao.xmlxmlns tx org schema tx org schema tx spring tx.xsd id transactionmanager class org.springframework.jdbc.datasource.datasourcetransaction...

mybatis延遲載入,快取

延遲載入又叫懶載入,也叫按需載入。也就是說先載入主資訊,在需要的時候,再去載入從資訊。在mybatis中,resultmap標籤 的association標籤和collection標籤具有延遲載入的功能。1.讀取配置檔案 inputstream is resources.getresourceass...

宣告式事務

宣告式事務編輯以方法為單位,進行事物控制 丟擲異常,事物回滾。最小的執行單位為方法。決定執行成敗是通過是否丟擲異常來判斷的,丟擲異常即執行失敗 宣告式事務 declarative transaction management 是spring提供的對程式事務管理的方式之一。spring的宣告式事務顧名...