服務端開發--Spring MVC框架
Spring Data JDBC、JPA
解決数據庫訪問的問題,把數據持久化存儲。
JDBC
MySql,Oracle,H2…關係型數據庫如此多,寫代碼時不可能針对每一種數據庫都去想如何处理和存儲。
于是要求每個數據庫提供一個驅動程序,寫代碼時只跟驅動程序打交道,而不跟具體的數據庫做交互。
JDBC就是这樣一種媒介,屏蔽了各種數據庫的差異性。
DataSource
JDBC DataSource 是一个数据库连接池,可以管理一组预先打开的数据库连接,并通过 DataSource 对象将它们提供给应用程序。由于在应用程序中创建和关闭数据库连接可能会导致性能问题,因此使用 DataSource 可以有效地避免这些问题。
- 可以配置 DataSource 对象以自动检测和清除空闲或过期的数据库连接。
- 可以配置 DataSource 对象以在连接不可用时重试连接。
- 可以使用不同的 DataSource 实现来支持分布式事务和集群应用程序。1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33public class JdbcDataSourceExample { 
 public static void main(String[] args) {
 try {
 // 创建 DataSource 对象
 BasicDataSource dataSource = new BasicDataSource();
 dataSource.setDriverClassName("com.mysql.jdbc.Driver");
 dataSource.setUrl("jdbc:mysql://localhost/test");
 dataSource.setUsername("root");
 dataSource.setPassword("password");
 // 获取数据库连接
 Connection conn = dataSource.getConnection();
 // 创建 Statement 对象
 Statement stmt = conn.createStatement();
 // 执行 SQL 查询
 ResultSet rs = stmt.executeQuery("SELECT * FROM customers");
 // 处理结果集
 while(rs.next()) {
 System.out.println(rs.getString("name") + " " + rs.getString("email"));
 }
 // 关闭结果集、Statement 对象和数据库连接
 rs.close();
 stmt.close();
 conn.close();
 } catch (Exception e) {
 e.printStackTrace();
 }
 }
 }每次都要建立連接,釋放連接,麻烦又重复,如何簡化呢? 
SpringBoot Starter JDBC
Spring已經把这些抽取出來了,提取成了模板,只要提供可变的部分即可。
添加依赖:1
2
3
4<dependency>
	<groupId>org.sptingframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
H2數據庫依赖包
H2数据库是一款基于Java编写的嵌入式关系型数据库管理系统(RDBMS),它支持SQL和JDBC API。它被设计成一个轻量级的数据库,可嵌入到Java应用程序中,并且非常容易使用和部署。具有高性能、小型化、可嵌入性、易用性和免费开源等优点1
2
3
4
5<dependency>
	<groupId>com.h2database</groupId>
	<artifactId>h2</artifactId>
	<scope>runtime</scope>
</dependency>
H2訪問:
- http://localhost:8080/h2-console
- 驅動:org.h2.Driver
- JDBC URL: jdbc:h2:mem:[名字]
- 用戶名: sa
表结構的構造:
17行表示Taco是哪個order的,18行表示Taco在这個order里的先后順序:
我們不會直接操作对象,所以需要建立接口:
操作配料表的接口:
应用層代碼只看到接口,DAO層實現
- 只要接口沒改变,實現怎么改都能用
- 只關心使用不關心怎么實現 
JdbcTemplate模版
spring提拱的模版,需要用時把它注入進來
只需要提供變化的部分就能用,比如查詢,只要提供查詢語句和把查到的結果轉成Java对象的實現就可以了
轉換对象:
插入:
JPA
JPA全称为Java Persistence API ,Java持久化API是Sun公司在Java EE 5规范中提出的Java持久化接口。JPA吸取了目前Java持久化技术的优点,旨在规范、简化Java对象的持久化工作。使用JPA持久化对象,并不是依赖于某一个ORM框架。1
2
3
4<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
定義接口繼承CurdRepository就好了,方法都集成了:
对表數據定制化操作
- @Table 
 可以針对領域对象,指定將对象对应到哪張表,名字一樣可不加- 1 - @Table("doll") 
- @Column 
 指定列名
- @OneToMany 


