intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình Java - Chương 5: Lập trình theo mô hình 2 lớp với Java

Chia sẻ: Tầm Y | Ngày: | Loại File: PPTX | Số trang:37

76
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Lập trình Java - Chương 5: Lập trình theo mô hình 2 lớp với Java" cung cấp cho người học các kiến thức: Hướng tiếp cận phân tầng trong phần mềm, vai trò của hướng tiếp cận phân tầng, một số hướng tiếp cận phân từng thông dụng,... Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình Java - Chương 5: Lập trình theo mô hình 2 lớp với Java

  1. LOGO Phát triển UD CSDL 2 Chương 5: Lập trình theo mô hình 2 lớp với JAVA
  2. Nội dung • Hướng tiếp cận phân tầng trong phần mềm • Vai trò của hướng tiếp cận phân tầng  • Một số hướng tiếp cận phân từng thông dụng  • Mô hình 2 tầng đơn giản  • Một số ví dụ
  3. Hướng tiếp cận phân tầng • Chia phần mềm thành các tầng (layer) • ̛ ́:  Khi thiết kế cần luu y – ̣ Mỗi tầng chiu tra ́ch nhiệm riêng.  – Dữ liệu đầu vào và đầu ra cua mô ̉ ̃i tầng nên rõ ràng và dễ  sử dung.  ̣ – Khi một tầng bi thay đôi thi ̣ ̉ ̉ ̆ng anh hu ̀ kha na ̉ ̛ơng cua no ̉ ̉ ́ đến các  ̉ ́.  tầng khác thấp nhất nhất có thê co
  4. Vai trò của hướng tiếp cận phân tầng • Sẵn sàng cho việc mở rộng hệ thống • Tái sử dung ma ̣ ̃ nguồn • Dễ bảo trì hệ thống  • Dễ dàng phân chia công việc trong nhóm 
  5. Một số mô hình phân tầng • 2 Layer / 2 Tier  • 3 Layer / 3 Tier • N Layer / N Tier 
  6. Mô hình 2 tầng đơn giản Tầng giao diện Đối tượng  trao đổi dữ  liệu: POJO Tầng truy cập dữ liệu Cơ sở dữ liệu
  7. Đối tượng trao đổi dữ liệu (POJO) đơn giản • POJO: Plain Old Java Object • Mỗi lớp POJO đai di ̣ ện cho bang trong co s ̉ ̛ ở dữ liệu  • Mỗi lớp POJO gồm những thành phần sau: – Các thuộc tính tuong  ̛ ̛ ứng với các cột trong bang – Tô ̉ ̉ ́i thiêu  một phuong th ̛ ̛ ức khởi tao m ̣ ặc đinh  ̣ – ̛ ̛ Nên viết thêm phuong th ức khởi tao đâ ̣ ̉ ̀y đu tham sô ́  – ̛ ̛ Các phuong th ức cung cấp và cập nhật thông tin cho từng  thuộc tính (get/set) 
  8. Đối tượng trao đổi dữ liệu (POJO) đơn Database giản *.java XXXTable XXXPOJO YYYTable YYYPOJO ZZZTable ZZZPOJO
  9. Đối tượng trao đổi dữ liệu (POJO) đơn giản nhanvien NhanVien phongban PhongBan
  10. 1 POJO: PhongBan package pojo;  2 import java.io.Serializable;  3 public class PhongBan implements Serializable {  4 private int MAPHG; 5 private String TENPHG; 6 //Các phương thức khởi tạo 7 public PhongBan() { 8 } 9 public PhongBan(int maPhongBan, String tenPhongBan) { 10         this.MAPHG = maPhongBan; 11         this.TENPHG = tenPhongBan; 12 } 13 // Các phương thức get/set 14 public String getTenPhong() { 15         return this.TENPHG; 16 } 17 public void setTenPhong (String tenphong) { 18         this.TENPHG = tenphong; 19 }
  11. 1 POJO: NhanVien package pojo;  2 import java.io.Serializable;  3 public class NhanVien implements Serializable {  4 //Các thuộc tính  5 private int MANV; 6 private String HOTEN; 7 private String PHAI; 8 private Date NGAYSINH; 9 private String DIACHI; 10 private float LUONG; 11 private int PHONG; 12 private Boolean TRANGTHAI; 13 14 //Các phương thức khởi tạo 15 … 16 … 17 // Các phương thức get/set 18 19 … 20 …
  12. Tầng dữ liệu (DAO) • Mỗi DAO đại diện cho một bảng bên dưới CSDL • Mỗi DAO thường chứa những phương thức như: – Thêm, xoá, sửa dữ liệu – Rú t trí ch dữ  liệ u  – Các phương thức truy xuất dữ liệu hỗ trợ cho nghiệp vụ  • ̛ ̛ Mỗi phuong th ức trong DAO có các tham số đầu vào và  ̉ ̉ các kết qua tra ra la ̀:  – Đối tượng POJO, mang POJO  ̉ (ArrayList) – Kiêu d ̉ ̛ boolean,int, String, float, ...  ̉ ữ liệu đon gian nhu:  ̛
  13. Tầng dữ liệu (DAO) *.java XXXDAO YYYDAO ZZZDAO POJOs JDBC DB XXXTable YYYTable ZZZTable
  14. Tầng dữ liệu (DAO) *.java NhanVienDAO.java PhongBanDAO.java NhanVienDAO PhongBanDAO POJOs JDBC DB NhanVien PhongBan
  15. Xây dựng lớp hỗ trợ kết nối và truy xuất CSDL – MySQLDataHelper • Mục đích: – Tập trung hoá các thao tác mở kết nối cơ sở dữ liệu, thực hiện các  truy vấn (thêm, xoá, sửa, đọc, tìm kiếm, …) do một lớp quản lý   nâng cao khả năng tái sử dụng và bảo trì. Xây dựng lớp MySQLDataHelper  Một số tên gọi khác: DataService, DataProvider  Một số phương thức cơ bản cần xây dựng: - Mở kết nối - Đóng kết nối - Thực thi câu lệnh SQL - Thực thi stored procedure - …
  16. 1 MySQLDataHelper – Overview package dao; 2   3 import …; 4 5 public class MySQLDataAccessHelper { 6   7     private Connection connection; 8     public void open() { 9        … 10     } 11     public void close() { 12        … 13     } 14     public ResultSet executeQuery(String sql) { 15        … 16 17     } 18     public int executeUpdate(String sql) { 19        … 20     }      
  17. 1 MySQLDataHelper – Details (1) package dao;  2 import java.sql.Connection;  import java.sql.Driver;  3 import java.sql.DriverManager;  import java.sql.ResultSet;  4 import java.sql.Statement;  import java.util.Properties;  5 public class MySQLDataAccessHelper {  6     private Connection connection;  7 8     public void open() {  9         try {  10             Driver d = new org.gjt.mm.mysql.Driver();  11             DriverManager.registerDriver(d);  12             String url = "jdbc:mysql://localhost:3306/nhanviendb";  13             Properties info = new Properties();  14             info.setProperty("characterEncoding", "utf­8");  15 16             info.setProperty("user", "root");  17             info.setProperty("password", "");  18             this.connection = DriverManager.getConnection(url, info);  19         } catch (Exception ex) {  20             System.out.println(ex.getMessage()); 
  18. MySQLDataHelper – Details (2)     public void close() {  21 22 23         try {  24             this.connection.close();  25         } catch (Exception ex) {  26             System.out.println(ex.getMessage());  27         }  28     }  29 30 31     public ResultSet executeQuery (String sql) {  32         ResultSet rs = null;  33         try {  34             Statement sm = this.connection.createStatement();  35             rs = sm.executeQuery(sql);  36         } catch (Exception ex) {  37             System.out.println(ex.getMessage());  38         }          return rs; 
  19. MySQLDataHelper – Details (3)     public int executeUpdate(String sql) {  39 40 41         int n = ­1;  42         try {  43 44             Statement sm = this.connection.createStatement();  45             n = sm.executeUpdate(sql);  46 47         } catch (Exception ex) {  48             System.out.println(ex.getMessage());  49         }  50         return n;  51     }  }
  20. PhongBanDAO.java • Xây dựng lớp truy cập dữ liệu PhongBanDAO với các  phương thức: – public static ArrayList layDanhSachPhongBan()  – public static ArrayList timKiemPhongBanTheoTen  (String tenPhongBan)  – public static boolean themPhongBan(PhongBan pb)  – public static boolean xoaPhongBan(int maPhongBan) – public static boolean capNhatPhongBan(PhongBan pb)  – public static PhongBan layPhongBan (int maPhong) Lưu ý: Tuỳ theo nghiệp vụ mà lớp truy cập dữ liệu có những phương  thức khác. VD: – public static boolean kiemTraTonTai(int maPhongBan) 
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2