CHUYÊN ĐỀ JAVA
GIỚI THIỆU HIBERNATE
hoanganhis@gmail.com
Nguyễn Hoàng Anh Email: nhanh@fit.hcmus.edu.vn ĐH KHTN, 2011
Upload by Cafeitvn.com
Nội dung trình bày
Giới thiệu Hibernate
Xây dựng ứng dụng quản lý sinh viên đơn giản với
Hibernate
– Lấy danh sách sinh viên
– Lấy thông tin sinh viên
– Thêm sinh viên
– Cập nhật sinh viên
– Xóa sinh viên
Upload by Cafeitvn.com
2
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Hibernate
Cơ sở dữ liệu thường được thiết kế và lưu trữ theo
hướng quan hệ.
Tuy nhiên phần mềm thường được xây dựng theo
hướng đối tượng.
Đối với lập trình viên khi xây dựng phần mềm thường muốn làm việc với các đối tượng và không phải nhớ đến các dòng , các cột trong các bảng của cơ sở dữ liệu.
Upload by Cafeitvn.com
3
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Cài đặt
Upload by Cafeitvn.com
4
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Kiến trúc Hibernate
Code
Mappings
Hibernate
Configuaration
JDBC
POJOs
DATABASE
Upload by Cafeitvn.com
5
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Các bước sử dụng hibernate
Bước 1: Tạo cơ sở dữ liệu
Bước 2: Tạo các POJO
Bước 3: Tạo file cấu hình hibernate.cfg.xml
Bước 4: Tạo các file mapping
Bước 5: Khai báo các file mapping vào hibernate.cfg.xml
Bước 6: Xây dựng lớp HibernateUtil
Bước 7: Xây dựng các DAO & Sử dụng
Upload by Cafeitvn.com
6
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 1: Tạo cơ sở dữ liệu
CSDL: MySQL QuanLySinhVien
Upload by Cafeitvn.com
7
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 2: Tạo POJO SinhVien
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package pojo; import java.util.Date; public class SinhVien implements java.io.Serializable { private String maSinhVien; private String hoVaTen; private Date ngaySinh; private String diaChi; public SinhVien() { } public SinhVien(String maSinhVien) { this.maSinhVien = maSinhVien; } public SinhVien(String maSinhVien, String hoVaTen, Date ngaySinh, String diaChi) { this.maSinhVien = maSinhVien; this.hoVaTen = hoVaTen; this.ngaySinh = ngaySinh; this.diaChi = diaChi; }
Upload by Cafeitvn.com
8
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 2: Tạo POJO SinhVien
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public String getMaSinhVien() { return this.maSinhVien; } public void setMaSinhVien(String maSinhVien) { this.maSinhVien = maSinhVien; } public String getHoVaTen() { return this.hoVaTen; } public void setHoVaTen(String hoVaTen) { this.hoVaTen = hoVaTen; } public Date getNgaySinh() { return this.ngaySinh; } public void setNgaySinh(Date ngaySinh) { this.ngaySinh = ngaySinh; } public String getDiaChi() { return this.diaChi; } public void setDiaChi(String diaChi) { this.diaChi = diaChi; } }
Upload by Cafeitvn.com
9
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 3: Tạo file cấu hình hibernate.cfg.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Upload by Cafeitvn.com
10
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 3: Tạo file cấu hình hibernate.cfg.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Upload by Cafeitvn.com
11
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 4: Tạo các file mapping SinhVien.hbm.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Upload by Cafeitvn.com
12
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 4: Tạo file mapping SinhVien.hbm.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Upload by Cafeitvn.com
13
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 5: Khai báo mapping vào hibernate.cfg.xml
1
2
3
4
5
6
7
8
9
10
11
12
Upload by Cafeitvn.com
14
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 6: Xây dựng lớp HibernateUtil
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.SessionFactory; public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); } catch (Throwable ex) { System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }
Upload by Cafeitvn.com
15
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class SinhVienDAO {
public static List
Upload by Cafeitvn.com
16
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public class Main {
public static void main(String[] args) {
//
Upload by Cafeitvn.com
17
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 public class SinhVienDAO { public static SinhVien layThongTinhSinhVien(String maSinhVien) { SinhVien sv = null; Session session = HibernateUtil.getSessionFactory() .openSession(); try { sv = (SinhVien) session.get(SinhVien.class, maSinhVien); } catch (HibernateException ex) { //Log the exception System.err.println(ex); } finally { session.close(); } return sv; } . . .
Upload by Cafeitvn.com
18
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public class Main {
public static void main(String[] args) {
//
Upload by Cafeitvn.com
19
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
public class SinhVienDAO { public static boolean themSinhVien(SinhVien sv) { Session session = HibernateUtil.getSessionFactory().openSession(); if (SinhVienDAO.layThongTinSinhVien(sv.getMaSinhVien())!=null) { return false; } Transaction transaction = null; try { transaction = session.beginTransaction(); session.save(sv); transaction.commit(); } catch (HibernateException ex) { //Log the exception transaction.rollback(); System.err.println(ex); } finally { session.close(); } return true; }
Upload by Cafeitvn.com
20
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public class Main {
public static void main(String[] args) {
//
Upload by Cafeitvn.com
21
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
public class SinhVienDAO { public static boolean capNhatThongTinSinhVien(SinhVien sv) { Session session = HibernateUtil.getSessionFactory().openSession(); if (SinhVienDAO.layThongTinSinhVien(sv.getMaSinhVien()) == null) { return false; } Transaction transaction = null; try { transaction = session.beginTransaction(); session.update(sv); transaction.commit(); } catch (HibernateException ex) { //Log the exception transaction.rollback(); System.err.println(ex); } finally { session.close(); } return true; } . . .
Upload by Cafeitvn.com
22
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
public class Main {
public static void main(String[] args) {
//
SinhVien sv = SinhVienDAO.layThongTinSinhVien("0312143");
if (sv != null) {
sv.setHoVaTen("Tạ Tấn Thêm");
Calendar calendar = Calendar.getInstance();
calendar.set(1985, 5, 18);
Date d = calendar.getTime();
sv.setNgaySinh(d);
sv.setDiaChi("Vũng Liêm – Vĩnh Long");
boolean kq = SinhVienDAO.capNhatThongTinSinhVien(sv);
if (kq == true) {
System.out.println("Cập nhật thành công");
} else {
System.out.println("Cập nhật thất bại");
}
}
//
Upload by Cafeitvn.com
23
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
public class SinhVienDAO { public static boolean xoaSinhVien(String maSinhVien) { Session session = HibernateUtil.getSessionFactory().openSession(); SinhVien sv = SinhVienDAO.layThongTinSinhVien(maSinhVien); if(sv==null){ return false; } Transaction transaction = null; try { transaction = session.beginTransaction(); session.delete(sv); transaction.commit(); } catch (HibernateException ex) { //Log the exception transaction.rollback(); System.err.println(ex); } finally { session.close(); } return true; } }
Upload by Cafeitvn.com
24
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public class Main {
public static void main(String[] args) {
//
Upload by Cafeitvn.com
25
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
Tài liệu tham khảo
Nguyễn Hoàng Anh, Tập bài giảng và video môn
chuyên đề Java, 2010
Marty Hall, Tập bài giảng về Servlet, 2010
– http://courses.coreservlets.com/Course-Materials/csajsp2.html
Upload by Cafeitvn.com
26
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011
HỎI VÀ ĐÁP
Upload by Cafeitvn.com
27
Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn – ĐH KHTN - 2011