hibernate introduction 02

27
GIỚI THIỆU HIBERNATE CHUYÊN ĐỀ JAVA Nguyễn Hoàng Anh Email: [email protected] [email protected] ĐH KHTN, 2011 Upload by Cafeitvn.com

Upload: cong-thanh-nguyen

Post on 16-Apr-2017

1.031 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Hibernate introduction   02

GIỚI THIỆU HIBERNATE

CHUYÊN ĐỀ JAVA

Nguyễn Hoàng Anh

Email: [email protected]

[email protected]

ĐH KHTN, 2011

Upload by Cafeitvn.com

Page 2: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

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

2

Upload by Cafeitvn.com

Page 3: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – Đ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.

3

Upload by Cafeitvn.com

Page 4: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Cài đặt

4

Upload by Cafeitvn.com

Page 5: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Kiến trúc Hibernate

5

Code

Hibernate Mappings Configuaration

POJOs

JDBC

DATABASE

Upload by Cafeitvn.com

Page 6: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – Đ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 <POJO>.hbm.xml

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

6

Upload by Cafeitvn.com

Page 7: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 1: Tạo cơ sở dữ liệu

7

CSDL: MySQL

QuanLySinhVien

Upload by Cafeitvn.com

Page 8: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 2: Tạo POJO SinhVien

8

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

Page 9: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

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;

}

}

Bước 2: Tạo POJO SinhVien

9

Upload by Cafeitvn.com

Page 10: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 3: Tạo file cấu hình hibernate.cfg.xml

10

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC "-

//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-

3.0.dtd">

<hibernate-configuration>

<session-factory>

. . .

</session-factory>

</hibernate-configuration>

Upload by Cafeitvn.com

Page 11: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 3: Tạo file cấu hình hibernate.cfg.xml

11

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<session-factory>

<property

name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="hibernate.connection.driver_class">

com.mysql.jdbc.Driver

</property>

<property name="hibernate.connection.url">

jdbc:mysql://localhost:3306/QuanLySinhVien?autoReconnect&amp;

useUnicode=true&amp;characterEncoding=UTF-8

</property>

<property name="hibernate.connection.username">root</property>

<property name="hibernate.connection.password">root</property>

<mapping resource="pojo/SinhVien.hbm.xml"/>

<!—Mapping Resources-->

</session-factory>

Upload by Cafeitvn.com

Page 12: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 4: Tạo các file mapping SinhVien.hbm.xml

12

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate

Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

...

</hibernate-mapping>

Upload by Cafeitvn.com

Page 13: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 4: Tạo file mapping SinhVien.hbm.xml

13

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<class catalog="quanlyhocsinh"

name="pojo.SinhVien" table="sinhvien">

<id name="maSinhVien" type="string">

<column length="7" name="MaSinhVien"/>

<generator class="assigned"/>

</id>

<property name="hoVaTen" type="string">

<column length="45" name="HoVaTen"/>

</property>

<property name="ngaySinh" type="date">

<column length="10"name="NgaySinh"/>

</property>

<property name="diaChi" type="string">

<column length="45" name="DiaChi"/>

</property>

</class>

Upload by Cafeitvn.com

Page 14: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 5: Khai báo mapping vào hibernate.cfg.xml

14

1

2

3

4

5

6

7

8

9

10

11

12

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-

//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-

3.0.dtd"> <hibernate-configuration> <session-factory>

<!—Property-->

... <mapping resource="pojo/SinhVien.hbm.xml"/>

</session-factory> </hibernate-configuration>

Upload by Cafeitvn.com

Page 15: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 6: Xây dựng lớp HibernateUtil

15

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

Page 16: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng

16

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

public class SinhVienDAO {

public static List<SinhVien> layDanhSachSinhVien() {

List<SinhVien> ds = null;

Session session = HibernateUtil.getSessionFactory()

.openSession();

try {

String hql = "select sv from SinhVien sv";

Query query = session.createQuery(hql);

ds = query.list();

} catch (HibernateException ex) {

//Log the exception

System.err.println(ex);

} finally {

session.close();

}

return ds;

}

. . .

Upload by Cafeitvn.com

Page 17: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng

17

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

public class Main {

public static void main(String[] args) {

//<editor-fold defaultstate="collapsed" desc="1. Lấy

danh sách sinh viên">

List<SinhVien> ds=SinhVienDAO.layDanhSachSinhVien();

for(int i=0; i<ds.size(); i++){

SinhVien sv=ds.get(i);

System.out.println("MSSV: "+sv.getMaSinhVien());

System.out.println("Họ và tên: "+sv.getHoVaTen());

System.out.println("Ngày sinh: " +

sv.getNgaySinh());

System.out.println("Địa chỉ: "+ sv.getDiaChi());

}

//</editor-fold>

Upload by Cafeitvn.com

Page 18: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng

18

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

Page 19: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng

19

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) {

//<editor-fold defaultstate="collapsed" desc="2. Lấy

thông tin sinh viên">

SinhVien sv =

SinhVienDAO.layThongTinSinhVien("0312143");

if(sv!=null){

System.out.println("MSSV: " + sv.getMaSinhVien());

System.out.println("Họ và tên: " +

sv.getHoVaTen());

System.out.println("Ngày sinh: " +

sv.getNgaySinh());

System.out.println("Địa chỉ: " + sv.getDiaChi());

}else{

System.out.println("Sinh viên 0312143 không tồn

tại");

}

//</editor-fold>

Upload by Cafeitvn.com

Page 20: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng

20

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

Page 21: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng

21

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) {

//<editor-fold defaultstate="collapsed" desc="3. Thêm

sinh viên">

SinhVien sv = new SinhVien();

sv.setMaSinhVien("0312171");

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.themSinhVien(sv);

if (kq == true) {

System.out.println("Thêm thành công");

} else {

System.out.println("Thêm thất bại");

}

//</editor-fold>

Upload by Cafeitvn.com

Page 22: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng

22

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

Page 23: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng

23

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) {

//<editor-fold defaultstate="collapsed" desc="4. Cập nhật

sinh viên">

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");

}

}

//</editor-fold>

Upload by Cafeitvn.com

Page 24: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng

24

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

Page 25: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

Bước 7 : Xây dựng lớp SinhVienDAO & sử dụng

25

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) {

//<editor-fold defaultstate="collapsed" desc="5. Xóa

sinh viên">

boolean kq = SinhVienDAO.xoaSinhVien("0312143");

if (kq == true) {

System.out.println("Xóa thành công");

} else {

System.out.println("Xóa thất bại");

}

}

//</editor-fold>

}

}

Upload by Cafeitvn.com

Page 26: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – Đ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

26

Upload by Cafeitvn.com

Page 27: Hibernate introduction   02

Nguyễn Hoàng Anh – [email protected] – ĐH KHTN - 2011

HỎI VÀ ĐÁP

27

Upload by Cafeitvn.com