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的宣告式事務顧名...