新聞中心
Spring Framework是面向企業(yè)應(yīng)用開發(fā)的Java開發(fā)框架,它提供了很多功能豐富的組件和工具,使得開發(fā)人員可以快速地構(gòu)建高效穩(wěn)定的應(yīng)用程序。其中,數(shù)據(jù)庫連接配置是一個(gè)非常關(guān)鍵的部分,它直接影響著應(yīng)用程序的性能和穩(wěn)定性。本文將詳細(xì)介紹Spring本地?cái)?shù)據(jù)庫連接配置的一些重要特性和技巧,希望能對開發(fā)人員有所幫助。

創(chuàng)新互聯(lián)成都企業(yè)網(wǎng)站建設(shè)服務(wù),提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作網(wǎng)站開發(fā),網(wǎng)站定制,建網(wǎng)站,網(wǎng)站搭建,網(wǎng)站設(shè)計(jì),成都響應(yīng)式網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì)師打造企業(yè)風(fēng)格網(wǎng)站,提供周到的售前咨詢和貼心的售后服務(wù)。歡迎咨詢做網(wǎng)站需要多少錢:028-86922220
1. 數(shù)據(jù)庫驅(qū)動
在進(jìn)行數(shù)據(jù)庫連接配置之前,首先需要導(dǎo)入相應(yīng)的數(shù)據(jù)庫驅(qū)動。Spring自身并不提供數(shù)據(jù)庫連接池,而是使用第三方的實(shí)現(xiàn)。常見的數(shù)據(jù)庫連接池有:HikariCP、C0、DBCP2等。這里我們以HikariCP為例進(jìn)行講解。
在使用HikariCP時(shí),首先需要在pom.xml文件中添加如下依賴:
“`xml
com.zaxxer
HikariCP
3.4.5
“`
2. 數(shù)據(jù)源配置
在Spring中,我們使用DataSource對象來管理數(shù)據(jù)庫連接。DataSource是一個(gè)接口,它定義了一系列獲取連接、釋放連接的方法。對于使用HikariCP進(jìn)行連接池管理的情況下,我們需要配置HikariDataSource對象。
“`xml
“`
在上面的xml配置中,我們配置了一個(gè)id為dataSource的HikariDataSource對象。其中,driverClassName、jdbcUrl、username和password是連接數(shù)據(jù)庫的必要參數(shù)。maximumPoolSize表示連接池中更大的連接數(shù)。這里設(shè)置為10,可以根據(jù)實(shí)際情況進(jìn)行調(diào)整。
在配置中,我們使用了${}占位符,這是為了將配置文件中的變量值注入到配置中。需要在項(xiàng)目中定義一個(gè)properties文件,將配置參數(shù)以鍵值對的方式進(jìn)行定義,如下:
“`properties
driverClassName=com.mysql.cj.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/test?useSSL=false&characterEncoding=utf8&serverTimezone=UTC
username=root
password=root
“`
在代碼中,使用該方式獲取用戶配置值:
“`java
@PropertySource(“classpath:db.properties”)
@Configuration
public class AppConfig {
@Value(“${driverClassName}”)
private String driverClassName;
@Value(“${jdbcUrl}”)
private String url;
@Value(“${username}”)
private String username;
@Value(“${password}”)
private String password;
……
}
“`
3. JdbcTemplate
JdbcTemplate是Spring提供的一個(gè)簡單易用的JDBC操作工具類。它封裝了JDBC的操作過程,提供了很多操作數(shù)據(jù)庫的方法。在使用JdbcTemplate時(shí),需要將Datasource對象傳入其中。
“`java
@Configuration
public class AppConfig {
@Autowired
private DataSource dataSource;
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource);
}
}
“`
通過上面的配置,我們可以在代碼中注入JdbcTemplate對象,然后使用它進(jìn)行數(shù)據(jù)庫的操作。例如:
“`java
@Autowired
private JdbcTemplate jdbcTemplate;
public void insertUser(User user) {
String sql = “INSERT INTO user(name,age,eml) VALUES(?,?,?)”;
jdbcTemplate.update(sql, user.getName(), user.getAge(), user.getEml());
System.out.println(“User added to the database, id is:”+user.getId());
}
“`
4. 事務(wù)管理
在進(jìn)行數(shù)據(jù)庫操作時(shí),往往需要考慮事務(wù)的一致性問題。Spring提供了事務(wù)管理的功能,它可以幫助我們處理事務(wù)的提交、回滾和傳播等問題,使得數(shù)據(jù)庫操作更加的可靠和安全。
在使用Spring事務(wù)管理時(shí),需要進(jìn)行如下的配置:
“`java
@Configuration
@EnableTransactionManagement
public class AppConfig {
@Autowired
private DataSource dataSource;
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource);
}
@Bean
public PlatformTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}
“`
上面的配置中,我們使用@EnableTransactionManagement注解開啟事務(wù)管理的功能。在之前的JdbcTemplate配置中,我們已經(jīng)將DataSource對象注入到容器中,這里再次使用它創(chuàng)建一個(gè)DataSourceTransactionManager對象,并將其注入到容器中。在進(jìn)行事務(wù)管理的操作時(shí),可以將它注入到需要進(jìn)行事務(wù)控制的方法中。
5.
本文簡單介紹了Spring本地?cái)?shù)據(jù)庫連接配置的一些重要特性和技巧,包括數(shù)據(jù)庫驅(qū)動的導(dǎo)入、數(shù)據(jù)源配置、JdbcTemplate的使用、事務(wù)管理等。通過本文的學(xué)習(xí),相信讀者已經(jīng)掌握了如何在Spring中進(jìn)行數(shù)據(jù)庫操作的技巧。在具體的開發(fā)過程中,讀者可以根據(jù)實(shí)際需要進(jìn)行相應(yīng)的配置和調(diào)整。祝大家愉快地開發(fā)!
相關(guān)問題拓展閱讀:
- 如何使用c3p0+spring連接oracle數(shù)據(jù)庫
- spring 怎么動態(tài)配置 連接不同的數(shù)據(jù)庫.oracle 或是mysql
如何使用c3p0+spring連接oracle數(shù)據(jù)庫
?
使用c3p0+spring連接oracle數(shù)據(jù)庫的方法及配置:
1、C0數(shù)據(jù)源與Hibernate一同發(fā)布,需要包c(diǎn)3p0-0.9.0.4.jar。
C0的配置,xml文件片段如下:
bean>
2、C0有以下配置屬性,通過這些屬性,可以對數(shù)據(jù)源進(jìn)行各種有效的控制:
acquireIncrement:當(dāng)連接池中的連接用完散唯跡時(shí),C0一次性創(chuàng)建新連接的數(shù)目;
acquireRetryAttempts:定義在從數(shù)據(jù)庫獲取新連接失敗后重復(fù)嘗試獲取的次數(shù),默認(rèn)為30;
acquireRetryDelay:兩次連接中間隔時(shí)間,單位毫秒,默認(rèn)為1000;
autoCommitOnClose:連接關(guān)閉時(shí)默認(rèn)將所有未提交的操作回滾。默認(rèn)為false;
automaticTestTable: C0將建一張名為Test的空表,并使用其自帶的查詢語句進(jìn)行測試。如果定義了這個(gè)參數(shù),那么屬性preferredTestQuery將被忽略。 你 不能在這張Test表上進(jìn)行任何操作,它將中為C0測試所用,默認(rèn)為null;
breakAfterAcquireFailure: 獲取連接失敗將會引起所有等待獲取連接的線程拋出異常。但是數(shù)據(jù)源仍有效保山埋留,并在下次調(diào) 用getConnection()的時(shí)候繼續(xù)嘗試獲取連 接。如果設(shè)為沖并true,那么在嘗試獲取連接失敗后該數(shù)據(jù)源將申明已斷開并永久關(guān)閉。默認(rèn)為 false;
checkoutTimeout:當(dāng)連接池用完時(shí)客戶端調(diào)用getConnection()后等待獲取新連接的時(shí)間,超時(shí)后將拋出SQLException,如設(shè)為0則無限期等待。單位毫秒,默認(rèn)為0;
connectionTesterClassName: 通過實(shí)現(xiàn)ConnectionTester或QueryConnectionTester的類來測試連接,類名需設(shè)置為全限定名。默認(rèn)為 com.mchange.v2.C0.impl.DefaultConnectionTester;
idleConnectionTestPeriod:隔多少秒檢查所有連接池中的空閑連接,默認(rèn)為0表示不檢查;
initialPoolSize:初始化時(shí)創(chuàng)建的連接數(shù),應(yīng)在minPoolSize與maxPoolSize之間取值。默認(rèn)為3;
maxIdleTime:更大空閑時(shí)間,超過空閑時(shí)間的連接將被丟棄。為0或負(fù)數(shù)則永不丟棄。默認(rèn)為0;
maxPoolSize:連接池中保留的更大連接數(shù)。默認(rèn)為15;
maxStatements: JDBC的標(biāo)準(zhǔn)參數(shù),用以控制數(shù)據(jù)源內(nèi)加載的PreparedStatement數(shù)量。但由于預(yù)緩存的Statement屬 于單個(gè)Connection 而不是整個(gè)連接池。所以設(shè)置這個(gè)參數(shù)需要考慮到多方面的因素,如果maxStatements與 maxStatementsPerConnection
均為0,則緩存被關(guān)閉。默認(rèn)為0;
maxStatementsPerConnection:連接池內(nèi)單個(gè)連接所擁有的更大緩存Statement數(shù)。默認(rèn)為0;
numHelperThreads:C0是異步操作的,緩慢的JDBC操作通過幫助進(jìn)程完成。擴(kuò)展這些操作可以有效的提升性能,通過多線程實(shí)現(xiàn)多個(gè)操作同時(shí)被執(zhí)行。默認(rèn)為3;
preferredTestQuery:定義所有連接測試都執(zhí)行的測試語句。在使用連接測試的情況下這個(gè)參數(shù)能顯著提高測試速度。測試的表必須在初始數(shù)據(jù)源的時(shí)候就存在。默認(rèn)為null;
propertyCycle: 用戶修改系統(tǒng)配置參數(shù)執(zhí)行前最多等待的秒數(shù)。默認(rèn)為300;
testConnectionOnCheckout: 因性能消耗大請只在需要的時(shí)候使用它。如果設(shè)為true那么在每個(gè)connection提交的時(shí)候都 將校驗(yàn)其有效性。建議使用 idleConnectionTestPeriod或automaticTestTable
等方法來提升連接測試的性能。默認(rèn)為false;
testConnectionOnCheckin:如果設(shè)為true那么在取得連接的同時(shí)將校驗(yàn)連接的有效性。默認(rèn)為false。
明確一點(diǎn):
僅使咐孫用C0+Spring還無法連接到Oracle數(shù)據(jù)庫。連接Oracle數(shù)據(jù)庫需要緩臘提供Oracle的JDBC實(shí)現(xiàn),因此,首先需要下載ojdbc的jar包
然衡哪鏈后,在spring配置文件中配置c3p0,來連接Oracle數(shù)據(jù)庫了。
1. 首先是jdbc.properties屬性文件的編寫,便于數(shù)據(jù)庫移植:
datasource.driverClassName=oracle.jdbc.driver.OracleDriver
datasource.url=jdbc:oracle:thin:@10.6.1.11:1521:student
datasource.username=zs
datasource.password=zs
datasource.defaultAutoCommit=true
hibernate.dialect=org.hibernate.dialect.Oracle9Dialect
#當(dāng)臘拿連接池中的連接耗盡的時(shí)候c3p0一次同時(shí)獲取的連接數(shù)。Default: 3
c3p0.acquireIncrement=5
#初始化時(shí)獲取三個(gè)連接,取值應(yīng)在minPoolSize與maxPoolSize之間。Default: 3
c3p0.initialPoolSize=10
#每60秒檢查所有連接池中的空閑連接。Default: 0
c3p0.idleConnectionTestPeriod=600
#-連接池中保留的最小連接數(shù)。
c3p0.minPoolSize=5
#連接池中保留的更大連接數(shù)。Default: 15
c3p0.maxPoolSize=50
#JDBC的標(biāo)準(zhǔn)參數(shù),用以控制數(shù)據(jù)源內(nèi)加載的PreparedStatements數(shù)量。但由于預(yù)緩存的statements
#屬于單個(gè)connection而不是整個(gè)連接池。所以設(shè)置這個(gè)參數(shù)需要考慮到多方面的因素。
#如果maxStatements與maxStatementsPerConnection均為0,則緩存被關(guān)閉。Default: 0
c3p0.maxStatements=100
#c3p0是異步操作的,緩慢的JDBC操作通過幫助進(jìn)程完成。擴(kuò)展這些操作可以有效的提升性能
#通過多線程實(shí)現(xiàn)多個(gè)操作同時(shí)被執(zhí)行。Default: 3
c3p0.numHelperThreads=10
#更大空閑時(shí)間,60秒內(nèi)未使用則連接被丟棄。若為0則永不丟棄。Default: 0
c3p0.maxIdleTime=600
#hibernate.dialect=org.hibernate.dialect.SQLServerDialect
hibernate.jdbc.batch_size=25
hibernate.jdbc.fetch_size=50
hibernate.show_sql=true
hibernate.connection.release_mode=after_transaction
2. 其次是spring配置文件的數(shù)據(jù)源配置:
/WEB-INF/classes/conf/jdbc/jdbc.properties
${datasource.driverClassName}
譽(yù)州
${datasource.url}
${datasource.username}
${datasource.password}
${c3p0.acquireIncrement}
${c3p0.initialPoolSize}
${c3p0.minPoolSize}
${c3p0.minPoolSize}
${c3p0.maxPoolSize}
${c3p0.idleConnectionTestPeriod}
${c3p0.maxStatements}
spring 怎么動態(tài)配置 連接不同的數(shù)據(jù)庫.oracle 或是mysql
不知道你伏舉說的動態(tài)配置是怎樣的
—–spring配置文件–
db.properties
//把driver改成oracle的,下面也相應(yīng)改成oracle的信息就能把數(shù)據(jù)源設(shè)置為oracle
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:
jdbc.user=root
jdbc.password=
dbcp.maxActive=10
dbcp.maxIdle=10
朝三暮四2?;屨鹗?/p>
spring連接本地?cái)?shù)據(jù)庫配置文件的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于spring連接本地?cái)?shù)據(jù)庫配置文件,Spring本地?cái)?shù)據(jù)庫連接配置詳解,如何使用c3p0+spring連接oracle數(shù)據(jù)庫,spring 怎么動態(tài)配置 連接不同的數(shù)據(jù)庫.oracle 或是mysql的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡單好用,價(jià)格厚道的香港/美國云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)——四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,高電服務(wù)器托管,算力服務(wù)器租用,可選線路電信、移動、聯(lián)通機(jī)房等。
網(wǎng)站名稱:Spring本地?cái)?shù)據(jù)庫連接配置詳解(spring連接本地?cái)?shù)據(jù)庫配置文件)
分享路徑:http://www.5511xx.com/article/coiceii.html


咨詢
建站咨詢
