Spring JDBC 與 Spring Data JPA
| Spring JDBC | Spring Data JPA |
|---|---|
| 以SQL為中心 | 以java object 為中心 |
| 需要自己寫sql 語法去操作資料庫 | 不需要寫sql語法 ,hibernate 會自動生成sql語法去操作資料庫 |
| 開發效率低 | 開發效率高 |
| 效能較好 | 效能較差 |
| 可以寫出複雜的sql語法 | 很難寫出複雜的查詢 |
Spring JDBC + java object
是以SQL為中心
對Spring JDBC來 student class 他其實沒甚麼用 ,他就只是幫忙儲存 id 還有name 的值而已
public void insert(){
// 創建 Student Object
Student student = new Student();
student.setId(1);
student.setName("Bob");
// 執行 insert sql ,在student table中插入數據
String SqlStr = "insert into student(id ,name) value (:studentId ,:studentName)";
Map<String ,Object> map = new HashMap<>();
map.put("studentId" ,student.getId());
map.put("studentName" ,student.getName());
namedParameterJdbcTemplate.update(SqlStr ,map);
}
用這種方式也是可以在student table 裡面去新增一筆數據出來
public void insert2(){
Integer id = 1;
String name = "Bob";
// 執行 insert sql ,在student table中插入數據
String SqlStr = "insert into student(id ,name) value (:studentId ,:studentName)";
Map<String ,Object> map = new HashMap<>();
map.put("studentId" ,id);
map.put("studentName" ,name);
namedParameterJdbcTemplate.update(SqlStr ,map);
}
Spring Data JPA + java object
Spring Data JPA 是以java object 為中心
我們不會再把透過getId ,getName 一個一個取出來然後分別地去寫到sql裡面 ,而是直接去儲存這整個Student Object