Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 51 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
51
Dung lượng
3,8 MB
Nội dung
BÀI THÍ NGHIỆM SỐ: XÂY DỰNG HIBERNATE CHO ỨNG DỤNG JAVA . 2 I. Lý thuyết 2 II. Thí nghiệm 2 Thời gian thực hiện thí nghiệm: 60 phút 2 Tiến trình thực hiện: 2 Phần 1: Tạo CSDL "mydatabase" 2 (0.1) Chạy máy chủ CSDL Java DB (Derby) chưa khởi động 3 (0.2) Tạo CSDL lấy tên “mydatabase" (nếu máy bạn chưa có) . 3 (0.3) Kiểm tra xem plug-in Hibernate cài đặt chưa 5 Phần 2: Xây dựng ứng dụng Hibernate "HelloWorld" . 6 (1.1) Tạo lớp POJO 7 (1.2) Tạo file ánh xạ Hibernate cho lớp POJO. 12 (1.3) Tạo file cấu hình Hibernate 17 (1.4) Tạo file Main.java HibernateUtil.java . 21 (1.5) Thêm thư viện Hibernate driver Java DB 26 (1.6) Thêm file log4j.properties 29 (1.7) Dịch chạy ứng dụng 32 Tổng kết 37 Phần 3: Xây dựng ứng dụng "HibernateHelloWorld2" 37 (2.1) Tạo dự án "HibernateHelloWorld2" chép từ dự án "HibernateHelloWorld" 37 (2.2) Thêm lớp POJO mới 39 (2.3) Viết file ánh xạ, Student.hbm.xml, cho lớp Student 40 (2.4) Sửa file Main.java 41 (2.5) Thay đổi file hibernate.cfg.xml . 42 (2.6) Dịch chạy ứng dụng 43 (2.7) Nhận lệnh SQL từ Hibernate 44 Tổng kết 46 Phần 3: Cấu hình Hibernate JavaDoc . 46 (3.1) Cấu hình thư mục Hibernate Javadoc cho NetBeans IDE 46 (3.2) Hiển thị Javadoc giao diện Session Hibernate cách trực quan 50 Tổng kết 51 BÀI THÍ NGHIỆM SỐ: XÂY DỰNG HIBERNATE CHO ỨNG DỤNG JAVA I Lý thuyết Hibernate Hibernate dịch vụ lưu trữ truy vấn liệu quan hệ mạnh mẽ nhanh chóng Hibernate giúp phát triển lớp (class) dùng để lưu trữ liệu theo cách thức hướng đối tượng: kết hợp (association), thừa kế (inheritance), đa hình (polymorphism), tổ hợp (composition) tập hợp (collections) Hibernate cho phép ta thực câu truy vấn liệu cách sử dụng ngôn ngữ SQL mở rộng Hibernate (HQL) ngôn ngữ SQL nguyên thuỷ sử dụng API Không giống tầng bền vững (persistence layer) khác, Hibernate không ẩn sức mạnh ngôn ngữ SQL mà Hibernate đảm bảo cho việc đầu tư vào công nghệ tri thức sở liệu quan hệ ln ln xác Và điều quan trọng Hibernate cấp phép theo LGPL (Lesser GNU Public License) Theo đó, bạn thoải mái sử dụng Hibernate dự án mã nguồn mở (open source) dự án thương mại (commercial) Hibernate dự án mã nguồn mở chuyên nghiệp thành phần cốt tuỷ sản phẩm JBoss Enterprise Middleware System (JEMS) JBoss, biết đơn vị Red Hat, chuyên cung cấp dịch vụ 24x7 hỗ trợ chuyên nghiệp, tư vấn huấn luyện sẵn sàng hỗ trợ việc dùng Hibernate Các thành phần dự án Hibernate: * Hibernate Core: Cung cấp chức tầng bền vững cho ứng dụng Java với APIs hỗ trợ ánh xạ XML metadata * Hibernate Annotations: Các lớp ánh xạ với JDK 5.0 annotations, bao gồm Hibernate Validator * Hibernate EntityManager: Sử dụng EJB 3.0 EntityManager API JSE với JEE server * Hibernate Tools: Các cơng cụ tích hợp với Eclipse Ant dùng cho việc sinh đối tượng bền vững (persistence object) từ lược đồ có sẵn CSDL từ file hbm sinh lớp java để thực đối tượng bền vững, Hibernate tự tạo đối tượng CSDL * NHibernate: Hibernate cho Net framework * JBoss Seam: Một Java EE 5.0 framework cho phát triển ứng dụng JSF, Ajax EJB 3.0 với hỗ trợ Hibernate Seam tỏ mạnh để phát triển ứng dụng Web 2.0 Nó tích hợp đầy đủ tất cơng nghệ II Thí nghiệm Bài thí nghiệm hướng dẫn sinh viên bước xây dựng ứng dụng Hibernate HelloWorld Trên sở hiểu đầy đủ khái niệm Hibernate, cách hiển thị trực quan tài liệu Java lớp Hibernate Thời gian thực thí nghiệm: 60 phút Tiến trình thực hiện: • Phần 1: Trên máy chủ CSDL (database server), tạo CSDL lấy tên “mydatabase”, thêm plug-in Hibernate • Phần 2: Xây dựng ứng dụng Hibernate “HelloWorld” (20 phút) • Phần 3: Xây dựng ứng dụng Hibernate “HelloWorld2” (20 phút) • Phần 4: Cấu hình Javadoc cho Hibernate hiển thị trực quan Javadoc • Phần 5: Bài tập tự thí nghiệm Phần 1: Tạo CSDL "mydatabase" Sinh viên thực tạo CSDL "mydatabase" máy theo thứ tự sau Chạy máy chủ CSDL Java DB (trong tài liệu có tên Derby) Tạo CSDL lấy tên “mydatabase” Cài đặt plug-in Hibernate cho NetBeans IDE (phiên 6.1 trở lên) Dưới hướng dẫn thực thi bước (0.1) Chạy máy chủ CSDL Java DB (Derby) chưa khởi động Chọn máy chủ Java DB (như Hình-0.10) • • • Kích chọn tab Services Kích mở rộng vùng Databases Kích chuột phải Java DB chọn Start Server Nếu chạy mục chọn bị chuyển sang màu xám Hình-0.10: Chạy máy chủ CSDL (0.2) Tạo CSDL lấy tên “mydatabase" (nếu máy bạn chưa có) Tạo CSDL • Kích chuột phải vào Java DB chọn Create Database (Hình-0.20) Hình-0.20: Tạo CSDL mydatabase Điền vào mục hộp thoại Create Java DB Database • • • • Trong mục Database Name, gõ tên "mydatabase" Trong mục User name, gõ app Mục Password, gõ "app" (như Hình-0.21) Kích OK để hồn tất Hình-0.21: Tạo CSDL Kết nối đến CSDL mydatabase Chú ý lúc bạn chưa cần tạo bảng biểu CSDL • • Mở rộng mục Drivers Kích chuột phải vào jdbc:derby://localhost:1527/mydatabase [app on App] chọn Connect • Kích vào thẻ cửa sổ Projects để quay lại xem hiển thị dự án (project) (0.3) Kiểm tra xem plug-in Hibernate cài đặt chưa Nếu không thấy Hibernate danh sách mục thẻ Installed, điều có nghĩa plug-in chưa cài đặt NetBeans IDE bạn Kích vào thẻ Available Plugins lựa chọn Hibernate sau cài đặt cách kích vào Install Phần 2: Xây dựng ứng dụng Hibernate "HelloWorld" Trong phần này, sinh viên viết chạy ứng dụng Hibernate đơn giản "HelloWorld" Trong ứng dụng này, làm việc với đối tượng Person kết nối CSDL thông qua Hibernate Các bước thực sau: Tạo lớp POJO, Person.java Tạo file ánh xạ (mapping) cho lớp POJO, Write Hibernate mapping files for the POJO classes, Person.hbm.xml in this example Tạo file cấu hình cho Hibernate, hibernate.cfg.xml Tạo file Main.java HibernateUtil.java Thêm thư viện Hibernate Java DB Thêm log4j.properties vào đường dẫn lớp Dịch chạy ứng dụng Kiểm thử lại CSDL (1.1) Tạo lớp POJO Trong ứng dụng đơn giản này, viết lớp POJO Ta đặt tên lớp Person.java POJO đại diện tiêu biểu cho lớp persistence Một POJO tương tự JavaBean, có getter setter để truy câp thuộc tính biến thực thể (instance variable) Lớp persistence có đặc điểm đây: a Nó thay hướng đối tượng cho bảng sở liệu b Các thuộc tính bảng trở thành biến thực thể lớp persistence c Kiểu liệu biến thực thể miền xác định thuộc tính d Đối tượng lớp thay cho hàng bảng Tạo dự án NetBeans • Chọn File->New Project (hoặc Ctrl+Shift+N) (như Hình-1.11 đây) Hình-1.11: Tạo dự án • • • Sau xuất cửa sổ New Project Trong cửa sổ nhỏ bước công việc, thực chọn chọn Java Categories Java Application Projects (Hình-1.12) Sau kích chọn Next Choose Hình-1.12: Tạo dự án ứng dụng Java • • • Ở bước Name and Location , mục Project Name, gõ tên HibernateHelloWorld Trong mục Create Main Class, gõ Main (Hình-1.13 dưới) Kích Finish để hồn tất Project, Hình-1.13: Đặt tên cho dự án • Bạn thấy cửa sổ dự án HibernateHelloWorld IDE sinh cửa sổ sửa đổi mã nguồn Main.java NetBeans IDE Xây dựng lớp Person.java đoạn mã hiển thị Hình-1.14 Chú ý lớp POJO • Kích chuột phải vào nút dự án HibernateHelloWorld chọn New->Java Class • • • • Cửa sổ New Java Class xuất Trong mục Class Name, gõ Person Bỏ trống mục Package Nếu bạn muốn dùng package mặc định bỏ trống trường (Đối với thí nghiệm đơn giản tạm sử dụng package mặc định.) Kích Finish để hồn tất (Hình-1.14) Hình-1.93: Kiểm tra lại nội dung bảng CSDL Tổng kết Trong phần này, sinh viên học cách để xây dựng ứng dụng Hibernate HelloWorld đơn giản từ lớp ứng dụng, file ánh xạ tương ứng file cấu hình Hibernate Phần 3: Xây dựng ứng dụng "HibernateHelloWorld2" Trong phần này, sinh viên hướng dẫn tạo dự án HibernateHelloWorld2 thông qua việc chép lại dự án thực Phần HibernateHelloWorld Nếu chép dự án, toàn file thư viện Hibernate tự động chép vào dự án Sinh viên thêm lớp POJO khác file ánh xạ vào dự án Tạo dự án "HibernateHelloWorld2" thông qua việc chép dự án "HibernateHelloWorld" project Thêm lớp POJO mới, Student.java Viết file ánh xạ, Student.hbm.xml Thay đổi hibernate.cfg.xml Thay đổi Main.java Dịch chạy dự án Nhận lệnh SQL Hibernate gửi (2.1) Tạo dự án "HibernateHelloWorld2" chép từ dự án "HibernateHelloWorld" Kích chuột phải vào nút dự án HibernateHelloWorld chọn Copy (Hình-2.10) Hình-2.10: Sao chép dự án Project Đặt tên cho dự án • • • Hộp thoại Copy Project xuất Trong trường Project Name gõ tên HibernateHelloWorld2 Kích chuột vào Copy (Hinh-2.11) Hình-2.11: Sao chép dự án • Xuất nút dự án HibernateHelloWorld2 (2.2) Thêm lớp POJO Trong bước ta thêm lớp POJO đặt tên Student Viết Student.java import java.io.Serializable; public class Student implements Serializable { private int id; private String school; private String grade; protected Student() { } public Student(int id, String school) { this.id = id; this.school = school; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getSchool() { return school; } public void setSchool(String name) { this.school = name; } public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } } Code-2.21: Student.java (2.3) Viết file ánh xạ, Student.hbm.xml, cho lớp Student Viết file Student.hbm.xml Code-2.31 Code-2.31: Student.hbm.xml (2.4) Sửa file Main.java Thay đổi file Main.java dự án HibernateHelloWorld2 Code-2.41 Phần đoạn mã in đậm đánh dấu màu xanh cần đặc biệt lưu ý Lưu ý ta thay đổi file Main.java dự án HibernateHelloWorld2 HibernateHelloWorld import org.hibernate.*; import org.hibernate.cfg.Configuration; public class Main { public static void main(String[] args) { // Set up database tables HibernateUtil.droptable("drop table Person"); HibernateUtil.droptable("drop table Student"); HibernateUtil.setup("create table Person ( id int, cname VARCHAR(20))"); HibernateUtil.setup("create table Student ( id int, schoolname VARCHAR(30), grade VARCHAR(5))"); // Create SessionFactory and Session object SessionFactory sessions = new Configuration().configure().buildSessionFactory(); Session session = sessions.openSession(); // Perform life-cycle operations under a transaction Transaction tx = null; try { tx = session.beginTransaction(); // Create a Person object and save it Person p1 = new Person(); p1.setName("Sang Shin"); session.save(p1); // Create another Person object and save it Person p2 = new Person(); p2.setName("Young Shin"); session.save(p2); // Retrieve the person objects Person person = (Person)session get(Person.class, p1.getId()); System.out.println("First person retrieved = " + person.getName()); person = (Person)session.get(Person.class, p2.getId()); System.out.println("Second person retrieved = " + person.getName()); // Create a Student object and save it Student s1 = new Student(); s1.setSchool("Lexington High School"); s1.setGrade("A"); session.save(s1); // Retrieve the Student objects Student student = (Student)session get(Student.class, s1.getId()); System.out.println("First student retrieved = " + student.getId() + ", " + "School attending = " + student.getSchool() + ", " + "Grade = " + student.getGrade()); tx.commit(); tx = null; } catch ( HibernateException e ) { if ( tx != null ) tx.rollback(); e.printStackTrace(); } finally { session.close(); } // Display tables HibernateUtil.checkData("select * from Person"); HibernateUtil.checkData("select * from Student"); } } Code-2.41: Main.java (2.5) Thay đổi file hibernate.cfg.xml Thay đổi hibernate.cfg.xml Code-2.52 Lưu ý đoạn mã in đậm màu xanh org.apache.derby.jdbc.ClientDriver jdbc:derby://localhost:1527/mydatabase app app 1 org.hibernate.dialect.DerbyDialect true Code-2.52: Modified hibernate.cfg.xml file (2.6) Dịch chạy ứng dụng Kích chuột phải vào dự án HibernateHelloWorld2 chọn Run Cửa sổ Output xuất IDE (Hình-2.61) Hình-2.61: Cửa sổ kết (2.7) Nhận lệnh SQL từ Hibernate Trong bước này, sinh viên thiết đặt thông số file hibernate.cfg.xml để hiển thị lệnh SQL framework Hibernate gửi cho Đây tính có ích cho việc gỡ rối Thay đổi thuộc tính "show_sql" thành phần file hibernate.cfg.xml thành true (cũ false) Hình-2.71 Hình-2.71: Thiết đặt thuộc tính "show_sql" thành true Kích chuột phải vào dự án HibernateHelloWorld2 chọn Run Nhận lệnh SQL Hibernate gửi cho (Hình-2.72) Hình-2.72: Lệnh SQL Tổng kết Trong phần này, sinh viên học cách tạo dự án Hibernate thông qua chép cách thêm lớp POJO tạo file ánh xạ tương ứng cho Sau hướng dẫn cách nhận lệnh SQL từ Hibernate Phần 3: Cấu hình Hibernate JavaDoc Trong phần này, sinh viên hướng dẫn cấu hình Javadoc Hibernate hiển thị tài liệu Java lớp Hibernate Nếu cấu hình lần Javadoc Hibernate hiển thị tất dự án Hibernate sau Cấu hình thư mục Hibernate Javadoc NetBeans IDE Hiển thị Javadoc giao diện Hibernate Session interface in a context-sensitive manner (3.1) Cấu hình thư mục Hibernate Javadoc cho NetBeans IDE Chọn Tools menu chọn Libraries (Hình-3.10) Hình-3.10: Chọn Java Platform Manager Cấu hình Javadoc cho thư viện Hibernate • • • Chọn Hibernate mục Libraries phía bên trái Chọn thẻ Javadoc Kích nút lệnh Add ZIP/Folder (Hình-3.11) Hình-3.11: Add ZIP/Folder Hibernate Javadoc • • Chọn thư mục /hibernatestepbystep/hibernatedoc Chọn api kích vào nút lệnh Add ZIP/Folder (Hình-3.12) Hình-3.12: Thêm thư mục api • Kích OK để đóng cửa sổ Library Manager (Hình-3.13) Hình-3.13: Đóng Java Platform Manager Cấu hình Javadoc cho thư viện Hibernate JPA tương tự • • • • • • Chọn Hibernate JPA mục Libraries phía bên trái Chọn thẻ Javadoc Kích nút lệnh Add ZIP/Folder Chọn thư mục /hibernatestepbystep/hibernatedoc Chọn api sau kích nút Add ZIP/Folder Kích OK đóng hộp thoại Library Manager (3.2) Hiển thị Javadoc giao diện Session Hibernate cách trực quan Kích đúp chuột vào Main.java để mở thay đổi Chuyển trỏ chuột đến Session kích phải vào Chọn Show Javadoc (Hình-3.21) Hình-3.21: Chọn Show Javadoc Session Nhận thấy Javadoc giao diện Session hiển thị trình duyệt (Hình-3.22) Hãy dành thời gian để xem phương thức khác giao diện Session hỗ trợ Hình-3.22: Javadoc giao diện Session Tổng kết Trong phần sinh viên học cách hiển thị Javadoc lớp Hibernate cách trực quan theo tình Bài tập tự thực hành Xây dựng ứng dụng Đăng ký môn học sinh viên, chức thêm mới, cập nhật, xóa sinh viên CSDL Xây dựng chức cho phép sinh viên đăng ký khóa học minh họa cho việc Hibernate thực việc xử lý quan hệ lớp CSDL