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.
Trang 1Phát tri n UD CSDL 2 ể
Chương 5 :
Lập trình theo mô hình 2 lớp với JAVA
Trang 2Nộ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 ộ ố ụ
Trang 3Hướng tiếp cận phân tầng
• Chia phâ n mê m tha nh ca c t ng (layer) ̀ ̀ ̀ ́ ầ
• Khi thiê t kê câ n luu y : ́ ́ ̀ ̛ ́
– Mô i tâ ng chiu tra ch nhi m rie ng. ̃ ̀ ̣ ́ ẹ ̂ ̂
– D li u đâ u va o va đâ u ra cua mô i tâ ng ne n ro ra ng va dê ư ẹ ̃ ̂ ̀ ̀ ̀ ̀ ̉ ̃ ̀ ̂ ̃ ̀ ̀ ̃
s dung. ử ̣
– Khi m t tâ ng bi thay đôi thi kha na ng anh hu ng cua no đê n ca c ọ ̂ ̀ ̣ ̉ ̀ ̉ ̆ ̉ ̛ở ̉ ́ ́ ́
tâ ng kha c thâ p nhâ t nhâ t co thê co ̀ ́ ́ ́ ́ ́ ̉ ́
Trang 4Vai trò của hướng tiếp cận phân tầng
• Să n sa ng cho vi c m r ng h thô ng ̃ ̀ ẹ ̂ ở ọ ̂ ẹ ̂ ́
• Ta 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 ễ ệ
Trang 5Một số mô hình phân tầng
• 2 Layer / 2 Tier
• 3 Layer / 3 Tier
• N Layer / N Tier
Trang 6Mô hình 2 tầng đơn giản
Trang 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 tha nh phâ n sau: ̀ ư ̃ ̀ ̀
– Ca c thu c ti nh tuong ng v i ca c c t trong bang – Tô i thiêu ́ ọ ̂ ́ ̛ ̛ ư ́ ơ ́ ́ ọ ̂ ̉ ́ ̉
m t phuong th c kh i tao m c đinh ọ ̂ ̛ ̛ ư ́ ở ̣ ạ ̆ ̣
– Ne n viê t the m phuong th c kh i tao đâ y đu tham sô ̂ ́ ̂ ̛ ̛ ư ́ ở ̣ ̀ ̉ ́
– Ca c phuong th c cung câ p va c p nh t tho ng tin cho t ng ́ ̛ ̛ ư ́ ́ ̀ ạ ̂ ạ ̂ ̂ ư ̀ thu c ti nh (get/set) ọ ̂ ́
Trang 8Đối tượng trao đổi dữ liệu (POJO) đơn giản
Trang 9Đối tượng trao đổi dữ liệu (POJO) đơn giản
nhanvien
phongban
NhanVien
PhongBan
Trang 10//Các phương th c kh i t oứ ở ạ
public PhongBan() {}
public PhongBan(int maPhongBan, String tenPhongBan) { this.MAPHG = maPhongBan;
this.TENPHG = tenPhongBan;
}
// Các phương th c get/setứ
public String getTenPhong() { return this.TENPHG;
}public void setTenPhong (String tenphong) { this.TENPHG = tenphong;
}}
Trang 12Tầ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 ử ữ ệ
– Ru t tri 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 co ca c tham sô đâ u va o va ̃ ̛ ̛ ư ́ ́ ́ ́ ̀ ̀ ̀
ca c kê t qua tra ra la : ́ ́ ̉ ̉ ̀
– Đ i t ố ượ ng POJO, mang POJO ̉ (ArrayList<POJO>)
– Kiêu d li u đon gian nhu: ̉ ư ẹ ̃ ̂ ̛ ̉ ̛ boolean,int, String, float,
Trang 15Xây dựng lớp hỗ trợ kết nối và truy xuất
• 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ì ả ử ụ ả
Trang 17import java.sql.DriverManager; import java.sql.ResultSet;
import java.sql.Statement; import java.util.Properties;
public class MySQLDataAccessHelper {
Properties info = new Properties();
info.setProperty("characterEncoding", "utf8");
info.setProperty("user", "root");
info.setProperty("password", "");
this.connection = DriverManager.getConnection(url, info); } catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
Trang 27NhanVienDAO.java
• Lâ y danh sa ch nha n vie n ́ ́ ̂ ̂
• Lâ y tho ng tin chi tiê t cua nha n vie n d a tre n ma nha n ́ ̂ ́ ̉ ̂ ̂ ự ̂ ̃ ̂ vie n ̂
• Kiêm tra xem nha n vie n đa tô n tai chua ̉ ̂ ̂ ̃ ̀ ̣ ̛
• The m nhân vie n ̂ ̂
• Xo a nhân vie n ́ ̂
• C p nh t nhân vie n ạ ̂ ạ ̂ ̂
Trang 28Tầng giao diện (GUI)
• Có nhi u lo i giao di n: ề ạ ệ
– Giao di n ệ WEB
– Giao di n ệ Window
– Giao di n ệ Mobile
Trang 29Tầng giao diện (GUI)
Trang 30Tầng giao diện (GUI)
Trang 31VD 1: Chức năng Xem danh sách phòng ban
PhongBanDAO
PhongBan
DB
PB1_GetListPhongBanGUI
Trang 32public PB1_GetListPhongBan() {
initComponents();
ArrayList< PhongBan> dsPhongBan = PhongBanDAO.layDanhSachPhongBan();
String[] columns = new String [] { "Mã Phòng" , "Tên Phòng" };
DefaultTableModel model = new DefaultTableModel( null , columns);
Trang 33VD 2: Chức năng Thêm phòng ban
Trang 34String tenphong = jtxtTENPHG getText ();
PhongBan p = new PhongBan ();
Trang 35VD 3: Chức năng Cập nhật phòng ban
Trang 37String tenphong = jtxtTenPhong.getText();
PhongBan p = new PhongBan (maphong, tenphong);