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

Bài giảng Chuyên đề Java: Chương 6 - Nguyễn Hoàng Anh

Chia sẻ: Nhân Sinh ảo ảnh | Ngày: | Loại File: PDF | Số trang:27

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

Bài giảng "Chuyên đề Java - Chương 6: Hibernate mapping Many - to - Many" trình bày các nội dung: Các mối quan hệ nhiều - Nhiều, many to many, Lazy Initialization, Fetch, Cascade. Đây là một tài liệu hữu ích dành cho các các bạn sinh viên Công nghệ Thông tin và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Chuyên đề Java: Chương 6 - Nguyễn Hoàng Anh

  1. CHUYÊN ĐỀ JAVA HIBERNATE MAPPING MANY-TO-MANY Nguyễn Hoàng Anh Email: nhanh@fit.hcmus.edu.vn ĐH KHTN, 2011 Upload by Cafeitvn.com
  2. Nội dung trình bày  One to many  Lazy Initialization  Fetch  Cascade 2 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  3. Mối quan hệ nhiều-nhiều (many-to-many) * * A B AB PK IDA (FK) A PK IDB (FK) B PK IDA PK IDB ... ... ... ... 3 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  4. Mối quan hệ nhiều-nhiều (many-to-many)  Trong ứng dụng đăng ký học phần – Mỗi sinh viên có thể đăng ký nhiều khóa học – Mỗi khóa học có thể có nhiều sinh viên đăng ký học  Mối quan hệ hướng từ sinh viên đến khóa học và ngược lại gọi là mối quan hệ nhiều – nhiều(many-to-many) 4 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  5. Many to many SinhVien KhoaHoc 1 * - maSinhVien :String * 1 - maKhoaHoc :String - tenSinhVien :String - tenKhoaHoc :String - email :String - sinhViens :Set - diaChi :String - khoaHocs : Set 5 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  6. Many to many SinhVien KhoaHoc 1 * - maSinhVien :String * 1 - maKhoaHoc :String - tenSinhVien :String - tenKhoaHoc :String - email :String - sinhViens :Set - diaChi :String - khoaHocs : Set 6 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  7. SinhVien KhoaHoc 1 * SinhVien POJO - maSinhVien :String - tenSinhVien :String * 1 - maKhoaHoc :String - tenKhoaHoc :String - email :String - sinhViens :Set - diaChi :String 1 public class SinhVien implements java.io.Serializable { - khoaHocs : Set 2 3 4 private String maSinhVien; 5 private String tenSinhVien; 6 private String email; 7 private String diaChi; 8 private Set khoahocs = new HashSet(0); 9 10 // Các phương thức khởi tạo 11 . . . 12 // Các phương thức get/set 13 . . . 7 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  8. SinhVien KhoaHoc 1 * - maSinhVien :String SinhVien.hbm.xml - tenSinhVien :String * 1 - maKhoaHoc :String - tenKhoaHoc :String - email :String - sinhViens :Set - diaChi :String 1 - khoaHocs : Set 2 4 . . . 5 7 8 9 10 11
  9. SinhVien KhoaHoc 1 * KhoaHoc POJO - maSinhVien :String - tenSinhVien :String * 1 - maKhoaHoc :String - tenKhoaHoc :String - email :String - sinhViens :Set - diaChi :String 1 public class KhoaHoc implements java.io.Serializable { - khoaHocs : Set 2 3 4 private String maKhoaHoc; 5 private String tenKhoaHoc; 6 private Set sinhviens = 7 new HashSet(0); 8 9 // Các phương thức khởi tạo 10 . . . 11 // Các phương thức get/set 12 . . . 9 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  10. SinhVien KhoaHoc 1 * - maSinhVien :String SinhVien.hbm.xml - tenSinhVien :String * 1 - maKhoaHoc :String - tenKhoaHoc :String - email :String - sinhViens :Set - diaChi :String 1 - khoaHocs : Set 2 4 . . . 5 7 8 10 11 12 14 15 16 17 10 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  11. SinhVienDAO – lấy thông tin sinh viên 1 public class SinhVienDAO { 2 public static SinhVien layThongTinSinhVien(String maSinhVien) 3 { 4 SinhVien sv = null; 5 Session session = HibernateUtil.getSessionFactory() 6 .openSession(); 7 try { 8 sv =(SinhVien) session.get(SinhVien.class, maSinhVien); 9 } catch (HibernateException ex) { 10 System.err.println(ex); 11 } finally { 12 session.close(); 13 } 14 return sv; 15 } 11 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  12. SinhVienDAO – lấy thông tin sinh viên 1 public class Main { 2 public static void main(String[] args) { 3 SinhVien sv=SinhVienDAO.layThongTinSinhVien("0312143"); 4 System.out.println(sv.getMaSinhVien()); 5 System.out.println(sv.getTenSinhVien()); 6 System.out.println(sv.getEmail()); 7 System.out.println(sv.getDiaChi()); 8 Iterator khoaHocs=sv.getKhoahocs().iterator(); 9 while(khoaHocs.hasNext()){ 10 KhoaHoc kh=khoaHocs.next(); 11 System.out.println(kh.getMaKhoaHoc()); 12 System.out.println(kh.getTenKhoaHoc()); 13 } 14 } 15 } 12 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  13. SinhVienDAO – lấy thông tin sinh viên Lazy = true 13 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  14. Lazy Initialization  Trong Hibernate, Lazy Initialization giúp – Tránh các câu truy vấn cơ sở dữ liệu không cần thiết – Gia tăng hiệu suất thực thi – Lazy mặc định có giá trị là true 14 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  15. SinhVien KhoaHoc 1 * - maSinhVien :String SinhVien.hbm.xml - tenSinhVien :String * 1 - maKhoaHoc :String - tenKhoaHoc :String - email :String - sinhViens :Set - diaChi :String 1 - khoaHocs : Set 2 4 . . . 5 13 14 15 16 15 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  16. SinhVienDAO – lấy thông tin sinh viên 1 public class Main { 2 public static void main(String[] args) { 3 SinhVien sv=SinhVienDAO.layThongTinSinhVien("0312143"); 4 System.out.println(sv.getMaSinhVien()); 5 System.out.println(sv.getTenSinhVien()); 6 System.out.println(sv.getEmail()); 7 System.out.println(sv.getDiaChi()); 8 Iterator khoaHocs=sv.getKhoahocs().iterator(); 9 while(khoaHocs.hasNext()){ 10 KhoaHoc kh=khoaHocs.next(); 11 System.out.println(kh.getMaKhoaHoc()); 12 System.out.println(kh.getTenKhoaHoc()); 13 } 14 } 15 } 16 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  17. SinhVienDAO – lấy thông tin sinh viên Lazy = false 17 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  18. SinhVien KhoaHoc 1 * - maSinhVien :String SinhVien.hbm.xml - tenSinhVien :String * 1 - maKhoaHoc :String - tenKhoaHoc :String - email :String - sinhViens :Set - diaChi :String 1 - khoaHocs : Set 2 4 . . . 5 7 8 9 10 11
  19. SinhVienDAO – lấy thông tin sinh viên 1 public class SinhVienDAO { 2 public static SinhVien layThongTinSinhVien(String maSinhVien) 3 { SinhVien sv = null; 4 Session session = HibernateUtil.getSessionFactory() 5 .openSession(); 6 try { 7 String hql= " select sv "; 8 hql +="from SinhVien sv left join fetch sv.khoahocs"; 9 hql += " where sv.maSinhVien=:maSinhVien"; 10 Query query = session.createQuery(hql); 11 query.setString("maSinhVien", maSinhVien); 12 sv = (SinhVien) query.uniqueResult(); 13 } catch (HibernateException ex) { 14 System.err.println(ex); 15 } finally { 16 session.close(); 17 } 18 return sv; 19 } 19 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
  20. SinhVienDAO – lấy thông tin sinh viên 1 public class Main { 2 public static void main(String[] args) { 3 SinhVien sv=SinhVienDAO.layThongTinSinhVien("0312143"); 4 System.out.println(sv.getMaSinhVien()); 5 System.out.println(sv.getTenSinhVien()); 6 System.out.println(sv.getEmail()); 7 System.out.println(sv.getDiaChi()); 8 Iterator khoaHocs=sv.getKhoahocs().iterator(); 9 while(khoaHocs.hasNext()){ 10 KhoaHoc kh=khoaHocs.next(); 11 System.out.println(kh.getMaKhoaHoc()); 12 System.out.println(kh.getTenKhoaHoc()); 13 } 14 } 15 } 20 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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