1. JDBC(Java Database Connectivity)
JDBC是Java提供的一種數(shù)據(jù)庫連接標(biāo)準(zhǔn),它允許Java程序連接到任何類型的數(shù)據(jù)庫,執(zhí)行SQL語句,并處理結(jié)果。
1.1 JDBC連接步驟
- 加載數(shù)據(jù)庫驅(qū)動(dòng) :使用
Class.forName()
方法加載數(shù)據(jù)庫驅(qū)動(dòng)。 - 建立連接 :使用
DriverManager.getConnection()
方法建立與數(shù)據(jù)庫的連接。 - 創(chuàng)建Statement :通過連接對(duì)象創(chuàng)建
Statement
對(duì)象,用于執(zhí)行SQL語句。 - 執(zhí)行SQL語句 :使用
Statement
對(duì)象的executeQuery()
或executeUpdate()
方法執(zhí)行SQL語句。 - 處理結(jié)果 :對(duì)于查詢操作,使用
ResultSet
對(duì)象處理返回的結(jié)果集。 - 關(guān)閉資源 :最后,關(guān)閉
ResultSet
、Statement
和數(shù)據(jù)庫連接。
1.2 示例代碼
import java.sql.*;
public class JdbcDemo {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydb";
String user = "root";
String password = "password";
try {
// 加載數(shù)據(jù)庫驅(qū)動(dòng)
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立連接
Connection conn = DriverManager.getConnection(url, user, password);
// 創(chuàng)建Statement
Statement stmt = conn.createStatement();
// 執(zhí)行查詢
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
// 處理結(jié)果
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println(name + ", " + age);
}
// 關(guān)閉資源
rs.close();
stmt.close();
conn.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
2. 使用連接池
在Web應(yīng)用程序中,頻繁地打開和關(guān)閉數(shù)據(jù)庫連接是非常消耗資源的。因此,使用連接池是一個(gè)更好的選擇。
2.1 常見的連接池
- HikariCP :性能最好的連接池之一,也是Spring Boot的默認(rèn)連接池。
- Apache DBCP :Apache Commons提供的數(shù)據(jù)庫連接池。
- C3P0 :一個(gè)成熟的連接池實(shí)現(xiàn)。
2.2 配置HikariCP
在Spring Boot項(xiàng)目中,你可以通過application.properties
或application.yml
文件配置HikariCP。
# application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.pool-name=MyHikariCP
spring.datasource.hikari.max-lifetime=2000000
spring.datasource.hikari.connection-timeout=30000
3. 使用ORM框架
ORM(Object-Relational Mapping)框架可以簡化數(shù)據(jù)庫操作,將數(shù)據(jù)庫表映射為Java對(duì)象。
3.1 常見的ORM框架
- Hibernate :一個(gè)功能強(qiáng)大的ORM框架,支持多種數(shù)據(jù)庫。
- MyBatis :一個(gè)靈活的SQL映射框架,允許開發(fā)者編寫自定義的SQL語句。
- Spring Data JPA :基于Hibernate的JPA實(shí)現(xiàn),簡化了數(shù)據(jù)訪問層的開發(fā)。
3.2 示例:使用Spring Data JPA
- 添加依賴 :在
pom.xml
中添加Spring Data JPA和數(shù)據(jù)庫驅(qū)動(dòng)的依賴。 - 配置數(shù)據(jù)源 :在
application.properties
中配置數(shù)據(jù)源。 - 創(chuàng)建實(shí)體類 :定義與數(shù)據(jù)庫表對(duì)應(yīng)的實(shí)體類。
- 創(chuàng)建Repository接口 :繼承
JpaRepository
接口,Spring Data JPA會(huì)自動(dòng)實(shí)現(xiàn)接口中的方法。 - 使用Repository :在服務(wù)層注入Repository,使用其提供的方法操作數(shù)據(jù)庫。
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository {
}
4. 最佳實(shí)踐
- 使用連接池 :避免每次請(qǐng)求都創(chuàng)建新的數(shù)據(jù)庫連接。
- 使用ORM框架 :減少SQL硬編碼,提高代碼的可維護(hù)性。
- 事務(wù)管理 :確保數(shù)據(jù)庫操作的原子性、一致性、隔離性和持久性。
-
SQL
+關(guān)注
關(guān)注
1文章
769瀏覽量
44186 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3834瀏覽量
64535 -
代碼
+關(guān)注
關(guān)注
30文章
4806瀏覽量
68786 -
JavaWeb
+關(guān)注
關(guān)注
0文章
16瀏覽量
6362
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論