3. 數(shù)據(jù)庫連接池
在前面我們所講解的mybatis中,使用了數(shù)據(jù)庫連接池技術(shù),避免頻繁的創(chuàng)建連接、銷毀連接而帶來的資源浪費。
下面我們就具體的了解下數(shù)據(jù)庫連接池。
3.1 介紹
沒有使用數(shù)據(jù)庫連接池:
客戶端執(zhí)行SQL語句:要先創(chuàng)建一個新的連接對象,然后執(zhí)行SQL語句,SQL語句執(zhí)行后又需要關(guān)閉連接對象從而釋放資源,每次執(zhí)行SQL時都需要創(chuàng)建連接、銷毀鏈接,這種頻繁的重復創(chuàng)建銷毀的過程是比較耗費計算機的性能。
數(shù)據(jù)庫連接池是個容器,負責分配、管理數(shù)據(jù)庫連接(Connection)
-
程序在啟動時,會在數(shù)據(jù)庫連接池(容器)中,創(chuàng)建一定數(shù)量的Connection對象
允許應(yīng)用程序重復使用一個現(xiàn)有的數(shù)據(jù)庫連接,而不是再重新建立一個
-
客戶端在執(zhí)行SQL時,先從連接池中獲取一個Connection對象,然后在執(zhí)行SQL語句,SQL語句執(zhí)行完之后,釋放Connection時就會把Connection對象歸還給連接池(Connection對象可以復用)
釋放空閑時間超過最大空閑時間的連接,來避免因為沒有釋放連接而引起的數(shù)據(jù)庫連接遺漏
-
客戶端獲取到Connection對象了,但是Connection對象并沒有去訪問數(shù)據(jù)庫(處于空閑),數(shù)據(jù)庫連接池發(fā)現(xiàn)Connection對象的空閑時間 > 連接池中預(yù)設(shè)的最大空閑時間,此時數(shù)據(jù)庫連接池就會自動釋放掉這個連接對象
數(shù)據(jù)庫連接池的好處:
-
資源重用
-
提升系統(tǒng)響應(yīng)速度
-
避免數(shù)據(jù)庫連接遺漏
3.2 產(chǎn)品
要怎么樣實現(xiàn)數(shù)據(jù)庫連接池呢?
-
官方(sun)提供了數(shù)據(jù)庫連接池標準(javax.sql.DataSource接口)
-
功能:獲取連接
public Connection getConnection() throws SQLException;
-
第三方組織必須按照DataSource接口實現(xiàn)
-
常見的數(shù)據(jù)庫連接池:
-
C3P0
-
DBCP
-
Druid
-
Hikari (springboot默認)
現(xiàn)在使用更多的是:Hikari、Druid (性能更優(yōu)越)
-
Hikari(追光者) [默認的連接池]
-
-
Druid(德魯伊)
-
Druid連接池是阿里巴巴開源的數(shù)據(jù)庫連接池項目
-
功能強大,性能優(yōu)秀,是Java語言最好的數(shù)據(jù)庫連接池之一
-
如果我們想把默認的數(shù)據(jù)庫連接池切換為Druid數(shù)據(jù)庫連接池,只需要完成以下兩步操作即可:
參考官方地址:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
-
在pom.xml文件中引入依賴
<dependency>
? ?<!-- Druid連接池依賴 -->
? ?<groupId>com.alibaba</groupId>
? ?<artifactId>druid-spring-boot-starter</artifactId>
? ?<version>1.2.8</version>
</dependency>
-
在application.properties中引入數(shù)據(jù)庫連接配置
方式1:
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://localhost:3306/mybatis
spring.datasource.druid.username=root
spring.datasource.druid.password=1234
方式2:
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
spring.datasource.username=root
spring.datasource.password=1234
4. lombok
4.1 介紹
Lombok是一個實用的Java類庫,可以通過簡單的注解來簡化和消除一些必須有但顯得很臃腫的Java代碼。
通過注解的形式自動生成構(gòu)造器、getter/setter、equals、hashcode、toString等方法,并可以自動化生成日志變量,簡化java開發(fā)、提高效率。
注解 | 作用 |
---|---|
@Getter/@Setter | 為所有的屬性提供get/set方法 |
@ToString | 會給類自動生成易閱讀的 toString 方法 |
@EqualsAndHashCode | 根據(jù)類所擁有的非靜態(tài)字段自動重寫 equals 方法和 hashCode 方法 |
@Data | 提供了更綜合的生成代碼功能(@Getter + @Setter + @ToString + @EqualsAndHashCode) |
@NoArgsConstructor | 為實體類生成無參的構(gòu)造器方法 |
@AllArgsConstructor | 為實體類生成除了static修飾的字段之外帶有各參數(shù)的構(gòu)造器方法。 |
4.2 使用
第1步:在pom.xml文件中引入依賴
<!-- 在springboot的父工程中,已經(jīng)集成了lombok并指定了版本號,故當前引入依賴時不需要指定version -->
<dependency>
? ?<groupId>org.projectlombok</groupId>
? ?<artifactId>lombok</artifactId>
</dependency>
第2步:在實體類上添加注解
import lombok.Data;
?
@Data
public class User {
? ?private Integer id;
? ?private String name;
? ?private Short age;
? ?private Short gender;
? ?private String phone;
}
在實體類上添加了@Data注解,那么這個類在編譯時期,就會生成getter/setter、equals、hashcode、toString等方法。
說明:@Data注解中不包含全參構(gòu)造方法,通常在實體類上,還會添加上:全參構(gòu)造、無參構(gòu)造
import lombok.Data;
?
@Data //getter方法、setter方法、toString方法、hashCode方法、equals方法
@NoArgsConstructor //無參構(gòu)造
@AllArgsConstructor//全參構(gòu)造
public class User {
? ?private Integer id;
? ?private String name;
? ?private Short age;
? ?private Short gender;
? ?private String phone;
}
Lombok的注意事項:
-
Lombok會在編譯時,會自動生成對應(yīng)的java代碼
-
在使用lombok時,還需要安裝一個lombok的插件(新版本的IDEA中自帶)文章來源:http://www.zghlxwxcb.cn/news/detail-774102.html
-
文章來源地址http://www.zghlxwxcb.cn/news/detail-774102.html
到了這里,關(guān)于Javaweb之數(shù)據(jù)庫連接池以及l(fā)ombok類庫的詳細解析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!