Bài giảng Chuyên đề Java: Chương 3 - Nguyễn Hoàng Anh
lượt xem 12
download
Bài giảng "Chuyên đề Java - Chương 3: Hibernate mapping Many - To - One" cung cấp cho các bạn sinh viên các kiến thức: Many to one, 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.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Chuyên đề Java: Chương 3 - Nguyễn Hoàng Anh
- CHUYÊN ĐỀ JAVA HIBERNATE MAPPING MANY-TO-ONE Nguyễn Hoàng Anh Email: nhanh@fit.hcmus.edu.vn hoanganhis@gmail.com ĐH KHTN, 2011 Upload by Cafeitvn.com
- Nội dung trình bày Many to one Lazy Initialization Fetch Cascade 2 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- Mối quan hệ nhiều – một (many-to-one) 1 * A B A B PK IDA PK IDB ... ... FK1 IDA ... 3 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- Mối quan hệ nhiều – một (many-to-one) Trong ứng dụng BookOnline – Mỗi đầu sách thuộc về một danh mục – Mỗi danh mục có thể có nhiều đầu sách Mối quan hệ hướng từ đầu sách đến danh mục được gọi là mối quan hệ nhiều – một (many-to-one) Nếu chỉ có mối quan hệ hướng từ sách đến danh mục gọi là mối quan hệ một chiều (unidirectional association) Nếu mối quan hệ hướng cả từ sách đến danh mục và ngược lại gọi là mối quan hệ hai chiều (bidirectional association) 4 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- BookOnline DanhMuc Sach 1 * - maDanhMuc : String - maSach :String - tenDanhMuc :String - tenSach :String - tacGia :String - giaBan :double - soLuong :int - hinhAnh :String - danhMuc :DanhMuc 5 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- DanhMuc POJO 1 package pojo; 2 public class DanhMuc implements java.io.Serializable { 3 4 private String maDanhMuc; 5 private String tenDanhMuc; 6 7 public DanhMuc() { 8 } 9 10 public DanhMuc(String maDanhMuc, String tenDanhMuc) { 11 this.maDanhMuc = maDanhMuc; 12 this.tenDanhMuc = tenDanhMuc; 13 } 14 //Getters & Setters 15 16 } 6 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- DanhMuc.hbm.xml 1 2 4 5 6 7 8 9 10 11 12 DanhMuc Sach 1 * - maDanhMuc : String - maSach :String - tenDanhMuc :String - tenSach :String - tacGia :String - giaBan :double - soLuong :int - hinhAnh :String 7 Upload by Cafeitvn.com - danhMuc :DanhMuc Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- Sach POJO 1 package pojo; 2 public class Sach implements java.io.Serializable { 3 private String maSach; 4 private DanhMuc danhMuc; 5 6 private String tenSach; 7 private String tacGia; 8 private double giaBan; 9 private int soLuong; 10 private String hinhAnh; 11 12 13 //Constructors 14 15 //Getters & Setters 16 8 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- Sach.hbm.xml 1 2 3 4 5 6 7 . . . 8 10 11 12 13 DanhMuc Sach 1 * - maDanhMuc : String - maSach :String - tenDanhMuc :String - tenSach :String - tacGia :String - giaBan :double - soLuong :int - hinhAnh :String 9 Upload by Cafeitvn.com - danhMuc :DanhMuc Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- SachDAO – lấy thông tin sách Viết phương thức lấy thông tin sách dựa vào mã sách cùng với danh mục mà nó thuộc về DanhMuc Sach 1 * - maDanhMuc : String - maSach :String - tenDanhMuc :String - tenSach :String - tacGia :String - giaBan :double - soLuong :int - hinhAnh :String - danhMuc :DanhMuc 10 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- SachDAO – lấy thông tin sách 1 public class SachDAO { 2 public static Sach layThongTinSach(String maSach) { 3 Sach sach = null; 4 Session session = HibernateUtil.getSessionFactory() 5 .openSession(); 6 try { 7 sach = (Sach) session.get(Sach.class, maSach); 8 } catch (HibernateException ex) { 9 //Log the exception 10 System.err.println(ex); 11 } finally { 12 session.close(); 13 } 14 return sach; 15 } 16 } 11 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- SachDAO – lấy thông tin sách 1 public class Main { 2 3 public static void main(String[] args) { 4 5 Sach sach = SachDAO.layThongTinSach("S001"); 6 if (sach != null) { Mã danh mục 7 DanhMuc dm = sach.getDanhMuc(); được nạp 8 System.out.println(dm.getMaDanhMuc()); 9 System.out.println(dm.getTenDanhMuc()); 10 } 11 } Mã danh mục:DM001 12 } Exception xảy ra 13 12 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- SachDAO – lấy thông tin sách 1 public class SachDAO { 2 public static Sach layThongTinSach(String maSach) { 3 Sach sach = null; 4 Session session = HibernateUtil.getSessionFactory() 5 .openSession(); 6 try { 7 sach = (Sach) session.get(Sach.class, maSach); 8 DanhMuc dm=sach.getDanhMuc(); 9 System.out.println(dm.getMaDanhMuc()); 10 OK System.out.println(dm.getTenDanhMuc()); 11 12 } catch (HibernateException ex) { 13 //Log the exception 14 System.err.println(ex); 15 } finally {session.close();} Mã danh mục:DM001 16 return sach; Danh mục: Java 17 } 18 } 13 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- SachDAO – lấy thông tin sách Khi truy xuất các thuộc tính bên trong danh mục (ngoài mã danh mục) từ đối tượng sách bên trong session thì hoàn toàn được. Nhưng khi truy xuất các thuộc tính bên trong danh mục (ngoài mã danh mục) từ đối tượng sách bên ngoài session thì exception sẽ xảy ra. Trong Hibernate cơ chế này được gọi là Lazy Initialization 14 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- 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 15 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- SachDAO – lấy thông tin sách Viết phương thức lấy thông tin sách dựa vào mã sách cùng với danh mục mà nó thuộc về DanhMuc Sach 1 * - maDanhMuc : String - maSach :String - tenDanhMuc :String - tenSach :String - tacGia :String ? - giaBan :double - soLuong :int - hinhAnh :String - danhMuc :DanhMuc 16 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- Cách 1 – lấy thông tin danh mục từ mã danh mục 1 public class Main { 2 3 public static void main(String[] args) { 4 OK 5 6 Sach sach = SachDAO.layThongTinSach("S001"); 7 if (sach != null) { 8 String maDanhMuc=sach.getDanhMuc().getMaDanhMuc(); 9 DanhMuc dm = DanhMucDAO.layThongTinDanhMuc(maDanhMuc); 10 System.out.println(dm.getMaDanhMuc()); 11 System.out.println(dm.getTenDanhMuc()); 12 13 } 14 } 15 } Mã danh mục:DM001 16 Danh mục: Java 17 18 17 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- Cách 2 – Sử dụng Hibernate.initialize(Object obj) 1 public class SachDAO { 2 public static Sach layThongTinSach(String maSach) { 3 Sach sach = null; 4 Session session = HibernateUtil.getSessionFactory() 5 .openSession(); 6 try { 7 sach = (Sach) session.get(Sach.class, maSach); 8 Hibernate.initialize(sach.getDanhMuc()); 9 } catch (HibernateException ex) { 10 //Log the exception 11 System.err.println(ex); 12 } finally { 13 session.close(); 14 } 15 return sach; 16 } } 18 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- Cách 2 – Sử dụng Hibernate.initialize(Object obj) 1 public class Main { 2 3 public static void main(String[] args) { OK 4 5 6 Sach sach = SachDAO.layThongTinSach("S001"); 7 if (sach != null) { 8 DanhMuc dm = sach.getDanhMuc(); 9 System.out.println(dm.getMaDanhMuc()); 10 System.out.println(dm.getTenDanhMuc()); 11 } 12 13 } 14 } 15 Mã danh mục:DM001 16 Danh mục: Java 17 18 19 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
- Cách 3: điều chỉnh thuộc tính lazy trong Sach.hbm.xml 1 2 3 4 5 6 7 . . . 8 10 11 12 13 20 Upload by Cafeitvn.com Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Đề cương bài giảng Java cơ sở
193 p | 461 | 261
-
BÀI GIẢNG LẬP TRÌNH JAVA - HUỲNH CÔNG PHÁP
239 p | 263 | 85
-
Đề cương bài giảng Java cơ sở - Chương 1
51 p | 179 | 53
-
Bài giảng: Giới thiệu về Package
35 p | 156 | 38
-
Bài giảng Chuyên đề Java: Chương 1 - Nguyễn Hoàng Anh
17 p | 138 | 17
-
Bài giảng Chuyên đề Java: Chương 2 - Nguyễn Hoàng Anh
27 p | 82 | 12
-
Bài giảng Chuyên đề Java: Chương 6 - Nguyễn Hoàng Anh
27 p | 116 | 11
-
Bài giảng Chuyên đề Java: Chương 5 - Nguyễn Hoàng Anh
23 p | 88 | 11
-
Bài giảng Chuyên đề Java: Chương 4 - Nguyễn Hoàng Anh
23 p | 102 | 10
-
Bài giảng Lập trình Java: Chương 3 - Java cơ bản (TT)
9 p | 88 | 6
-
Bài giảng Lập trình Java 1 - Bài 2: Kiểu, toán tử, lệnh if, switch
33 p | 46 | 5
-
Bài giảng Lập trình Java: Chương 2 - Java cơ bản
20 p | 83 | 4
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