Lập trình với Spring JDBC
This post hasn't been updated for 10 years
Ngày nay, JPA và các ORMs luôn là lựa chọn mặc định của lập trình viên khi lập trình ứng dụng Spring Framework. Tuy nhiên, JDBC vẫn luôn là công cụ mạnh mẽ để truy xuất dữ liệu quan hệ. Nếu bạn không cần phải dùng đến một ORM, bạn cần truy xuất nhanh chóng đến CSDL, bạn ưu tiên tốc độ hơn là sự tiện dụng, bạn có thể sẽ chọn JDBC thay cho JPA/Hibernate.
Tuy nhiên, vấn đề của JDBC là nó khiến cho bạn phải viết quá nhiều code thừa, cách sử dụng JDBC cũng hao hao cách sử dụng ADO.NET khi bạn lập trình ứng dụng .NET Framework. Để tận dụng thế mạnh của ADO.NET nhưng không phải viết code lập đi lập lại, lập trình viên .NET có sự lựa chọn là sử dụng các Micro ORM như PetaPoco, Dapper.. Còn với JDBC, Spring đã cung cấp cho chúng ta một sự lựa chọn không tồi là JDBCTemplate.
Tạo dự án
Trong ví dụ này, chúng ta sẽ sử dụng Maven để tạo một ứng dụng đơn giản để truy xuất vào CSDL MySQL bằng cách sử dụng Spring JdbcTemplate. Dưới đây là tập tin pom.xml với các phụ thuộc:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.2.0.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
</dependencies>
Ở tập tin pom.xml, chúng ta có một phụ thuộc là spring-orm, thư viên này cung cấp khả năng sử dụng Spring JdbcTemplate.
**Cấu trúc ứng dụng **
Cấu trúc của ứng dụng được thiết lập như dưới đây:

Theo bức hình ở trên, chúng ta sẽ tạo một số lớp:
Contact: Đây là một lớp model**
ContactDAO và ContactDAOImpl: mã lệnh để truye xuất bảng contact trong CSDL MySQL
DIConfiguration: mã lệnh để cấu hình datasource bean giúp cho ContactDAO có thể thiết lập kết nối đến CSDL.
App là lớp chứa phương thức main để chạy chương trình và chứa mã lệnh demo cho việc sử dụng các lớp nói trên.
1. Lớp Contact
package com.tumivn.hijdbctemplate.model
public class Contact {
private int id; private String name; private String email;
private String address; private String telephone;
public Contact() { }
public Contact(String name, String email, String address, String telephone) { this.setName(name); this.setEmail(email); this.setAddress(address); this.setTelephone(telephone); }
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public String getEmail() { return email; }
public void setEmail(String email) { this.email = email; }
public String getAddress() { return address; }
public void setAddress(String address) { this.address = address; }
public String getTelephone() { return telephone; }
public void setTelephone(String telephone) { this.telephone = telephone; } }
Lớp Contact chỉ là một lớp POJO (Plain Old Java Object), khi bạn lấy dữ liệu từ MySQL lên, bạn sẽ lưu trong các đối tượng của lớp này hoặc là bạn sẽ lưu dữ liệu mới được tạo ra từ các đối tượng lớp Contact và lưu xuống CSDL.
** ContactDAO interface**
Bây giờ chúng ta sẽ tạo ContactDAO interfa