Spring整合JDBC與Spring管理事務

2021-08-21 06:00:30 字數 4353 閱讀 1404

1.     開始註解模式

2.     註解切面

再通知上面加上乙個註解@aspect

@aspect

public class myadvice

再通知的方法上面加上切點

五種

@before(表示式)@afterreturning @around
@after @afterthrowing
@before("myadvice.pc()")

publicvoid before()

書寫表示式有兩種

1.     直接寫

@ before ("execution(*cn.hd.springproxyannotation.impl.*serviceimpl.*(..))")

public voidbefore(){

system.out.println("在目標物件方法前呼叫");

2.     配置乙個切點 呼叫該類的方法獲得切點

@pointcut("execution(* cn.hd.springproxyannotation.impl.*serviceimpl.*(..))")

publicvoid pc(){

@before("myadvice.pc()")

publicvoid before(){

system.out.println("在目標物件方法前呼叫");

spring是乙個容器

spring有乙個jar包提供了乙個叫做jdbctemplate模板所以他能對資料庫操作。

spring還提供了很多模板 針對hebernate,mybatis模板。jdbcemplate跟dbutols中的queryrunner極度相似

整合jdbc

1.     導包

2.     c3p0,jdbc驅動包 spring-jdbc spring-tx

3     使用乙個jdbctemplate模板對資料庫進行操作,需要資料庫連線

給他連線兩種方式  1.connection  2.datasource

public void  fun() throwspropertyvetoexception {

combopooleddatasource datasource = new combopooleddatasource();

datasource.setdriverclass("com.mysql.jdbc.driver");

datasource.setjdbcurl("jdbc:mysql://localhost:3306/springjdbc");

datasource.setuser("root");

datasource.setpassword("123");

jdbctemplate jdbctemplate = new jdbctemplate();

jdbctemplate.setdatasource(datasource);

string sql="insert  intot_user(uname,ubalance) values ('白學光',12138)";

jdbctemplate.update(sql);

spring

管理物件的方式

使用spring管理物件開發,一定要搞清楚物件之間的依賴關係。

將對應的bean類配置到配置檔案當中 將屬性的注入寫好

jdbctemplateapi

增刪改:呼叫jdbctemplate update方法 如果有引數直接按順序寫在方法後面即可

jdbctemplate.update(sql, user.getuname(),user.getubalance());

@nullable

@override

public user maprow(resultset resultset, int i) throws sqlexception {

user user = new user();

user.setuname(resultset.getstring("uname"));

user.setubalance(resultset.getint("ubalance"));

user.setuid(resultset.getint("uid"));

return user;

return list;

spring

提供了乙個父類jdbcdaosupport這個父類中,提供了jdbctemplate模板

在實現dao類時可以直接使用。並且在配置bean時,依賴關係改變,dao類時直接依賴於

datasource

。db,properties 書寫配置檔案要注意  健名要加字首,避免和關鍵字重複

location是配置檔案的位址

獲得配置檔案的位址

platformtransactionmanager  幫助我們管理任意平台的事務

jdbc  datasourcetransactionmanger

hibernate hibernatetransactionmanager

…    …transactionmanager

(1)     一致性 (2)原子性(3)永續性 (4)隔離性

事務安全:

事務執行緒安全:髒讀   不可重複讀 幻讀  讀未提交

隔離級別:   1  2  4(讀已提交)  8

所有事務的操作有三步:

開啟事務

提交事務

回滾事務

spring管理事務 利用的是spring aop思維 將事務的操作織入到目標物件中

spring管理 事務的屬性

隔離級別  是否唯讀  事務的傳播行為(7種)

spring管理事務的方式:

(1)     **式

1.     配置事務管理物件

2.     配置事務管理的模板

3.     在service中注入模板物件 然後呼叫模板物件的execute

@resource(name = "transactiontemplate")

privatetransactiontemplate tt;

@override

publicvoid transform(integer form, integer to, integer money) {

tt.execute(new transactioncallbackwithoutresult() {

@override

protected void dointransactionwithoutresult(transactionstatustransactionstatus) {

userdao.increase(to,money);

userdao.decrease(form,money);

(2)     

xml配置

1.     事務管理的物件

2.     事務的通知

標籤名 tx:advice     id給當前的事務起個標記  tran…配置剛剛的事務管理物件

配置引數:method  name 可以是具體某個方法(方法名)比較麻煩

可以使用萬用字元的方法去配置

add*  delate* update*get*

find*  persist* remove*modify*

要求的你service的命名必須規範

isolation 隔離級別使用預設即可 4級別 default

propagation事務的傳播行為 required

read-only是否唯讀  如果查詢 true  否則為false

3.     將通知織入到目標物件   注意配置切面不再使用aop:aspect而是advisor

(3)     

註解配置

1.     事務管理物件

2.     註解

3.     在想要設定事務的地方加上註解

@transactional(isolation =isolation.default,propagation = propagation.required,readonly = false)

這個註解有兩個位置

1.在類上面 該類中所有的方法都會使用以上引數的事務

2.方法名上面 該方法使用引數中的事務如果兩個都設定以方法名上面的事務為準

詳解spring與jdbc整合操作

先上一段簡單示例 public class mytemplate public void setdatasource datasource datasource public void insert string sql throws sqlexception dao類 public class p...

簡述jdbc,並且spring整合jdbc

首先需要寫好我們經常使用的crud方法,也稱為jdbc模板。在日常的開發中我們只要呼叫這些已經寫好的jdbc模板方法,就可以很好的加快編碼效率。如下 使用jdbc模板實現增刪改查 public class userdaoimpl extends jdbcdaosupport implements u...

Struts與Spring的整合

struts核心是mvc,struts與spring的整合就是把struts的action交給spring去管理,從而達到簡化程式的目的 一 配置spring上下文和監聽 配置spring上下文和監聽有兩種方式 方式一 web.xml web主要配置檔案 而主要用於監聽web的上下文,可用下面 代替...