![](images/graphics/blank.gif)
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
lượt xem 6
download
![](https://tailieu.vn/static/b2013az/templates/version1/default/images/down16x21.png)
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.
Bình luận(0) Đăng nhập để gửi bình luận!
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
- 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
- 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ụ
- 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
- 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
- Một số mô hình phân tầng • 2 Layer / 2 Tier • 3 Layer / 3 Tier • N Layer / N Tier
- 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
- Đố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)
- Đối tượng trao đổi dữ liệu (POJO) đơn Database giản *.java XXXTable XXXPOJO YYYTable YYYPOJO ZZZTable ZZZPOJO
- Đối tượng trao đổi dữ liệu (POJO) đơn giản nhanvien NhanVien phongban PhongBan
- 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 }
- 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 …
- 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: ̛
- Tầng dữ liệu (DAO) *.java XXXDAO YYYDAO ZZZDAO POJOs JDBC DB XXXTable YYYTable ZZZTable
- Tầng dữ liệu (DAO) *.java NhanVienDAO.java PhongBanDAO.java NhanVienDAO PhongBanDAO POJOs JDBC DB NhanVien PhongBan
- 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 - …
- 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 }
- 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", "utf8"); 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());
- 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;
- 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 } }
- 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)
![](images/graphics/blank.gif)
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình java cơ bản: Chương 2 - Lê Tân
39 p |
535 |
166
-
Bài giảng Lập trình java cơ bản: Chương 4 - Lê Tân
23 p |
257 |
87
-
Bài giảng Lập trình java cơ bản: Chương 3 - Lê Tân
20 p |
288 |
84
-
Bài giảng Lập trình java cơ bản: Chương 6 - Lê Tân
35 p |
254 |
79
-
Bài giảng Lập trình java cơ bản: Chương 5 - Lê Tân
26 p |
282 |
77
-
Bài giảng Lập trình java cơ bản: Chương 8 - Lê Tân
30 p |
221 |
75
-
Bài giảng Lập trình java cơ bản: Chương 9 - Lê Tân
39 p |
219 |
71
-
Bài giảng Lập trình Java cơ bản: Chương 10 - Lê Tân
20 p |
237 |
71
-
Bài giảng Lập trình java cơ bản: Chương 7 - Lê Tân
26 p |
261 |
67
-
Bài giảng Lập trình Java cơ bản: Chương 11 - Lê Tân
29 p |
230 |
63
-
Bài giảng Lập trình Java - ThS. Huỳnh Công Pháp
239 p |
168 |
22
-
Bài giảng Lập trình Java cơ bản: Chương 1 - GV. Võ Hoàng Phương Dung
62 p |
150 |
21
-
Bài giảng Lập trình Java: Chương 1 - Huỳnh Ngọc Tín
64 p |
87 |
8
-
Bài giảng Lập trình Java: Bài 8 - Bùi Trọng Tùng
69 p |
83 |
7
-
Bài giảng Lập trình Java: Bài 9 - Bùi Trọng Tùng
30 p |
78 |
7
-
Bài giảng Lập trình Java cơ bản - Cao Đức Thông
34 p |
85 |
5
-
Bài giảng Lập trình Java: Chương 1 - Tổng quan về công nghệ Java
33 p |
134 |
5
-
Bài giảng Lập trình Java - Trường Đại học Kỹ thuật Công nghiệp
67 p |
4 |
1
![](images/icons/closefanbox.gif)
![](images/icons/closefanbox.gif)
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn
![](https://tailieu.vn/static/b2013az/templates/version1/default/js/fancybox2/source/ajax_loader.gif)