Trong nội dung bài này, chúng ta cùng tìm hiểu một định dạng biểu diễn dữ liệu quen thuộc là JSON.
JavaScript Object Notation (JSON) là một kiểu dữ liệu mở.
Kiểu dữ liệu này bao gồm chủ yếu là text, có thể đọc được theo dạng cặp: thuộc tính – giá trị.
JSON là một kiểu dữ liệu trung gian được dùng để luân chuyển thông tin giữa các thành phần của một chương trình.
Đặc điểm – Cú pháp
Cấu trúc JSON:
1 đối tượng là 1 hổn hợp của các cặp: thuộc tính – giá trị. 1 đối tượng bắt đầu bởi dấu ngoặc đơn trái { và kết thúc với dấu ngoặc đơn phải }. Từng tên được theo sau bởi dấu 2 chấm : và các cặp thuộc tính – giá trị được tách ra bởi dấu phẩy ,.
1 mảng là 1 tập hợp các giá trị. 1 mảng bắt đầu bởi dấu ngoặc vuông trái [ và kết thúc với dấu ngoặc vuông phải ]. Các giá trị được cách nhau bởi dấu phẩy ,.
Những thuộc tính được chúng ta định nghĩa phù hợp với yêu cầu của chương trình.
1 giá trị có thể là 1 chuỗi string trong những trích dẫn kép hay là 1 số, hay true hay false hay null, hay là 1 đối tượng hay là 1 mảng. Những cấu trúc này có thể đã được lồng vào nhau.
Biểu diễn dữ liệu
Chúng ta thực hiện biểu diễn dữ liệu trong JSON theo đặc tả trong các Hệ quản trị cơ sở dữ liệu.
Bước 1.
Chúng ta có đặc tả cơ sở dữ liệu trong PostgreSQL như sau:
Bước 2.
Chúng ta đặc tả file category.json cho bảng category có bao gồm cả dữ liệu như sau:
Bước 3.
Chúng ta đặc tả file product.json cho bảng product có bao gồm cả dữ liệu như sau:
Bước 4.
Chúng ta cũng có thể đặc tả file complex.json cho cả 02 bảng category và product lồng nhau.
Chú ý rằng với cách này thì cần chú ý về độ lớn của dữ liệu và sự phức tạp trong quá trình truy xuất.
Kết luận
Trong bài này chúng ta đã cùng tìm hiểu sơ bộ về định dạng JSON để đặc tả và lưu trữ dữ liệu.
Trong các bài tiếp theo chúng ta sẽ cùng nhau tìm hiểu cách thức truy xuất định dạng JSON với những kỹ thuật lập trình phù hợp.
Trong nội dung bài này, chúng ta cùng tìm hiểu một định dạng biểu diễn dữ liệu quen thuộc là XML.
XML (eXtensible Markup Language), nghĩa là “Ngôn ngữ đánh dấu mở rộng”, là ngôn ngữ đánh dấu với mục đích chung do World Wide Web Consortium (W3C) đề nghị.
Đây là một tập con được kế thừa từ Standard Generalized Markup Language (SGML), có khả năng mô tả nhiều loại dữ liệu khác nhau.
Mục đích chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các platform và các hệ thống được kết nối với mạng Internet.
Chính vì vậy, XML có tác dụng rất lớn trong việc chia sẻ, trao đổi dữ liệu giữa các hệ thống.
Đặc điểm
Đặc trưng làm XML hữu ích:
XML được dùng cho dữ liệu có cấu trúc.
XML là có thể mở rộng: chúng ta có thể tạo các thẻ theo qui ước riêng để phù hợp với ứng dụng.
XML mang dữ liệu chứ không hiển thị: chúng ta có thể lưu giữ dữ liệu mà không quan tâm đến cái cách nó sẽ được hiển thị.
XML là một chuẩn chung: XML được phát triển bởi tổ chức World Wide Web Consortium (W3C) như một chuẩn mở.
Về trực quan, XML khá giống với HTML.
XML có thể đọc và phân tích nguồn dữ liệu khá dễ dàng nên nó được sử dụng với mục đích chính là trao đổi dữ liệu giữa các chương trình, các hệ thống khác nhau.
Cú pháp
Cú pháp XML cơ bản cho một phần tử là
<tên thuộc_tính=“giá trị”>nội dung</tên>
Ví dụ nội dung của một file XML bao gồm 02 dòng:
<?xml version=“1.0” encoding=“UTF-8”?>
<category_list>Đây là thông tin danh mục</category_list>
Dòng đầu tiên là Khai báo XML (XML declaration): đó là một dòng không bắt buộc, với nhiệm vụ thông báo phiên bản XML đang được sử dụng (thường là phiên bản 1.0), và còn có thể chứa thông tin về mã hóa ký tự và các phụ thuộc bên ngoài.
Phần còn lại của XML chứa các phần tử lồng nhau, một số phần tử trong đó có các thuộc tính và nội dung.
Một phần tử thường bao gồm hai thẻ (tag): một thẻ bắt đầu và một thẻ kết thúc.
Thẻ bắt đầu bao gồm một cái tên đặt trong một cặp ngoặc nhọn như: <category_list>.
Thẻ kết thúc bao gồm chính cái tên đó đặt trong một cặp ngoặc nhọn với một dấu gạch chéo đứng trước như: </category_list>.
Nội dung của phần tử là tất cả những gì nằm giữa thẻ bắt đầu và thẻ kết thúc, bao gồm văn bản và các phần tử (con) khác.
Biểu diễn dữ liệu
Chúng ta thực hiện biểu diễn dữ liệu trong XML theo đặc tả trong các Hệ quản trị cơ sở dữ liệu.
Bước 1.
Chúng ta có đặc tả cơ sở dữ liệu trong PostgreSQL như sau:
Bước 2.
Chúng ta đặc tả file category.xml cho bảng category có bao gồm cả dữ liệu như sau:
Bước 3.
Chúng ta đặc tả file product.xml cho bảng product có bao gồm cả dữ liệu như sau:
Bước 4.
Chúng ta cũng có thể đặc tả file complex.xml cho cả 02 bảng category và product lồng nhau.
Chú ý rằng với cách này thì cần chú ý về độ lớn của dữ liệu và sự phức tạp trong quá trình truy xuất.
Kết luận
Trong bài này chúng ta đã cùng tìm hiểu sơ bộ về định dạng XML để đặc tả và lưu trữ dữ liệu.
Trong các bài tiếp theo chúng ta sẽ cùng nhau tìm hiểu cách thức truy xuất định dạng XML từ với những kỹ thuật lập trình phù hợp.
Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.
Những nội dung chính sẽ được trình bày trong nhóm bài:
Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.
Nội dung chính của bài này là trình bày phần thứ hai và tập trung vào Tầng 2 trong nội dung về kỹ thuật lập trình với ngôn ngữ PHP:
Phần 1. Xây dựng kiến trúc tổng quan của mô hình 3 lớp.
Phần 2. Kỹ thuật lập trình cụ thể cho từng tầng trong kiến trúc mô hình 3 lớp.
Class BaseService
Bước 1.
Chúng ta thiết kế lớp cơ sở BaseService như sau:
Bước 2.
Chúng ta đặc tả phương thức createConnection() đối với tác vụ kết nối đến PostgreSQL:
Bước 3.
Chúng ta đặc tả các phương thức chính trong class BaseService:
Class CategoryService
Chúng ta thiết kế lớp dẫn xuất CategoryService như sau:
Class ProductService
Chúng ta thiết kế lớp dẫn xuất ProductService như sau:
Kết luận
Trong bài này, chúng ta cùng nhau tìm hiểu việc thực hiện kỹ thuật lập trình cho phần thứ hai và tập trung vào Tầng 2.
Chúng ta có thể áp dụng những kiến thức trong nhóm bài để thực hiện một số bài tập:
Thêm / xóa / sửa / truy vấn dữ liệu trong bảng category và product theo những yêu cầu thực tế khác nhau.
Thay đổi cơ sở dữ liệu PostgreSQL bởi các cơ sở dữ liệu khác: MySQL / MariaDB; Oracle; …
Nhóm bài này sẽ trở thành một trong những kiến thức nền để thực hiện các dạng phần mềm: Desktop / Web Application.
Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.
Những nội dung chính sẽ được trình bày trong nhóm bài:
Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.
Nội dung chính của bài này là trình bày phần thứ hai và tập trung vào Tầng 2 trong nội dung về kỹ thuật lập trình với ngôn ngữ Python:
Phần 1. Xây dựng kiến trúc tổng quan của mô hình 3 lớp.
Phần 2. Kỹ thuật lập trình cụ thể cho từng tầng trong kiến trúc mô hình 3 lớp.
Class BaseService
Bước 1.
Chúng ta thiết kế lớp cơ sở BaseService như sau:
Bước 2.
Chúng ta đặc tả các phương thức chính trong class BaseService:
Class CategoryService
Chúng ta thiết kế lớp dẫn xuất CategoryService như sau:
Class ProductService
Chúng ta thiết kế lớp dẫn xuất ProductService như sau:
Kết luận
Trong bài này, chúng ta cùng nhau tìm hiểu việc thực hiện kỹ thuật lập trình cho phần thứ hai và tập trung vào Tầng 2.
Chúng ta có thể áp dụng những kiến thức trong nhóm bài để thực hiện một số bài tập:
Thêm / xóa / sửa / truy vấn dữ liệu trong bảng category và product theo những yêu cầu thực tế khác nhau.
Thay đổi cơ sở dữ liệu PostgreSQL bởi các cơ sở dữ liệu khác: MySQL / MariaDB; Oracle; …
Nhóm bài này sẽ trở thành một trong những kiến thức nền để thực hiện các dạng phần mềm: Desktop / Web Application.
Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.
Những nội dung chính sẽ được trình bày trong nhóm bài:
Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.
Nội dung chính của bài này là trình bày phần thứ hai và tập trung vào Tầng 2 trong nội dung về kỹ thuật lập trình với ngôn ngữ Csharp:
Phần 1. Xây dựng kiến trúc tổng quan của mô hình 3 lớp.
Phần 2. Kỹ thuật lập trình cụ thể cho từng tầng trong kiến trúc mô hình 3 lớp.
Class BaseService
Bước 1.
Chúng ta thiết kế lớp cơ sở BaseService như sau:
Bước 2.
Chúng ta đặc tả phương thức createConnection() đối với tác vụ kết nối đến PostgreSQL:
Bước 3.
Chúng ta đặc tả các phương thức chính trong class BaseService:
Class CategoryService
Chúng ta thiết kế lớp dẫn xuất CategoryService như sau:
Class ProductService
Chúng ta thiết kế lớp dẫn xuất ProductService như sau:
Kết luận
Trong bài này, chúng ta cùng nhau tìm hiểu việc thực hiện kỹ thuật lập trình cho phần thứ hai và tập trung vào Tầng 2.
Chúng ta có thể áp dụng những kiến thức trong nhóm bài để thực hiện một số bài tập:
Thêm / xóa / sửa / truy vấn dữ liệu trong bảng category và product theo những yêu cầu thực tế khác nhau.
Thay đổi cơ sở dữ liệu PostgreSQL bởi các cơ sở dữ liệu khác: MySQL / MariaDB; Oracle; …
Nhóm bài này sẽ trở thành một trong những kiến thức nền để thực hiện các dạng phần mềm: Desktop / Web Application.
Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.
Những nội dung chính sẽ được trình bày trong nhóm bài:
Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.
Nội dung chính của bài này là trình bày phần thứ hai và tập trung vào Tầng 2 trong nội dung về kỹ thuật lập trình với ngôn ngữ Java:
Phần 1. Xây dựng kiến trúc tổng quan của mô hình 3 lớp.
Phần 2. Kỹ thuật lập trình cụ thể cho từng tầng trong kiến trúc mô hình 3 lớp.
Class BaseService
Bước 1.
Chúng ta thiết kế lớp cơ sở BaseService như sau:
Bước 2.
Chúng ta đặc tả phương thức createConnection() đối với tác vụ kết nối đến PostgreSQL:
Bước 3.
Chúng ta đặc tả các phương thức chính trong class BaseService:
Class CategoryService
Chúng ta thiết kế lớp dẫn xuất CategoryService như sau:
Class ProductService
Chúng ta thiết kế lớp dẫn xuất ProductService như sau:
Thử nghiệm chương trình
Bước 1.
Chúng ta thực hiện tác vụ thêm dữ liệu vào bảng category:
Bước 2.
Chúng ta thực hiện tác vụ truy vấn dữ liệu từ bảng category:
Bước 3.
Chúng ta thực hiện tác vụ truy vấn dữ liệu từ bảng product:
Kết luận
Trong bài này, chúng ta cùng nhau tìm hiểu việc thực hiện kỹ thuật lập trình cho phần thứ hai và tập trung vào Tầng 2.
Chúng ta có thể áp dụng những kiến thức trong nhóm bài để thực hiện một số bài tập:
Thêm / xóa / sửa / truy vấn dữ liệu trong bảng category và product theo những yêu cầu thực tế khác nhau.
Thay đổi cơ sở dữ liệu PostgreSQL bởi các cơ sở dữ liệu khác: MySQL / MariaDB; Oracle; …
Nhóm bài này sẽ trở thành một trong những kiến thức nền để thực hiện các dạng phần mềm: Desktop / Web Application.
Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.
Những nội dung chính sẽ được trình bày trong nhóm bài:
Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.
Nội dung chính của bài này là trình bày phần thứ hai và tập trung vào Tầng 3 trong nội dung về kỹ thuật lập trình với ngôn ngữ PHP:
Phần 1. Xây dựng kiến trúc tổng quan của mô hình 3 lớp.
Phần 2. Kỹ thuật lập trình cụ thể cho từng tầng trong kiến trúc mô hình 3 lớp.
Class BaseDAO – Kiến trúc tổng quan
Bước 1.
Chúng ta thiết kế lớp cơ sở BaseDAO thành abstract class như sau:
Bước 2.
Chúng ta định nghĩa các thuộc tính trong class BaseDAO:
Bước 3.
Chúng ta định nghĩa phương thức khởi tạo không có tham số của class BaseDAO:
Bước 4.
Chúng ta định nghĩa các phương thức chính trong class BaseDAO:
Class BaseDAO – Phương thức getConnection()
Chúng ta đặc tả phương thức getConnection() đối với tác vụ kết nối đến PostgreSQL:
Class BaseDAO – Phương thức selectDataFromOneTable()
Bước 1.
Chúng ta đặc tả phương thức selectDataFromOneTable() đối với tác vụ truy xuất dữ liệu từ một bảng trong PostgreSQL.
Mã nguồn SQL tổng quan để thực hiện truy vấn dữ liệu:
SELECT column_i, …, column_j FROM table [WHERE column_k = value_k AND … AND column_l = value_l]
Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:
Bước 2.
Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:
Kỹ thuật lập trình cần chú ý ở đây:
Giá trị của từng trường điều kiện được thể hiện bằng dấu “?”.
Chúng ta sẽ thay thế từng dấu “?” bằng giá trị tương ứng trong dataSet ở các bước sau. Đây là bước đầu tiên của kỹ thuật Prepared Statement.
Kỹ thuật này giúp truy xuất dữ liệu thuận tiện hơn, độc lập cơ sở dữ liệu và phần nào chống được kỹ thuật tấn công SQL Injection.
Bước 3.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 4.
Chúng ta định nghĩa một thực thể PreparedStatement:
Đây là bước thứ hai của kỹ thuật Prepared Statement giúp chuẩn bị thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng.
Bước 5.
Chúng ta thực hiện truy vấn dữ liệu.
Chúng ta tiếp tục gọi phương thức mappingData() để thực hiện việc chuyển đổi dữ liệu trong thực thể này về dạng mong muốn và thêm vào results.
Kỹ thuật lập trình cần chú ý ở đây:
Chúng ta định nghĩa phương thức mappingData() là abstract trong class BaseDAO.
Chúng ta đặc tả cụ thể các kỹ thuật lập trình của phương thức mappingData() trong các lớp dẫn xuất là CategoryDAO và ProductDAO.
Bước 6.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class BaseDAO – Phương thức insertData()
Bước 1.
Chúng ta đặc tả phương thức insertData() đối với tác vụ thêm dữ liệu vào một bảng trong PostgreSQL.
Mã nguồn SQL tổng quan để thực hiện thêm dữ liệu:
INSERT INTO table (column_i, …, column_j) VALUE (value_i, …, value_j)
Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:
Bước 2.
Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:
Bước 3.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 4.
Chúng ta định nghĩa một thực thể PreparedStatement:
Bước 5.
Chúng ta thực hiện thêm dữ liệu:
Bước 6.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class BaseDAO – Phương thức updateData()
Bước 1.
Chúng ta đặc tả phương thức updateData() đối với tác vụ cập nhật dữ liệu trong một bảng trong PostgreSQL.
Mã nguồn SQL tổng quan để thực hiện thêm dữ liệu:
UPDATE table SET (column_i = value_i, …, column_j = value_j) [WHERE column_k = value_k AND … AND column_l = value_l]
Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:
Bước 2.
Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:
Bước 3.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 4.
Chúng ta định nghĩa một thực thể PreparedStatement:
Bước 5.
Chúng ta thực hiện cập nhật dữ liệu:
Bước 6.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class BaseDAO – Phương thức deleteData()
Bước 1.
Chúng ta đặc tả phương thức deleteData() đối với tác vụ xóa dữ liệu trong một bảng trong PostgreSQL.
Mã nguồn SQL tổng quan để thực hiện truy vấn dữ liệu:
DELETE FROM table WHERE column_k = value_k AND … AND column_l = value_l
Chúng ta đặc tả chuỗi SQL như sau:
Bước 2.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 3.
Chúng ta định nghĩa một thực thể PreparedStatement:
Bước 4.
Chúng ta thực hiện xóa dữ liệu:
Bước 5.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class CategoryDAO
Bước 1.
Chúng ta thiết kế lớp dẫn xuất CategoryDAO như sau:
Bước 2.
Chúng ta đặc tả kỹ thuật lập trình cho phương thức mappingData() như sau:
Class ProductDAO
Bước 1.
Chúng ta thiết kế lớp dẫn xuất ProductDAO như sau:
Bước 2.
Chúng ta đặc tả kỹ thuật lập trình cho phương thức mappingData() như sau:
Kết luận
Trong bài này, chúng ta cùng nhau tìm hiểu việc thực hiện kỹ thuật lập trình cho phần thứ hai và tập trung vào Tầng 3.
Trong bài tiếp theo, chúng ta cùng tìm hiểu việc thực hiện kỹ thuật lập trình cho Tầng 2.
Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.
Những nội dung chính sẽ được trình bày trong nhóm bài:
Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.
Nội dung chính của bài này là trình bày phần thứ hai và tập trung vào Tầng 3 trong nội dung về kỹ thuật lập trình với ngôn ngữ Python:
Phần 1. Xây dựng kiến trúc tổng quan của mô hình 3 lớp.
Phần 2. Kỹ thuật lập trình cụ thể cho từng tầng trong kiến trúc mô hình 3 lớp.
Class BaseDAO – Kiến trúc tổng quan
Bước 1.
Chúng ta thiết kế lớp cơ sở BaseDAO thành abstract class như sau:
Bước 2.
Chúng ta định nghĩa các phương thức chính trong class BaseDAO:
Class BaseDAO – Phương thức getConnection()
Chúng ta đặc tả phương thức getConnection() đối với tác vụ kết nối đến PostgreSQL:
Class BaseDAO – Phương thức selectDataFromOneTable()
Bước 1.
Chúng ta đặc tả phương thức selectDataFromOneTable() đối với tác vụ truy xuất dữ liệu từ một bảng trong PostgreSQL.
Mã nguồn SQL tổng quan để thực hiện truy vấn dữ liệu:
SELECT column_i, …, column_j FROM table [WHERE column_k = value_k AND … AND column_l = value_l]
Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:
Bước 2.
Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:
Kỹ thuật lập trình cần chú ý ở đây:
Giá trị của từng trường điều kiện được thể hiện bằng dấu “%s”.
Chúng ta sẽ thay thế từng dấu “%s” bằng giá trị tương ứng trong dataSet ở các bước sau.
Đây là bước đầu tiên của kỹ thuật Prepared Statement. Kỹ thuật này giúp truy xuất dữ liệu thuận tiện hơn, độc lập cơ sở dữ liệu và phần nào chống được kỹ thuật tấn công SQL Injection.
Bước 3.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 4.
Chúng ta định nghĩa một cursor:
Đây là bước thứ hai của kỹ thuật Prepared Statement giúp chuẩn bị thay thế từng dấu “%s” trong chuỗi SQL bởi giá trị tương ứng.
Bước 5.
Chúng ta thực hiện truy vấn dữ liệu.
Chúng ta tiếp tục gọi phương thức mappingData() để thực hiện việc chuyển đổi dữ liệu trong thực thể này về dạng mong muốn và thêm vào results.
Kỹ thuật lập trình cần chú ý ở đây:
Chúng ta định nghĩa phương thức mappingData() là abstract trong class BaseDAO.
Chúng ta đặc tả cụ thể các kỹ thuật lập trình của phương thức mappingData() trong các lớp dẫn xuất là CategoryDAO và ProductDAO.
Bước 6.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class BaseDAO – Phương thức insertData()
Bước 1.
Chúng ta đặc tả phương thức insertData() đối với tác vụ thêm dữ liệu vào một bảng trong PostgreSQL.
Mã nguồn SQL tổng quan để thực hiện thêm dữ liệu:
INSERT INTO table (column_i, …, column_j) VALUE (value_i, …, value_j)
Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:
Bước 2.
Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:
Bước 3.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 4.
Chúng ta định nghĩa một thực thể cursor:
Bước 5.
Chúng ta thực hiện thêm dữ liệu:
Bước 6.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class BaseDAO – Phương thức updateData()
Bước 1.
Chúng ta đặc tả phương thức updateData() đối với tác vụ cập nhật dữ liệu trong một bảng trong PostgreSQL.
Mã nguồn SQL tổng quan để thực hiện thêm dữ liệu:
UPDATE table SET (column_i = value_i, …, column_j = value_j) [WHERE column_k = value_k AND … AND column_l = value_l]
Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:
Bước 2.
Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:
Bước 3.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 4.
Chúng ta định nghĩa một thực thể cursor:
Bước 5.
Chúng ta thực hiện cập nhật dữ liệu:
Bước 6.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class BaseDAO – Phương thức deleteData()
Bước 1.
Chúng ta đặc tả phương thức deleteData() đối với tác vụ xóa dữ liệu trong một bảng trong PostgreSQL.
Mã nguồn SQL tổng quan để thực hiện truy vấn dữ liệu:
DELETE FROM table WHERE column_k = value_k AND … AND column_l = value_l
Chúng ta đặc tả chuỗi SQL như sau:
Bước 2.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 3.
Chúng ta định nghĩa một thực thể cursor:
Bước 4.
Chúng ta thực hiện xóa dữ liệu:
Bước 5.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class CategoryDAO
Chúng ta thiết kế lớp dẫn xuất CategoryDAO như sau:
Class ProductDAO
Chúng ta thiết kế lớp dẫn xuất ProductDAO như sau:
Kết luận
Trong bài này, chúng ta cùng nhau tìm hiểu việc thực hiện kỹ thuật lập trình cho phần thứ hai và tập trung vào Tầng 3.
Trong bài tiếp theo, chúng ta cùng tìm hiểu việc thực hiện kỹ thuật lập trình cho Tầng 2.
Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.
Những nội dung chính sẽ được trình bày trong nhóm bài:
Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.
Nội dung chính của bài này là trình bày phần thứ hai và tập trung vào Tầng 3 trong nội dung về kỹ thuật lập trình với ngôn ngữ Csharp:
Phần 1. Xây dựng kiến trúc tổng quan của mô hình 3 lớp.
Phần 2. Kỹ thuật lập trình cụ thể cho từng tầng trong kiến trúc mô hình 3 lớp.
Class BaseDAO – Kiến trúc tổng quan
Bước 1.
Chúng ta thiết kế lớp cơ sở BaseDAO thành abstract class như sau:
Bước 2.
Chúng ta định nghĩa các thuộc tính trong class BaseDAO:
Bước 3.
Chúng ta định nghĩa phương thức khởi tạo không có tham số của class BaseDAO:
Bước 4.
Chúng ta định nghĩa các phương thức chính trong class BaseDAO:
Class BaseDAO – Phương thức getConnection()
Chúng ta đặc tả phương thức getConnection() đối với tác vụ kết nối đến PostgreSQL:
Class BaseDAO – Phương thức selectDataFromOneTable()
Bước 1.
Chúng ta đặc tả phương thức selectDataFromOneTable() đối với tác vụ truy xuất dữ liệu từ một bảng trong PostgreSQL.
Chúng ta thực hiện kỹ thuật bắt lỗi kết nối và truy vấn cơ sở dữ liệu:
Bước 2.
Mã nguồn SQL tổng quan để thực hiện truy vấn dữ liệu:
SELECT column_i, …, column_j FROM table [WHERE column_k = value_k AND … AND column_l = value_l]
Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:
Bước 3.
Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:
Kỹ thuật lập trình cần chú ý ở đây:
Giá trị của từng trường điều kiện được thể hiện bằng dấu “?”.
Chúng ta sẽ thay thế từng dấu “?” bằng giá trị tương ứng trong dataSet ở các bước sau.
Đây là bước đầu tiên của kỹ thuật Prepared Statement. Kỹ thuật này giúp truy xuất dữ liệu thuận tiện hơn, độc lập cơ sở dữ liệu và phần nào chống được kỹ thuật tấn công SQL Injection.
Bước 4.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 5.
Chúng ta định nghĩa một thực thể của class NpgsqlCommand:
Đây là bước thứ hai của kỹ thuật Prepared Statement giúp chuẩn bị thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng.
Bước 6.
Chúng ta gọi phương thức appendData() để thực hiện bước thứ ba của kỹ thuật Prepared Statement là thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng:
Kỹ thuật lập trình cần chú ý ở đây:
Chúng ta định nghĩa phương thức appendData() là abstract trong class BaseDAO.
Chúng ta đặc tả cụ thể các kỹ thuật lập trình của phương thức appendData() trong các lớp dẫn xuất là CategoryDAO và ProductDAO.
Bước 7.
Chúng ta thực hiện truy vấn dữ liệu và trả về kết quả là một thực thể của class NpgsqlDataReader.
Chúng ta tiếp tục gọi phương thức mappingData() để thực hiện việc chuyển đổi dữ liệu trong thực thể này về dạng mong muốn và thêm vào results.
Kỹ thuật lập trình cần chú ý ở đây:
Chúng ta định nghĩa phương thức mappingData() là abstract trong class BaseDAO.
Chúng ta đặc tả cụ thể các kỹ thuật lập trình của phương thức mappingData() trong các lớp dẫn xuất là CategoryDAO và ProductDAO.
Bước 8.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class BaseDAO – Phương thức insertData()
Bước 1.
Chúng ta đặc tả phương thức insertData() đối với tác vụ thêm dữ liệu vào một bảng trong PostgreSQL.
Chúng ta thực hiện kỹ thuật bắt lỗi kết nối và truy vấn cơ sở dữ liệu:
Bước 2.
Mã nguồn SQL tổng quan để thực hiện thêm dữ liệu:
INSERT INTO table (column_i, …, column_j) VALUE (value_i, …, value_j)
Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:
Bước 3.
Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:
Bước 4.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 5.
Chúng ta định nghĩa một thực thể của class NpgsqlCommand:
Bước 6.
Chúng ta gọi phương thức appendData() để thực hiện bước thứ ba của kỹ thuật Prepared Statement là thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng:
Bước 7.
Chúng ta thực hiện thêm dữ liệu:
Bước 8.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class BaseDAO – Phương thức updateData()
Bước 1.
Chúng ta đặc tả phương thức updateData() đối với tác vụ cập nhật dữ liệu trong một bảng trong PostgreSQL.
Chúng ta thực hiện kỹ thuật bắt lỗi kết nối và truy vấn cơ sở dữ liệu:
Bước 2.
Mã nguồn SQL tổng quan để thực hiện cập nhật dữ liệu:
UPDATE table SET (column_i = value_i, …, column_j = value_j) [WHERE column_k = value_k AND … AND column_l = value_l]
Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:
Bước 3.
Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:
Bước 4.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 5.
Chúng ta định nghĩa một thực thể của class NpgsqlCommand:
Bước 6.
Chúng ta gọi phương thức appendData() để thực hiện bước thứ ba của kỹ thuật Prepared Statement là thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng:
Bước 7.
Chúng ta thực hiện cập nhật dữ liệu:
Bước 8.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class BaseDAO – Phương thức deleteData()
Bước 1.
Chúng ta đặc tả phương thức deleteData() đối với tác vụ xóa dữ liệu trong một bảng trong PostgreSQL.
Chúng ta thực hiện kỹ thuật bắt lỗi kết nối và truy vấn cơ sở dữ liệu:
Bước 2.
Mã nguồn SQL tổng quan để thực hiện xóa dữ liệu:
DELETE FROM table WHERE column_k = value_k AND … AND column_l = value_l
Chúng ta đặc tả chuỗi SQL như sau:
Bước 3.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 4.
Chúng ta định nghĩa một thực thể của class NpgsqlCommand:
Bước 5.
Chúng ta gọi phương thức appendData() để thực hiện bước thứ ba của kỹ thuật Prepared Statement là thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng:
Bước 6.
Chúng ta thực hiện xóa dữ liệu:
Bước 7.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class CategoryDAO
Bước 1.
Chúng ta thiết kế lớp dẫn xuất CategoryDAO như sau:
Bước 2.
Chúng ta đặc tả kỹ thuật lập trình cho phương thức appendData() như sau:
Kỹ thuật lập trình cần chú ý:
Mỗi trường trong bảng category có định dạng khác nhau. Tương ứng là từng phần tử trong danh sách data cũng có định dạng khác nhau.
Theo quy định về kiểu dữ liệu List trong Csharp thì mọi phần tử đều phải có cùng một định dạng.
Như vậy chúng ta định nghĩa kiểu dữ liệu cho từng phần tử trong data là object: List<object> data. Đây là một class nguyên thủy và là cha của mọi class được định nghĩa.
Bước 3.
Chúng ta đặc tả kỹ thuật lập trình cho phương thức mappingData() như sau:
Class ProductDAO
Bước 1.
Chúng ta thiết kế lớp dẫn xuất ProductDAO như sau:
Bước 2.
Chúng ta đặc tả kỹ thuật lập trình cho phương thức appendData() như sau:
Bước 3.
Chúng ta đặc tả kỹ thuật lập trình cho phương thức mappingData() như sau:
Kết luận
Trong bài này, chúng ta cùng nhau tìm hiểu việc thực hiện kỹ thuật lập trình cho phần thứ hai và tập trung vào Tầng 3.
Trong bài tiếp theo, chúng ta cùng tìm hiểu việc thực hiện kỹ thuật lập trình cho Tầng 2.
Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.
Những nội dung chính sẽ được trình bày trong nhóm bài:
Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.
Nội dung chính của bài này là trình bày phần thứ hai và tập trung vào Tầng 3 trong nội dung về kỹ thuật lập trình với ngôn ngữ Java:
Phần 1. Xây dựng kiến trúc tổng quan của mô hình 3 lớp.
Phần 2. Kỹ thuật lập trình cụ thể cho từng tầng trong kiến trúc mô hình 3 lớp.
Class BaseDAO – Kiến trúc tổng quan
Bước 1.
Chúng ta thiết kế lớp cơ sở BaseDAO thành abstract class như sau:
Bước 2.
Chúng ta định nghĩa các thuộc tính trong class BaseDAO:
Bước 3.
Chúng ta định nghĩa phương thức khởi tạo không có tham số của class BaseDAO:
Bước 4.
Chúng ta định nghĩa các phương thức chính trong class BaseDAO:
Class BaseDAO – Phương thức getConnection()
Chúng ta đặc tả phương thức getConnection() đối với tác vụ kết nối đến PostgreSQL:
Class BaseDAO – Phương thức selectDataFromOneTable()
Bước 1.
Chúng ta đặc tả phương thức selectDataFromOneTable() đối với tác vụ truy xuất dữ liệu từ một bảng trong PostgreSQL.
Chúng ta thực hiện kỹ thuật bắt lỗi kết nối và truy vấn cơ sở dữ liệu:
Bước 2.
Mã nguồn SQL tổng quan để thực hiện truy vấn dữ liệu:
SELECT column_i, …, column_j FROM table [WHERE column_k = value_k AND … AND column_l = value_l]
Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:
Bước 3.
Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:
Kỹ thuật lập trình cần chú ý ở đây:
Giá trị của từng trường điều kiện được thể hiện bằng dấu “?”.
Chúng ta sẽ thay thế từng dấu “?” bằng giá trị tương ứng trong dataSet ở các bước sau.
Đây là bước đầu tiên của kỹ thuật Prepared Statement. Kỹ thuật này giúp truy xuất dữ liệu thuận tiện hơn, độc lập cơ sở dữ liệu và phần nào chống được kỹ thuật tấn công SQL Injection.
Bước 4.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 5.
Chúng ta định nghĩa một thực thể của class PreparedStatement:
Đây là bước thứ hai của kỹ thuật Prepared Statement giúp chuẩn bị thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng.
Bước 6.
Chúng ta gọi phương thức appendData() để thực hiện bước thứ ba của kỹ thuật Prepared Statement là thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng:
Kỹ thuật lập trình cần chú ý ở đây:
Chúng ta định nghĩa phương thức appendData() là abstract trong class BaseDAO.
Chúng ta đặc tả cụ thể các kỹ thuật lập trình của phương thức appendData() trong các lớp dẫn xuất là CategoryDAO và ProductDAO.
Bước 7.
Chúng ta thực hiện truy vấn dữ liệu và trả về kết quả là một thực thể của class ResultSet.
Chúng ta tiếp tục gọi phương thức mappingData() để thực hiện việc chuyển đổi dữ liệu trong thực thể này về dạng mong muốn và thêm vào results.
Kỹ thuật lập trình cần chú ý ở đây:
Chúng ta định nghĩa phương thức mappingData() là abstract trong class BaseDAO.
Chúng ta đặc tả cụ thể các kỹ thuật lập trình của phương thức mappingData() trong các lớp dẫn xuất là CategoryDAO và ProductDAO.
Bước 8.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class BaseDAO – Phương thức insertData()
Bước 1.
Chúng ta đặc tả phương thức insertData() đối với tác vụ thêm dữ liệu vào một bảng trong PostgreSQL.
Chúng ta thực hiện kỹ thuật bắt lỗi kết nối và truy vấn cơ sở dữ liệu:
Bước 2.
Mã nguồn SQL tổng quan để thực hiện thêm dữ liệu:
INSERT INTO table (column_i, …, column_j) VALUE (value_i, …, value_j)
Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:
Bước 3.
Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:
Bước 4.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 5.
Chúng ta định nghĩa một thực thể của class PreparedStatement:
Bước 6.
Chúng ta gọi phương thức appendData() để thực hiện bước thứ ba của kỹ thuật Prepared Statement là thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng:
Bước 7.
Chúng ta thực hiện thêm dữ liệu:
Bước 8.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class BaseDAO – Phương thức updateData()
Bước 1.
Chúng ta đặc tả phương thức updateData() đối với tác vụ cập nhật dữ liệu trong một bảng trong PostgreSQL.
Chúng ta thực hiện kỹ thuật bắt lỗi kết nối và truy vấn cơ sở dữ liệu:
Bước 2.
Mã nguồn SQL tổng quan để thực hiện cập nhật dữ liệu:
UPDATE table SET (column_i = value_i, …, column_j = value_j) [WHERE column_k = value_k AND … AND column_l = value_l]
Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:
Bước 3.
Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:
Bước 4.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 5.
Chúng ta định nghĩa một thực thể của class PreparedStatement:
Bước 6.
Chúng ta gọi phương thức appendData() để thực hiện bước thứ ba của kỹ thuật Prepared Statement là thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng:
Bước 7.
Chúng ta thực hiện cập nhật dữ liệu:
Bước 8.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class BaseDAO – Phương thức deleteData()
Bước 1.
Chúng ta đặc tả phương thức deleteData() đối với tác vụ xóa dữ liệu trong một bảng trong PostgreSQL.
Chúng ta thực hiện kỹ thuật bắt lỗi kết nối và truy vấn cơ sở dữ liệu:
Bước 2.
Mã nguồn SQL tổng quan để thực hiện xóa dữ liệu:
DELETE FROM table WHERE column_k = value_k AND … AND column_l = value_l
Chúng ta đặc tả chuỗi SQL như sau:
Bước 3.
Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:
Bước 4.
Chúng ta định nghĩa một thực thể của class PreparedStatement:
Bước 5.
Chúng ta gọi phương thức appendData() để thực hiện bước thứ ba của kỹ thuật Prepared Statement là thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng:
Bước 6.
Chúng ta thực hiện xóa dữ liệu:
Bước 7.
Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:
Class CategoryDAO
Bước 1.
Chúng ta thiết kế lớp dẫn xuất CategoryDAO như sau:
Bước 2.
Chúng ta đặc tả kỹ thuật lập trình cho phương thức appendData() như sau:
Kỹ thuật lập trình cần chú ý:
Mỗi trường trong bảng category có định dạng khác nhau. Tương ứng là từng phần tử trong danh sách data cũng có định dạng khác nhau.
Theo quy định về kiểu dữ liệu List trong Java thì mọi phần tử đều phải có cùng một định dạng.
Như vậy chúng ta định nghĩa kiểu dữ liệu cho từng phần tử trong data là Object: List<Object> data. Đây là một class nguyên thủy và là cha của mọi class được định nghĩa.
Bước 3.
Chúng ta đặc tả kỹ thuật lập trình cho phương thức mappingData() như sau:
Class ProductDAO
Bước 1.
Chúng ta thiết kế lớp dẫn xuất ProductDAO như sau:
Bước 2.
Chúng ta đặc tả kỹ thuật lập trình cho phương thức appendData() như sau:
Bước 3.
Chúng ta đặc tả kỹ thuật lập trình cho phương thức mappingData() như sau:
Kết luận
Trong bài này, chúng ta cùng nhau tìm hiểu việc thực hiện kỹ thuật lập trình cho phần thứ hai và tập trung vào Tầng 3.
Trong bài tiếp theo, chúng ta cùng tìm hiểu việc thực hiện kỹ thuật lập trình cho Tầng 2.