chapter 5 hibernate lập trình java

45 0 0
chapter 5 hibernate lập trình java

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tuy nhiên, hiện nay, phần mềm thường được thiết kế 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

Trang 1

LẬP TRÌNH JAVA

Giảng viên: Tạ Việt PhươngE-mail: phuongtv@uit.edu.vn Ch 5 (tt) Hibernate

Trang 2

Nội dung

➢Giới thiệu Hibernate➢Cài đặt Hibernate

Trang 3

◂Là hình thức kết nối trực tiếp CSDL (Connected Model)

◂Connect: tạo kết nối chương trình với Hệ quản trị

◂Nếu ứng dụng kết nối với nhiều hệ quản trị CSDL khác nhau, câu truy vấn có thể khác nhau trong mỗi hệ quản trị CSDL

Trang 4

ORM (Object Relational Mapping)

◂CSDL thường được thiết kế theo mô hình quan hệ Tuy nhiên, hiện nay, phần mềm thường được thiết kế 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 ORM cho phép lấy dữ liệu từ CSDL quan hệ vào trong đối tượng

Trang 5

ORM (tt)

◂ORM (Object Relational Mapping) là một kỹ thuật lập trình cho phép ánh xạ cơ sở dữ liệu đến các đối

tượng thuộc ngôn ngữ lập trình hướng đối tượng chẳng hạn như C#, Java,… (các table tương ứng các class, mối ràng buộc giữa các table tương ứng quan hệ giữa các class ‘has a’ , ‘is a’).

5

Trang 6

ORM (tt)

Trang 7

ORM (tt)

◂ORM có đặc trưng cơ bản là gói gọn CSDL trong một object Trong object, một phần là data, phần còn lại đảm nhận công việc xử lý data để chuyển nó thành CSDL quan hệ.

7

Trang 8

ORM (tt)

◂Ưu điểm:

◂Tính độc lập: có thể dùng với nhiều RDBMS khác nhau thông qua cấu hình.

◂Tính đơn giản, dễ sử dụng: ORM cung cấp các API đơn giản và rất dễ sử dụng trong việc truy vấn, thêm, xóa, sửa dữ liệu

◂Tiết kiệm thời gian lập trình, dễ bảo trì, sửa chữa ◂Cơ chế ORM giúp người lập trình tập trung hơn

vào việc lập trình hướng đối tượng (OOP) ◂Hạn chế những lỗi ngữ pháp trong SQL.

Trang 9

ORM (tt)

◂Nhược điểm:

◂Tự động sinh ra các câu lệnh SQL nên sẽ khó có thể tác động vào để tối ưu câu lệnh.

◂Việc quản lý session khá phức tạp

◂Khi sử dụng ORM Framework, lập trình viên dễ bị rơi vào bẫy truy xuất dữ liệu quá nhiều (vì quá dễ để truy xuất), ảnh hưởng đến hiệu năng của hệ thống

◂Đối với những ai mới tìm hiểu về kỹ thuật ORM là gì sẽ gặp phải nhiều khó khăn trong quá trình sử dụng.

9

Trang 10

ORM với Hibernate

◂Được phát triển bởi Gavin King năm 2001

◂JBoss chính thức phát triển Hibernate từ năm 2003 ◂Là 1 ORM Framework: thực hiện mapping cơ sở dữ

liệu quan hệ sang các object trong ngôn ngữ hướng đối tượng.

Trang 11

ORM với Hibernate (tt)

◂Một ứng dụng có thể chia làm 3 phần: presentation layer, business layer, data layer

◂Business layer có thể chia thành 2 layer con:

◂Business logic layer (các tính toán nhằm thỏa mãn yêu cầu người dùng)

◂Persistence layer chịu trách nhiệm giao tiếp với data layer (mở kết nối, truy xuất và lưu trữ dữ liệu vào CSDL)

◂Hibernate framework là một framework cho persistence layer

Trang 12

Kiến trúc Hibernate

◂Kiến trúc Hibernate bao gồm nhiều đối tượng như đối tượng persistent, session factory, transaction factory, connection factory, session, transaction, ◂Có 4 tầng trong kiến trúc hibernate đó là tầng ứng

dụng java, tầng hibernate framework, tầng backhand api và tầng database.

Trang 13

Kiến trúc Hibernate

13

Trang 14

Kiến trúc Hibernate

◂Các thành phần trong kiến trúc Hibernate:

◂Đối tượng Configuration: bao gồm Database Connection (hibernate.properties và

hibernate.cfg.xml) và Class Mapping Setup - Thành phần này tạo ra kết nối giữa các lớp Java và các bảng cơ sở dữ liệu.

◂Đối tượng SessionFactory

◂Đối tượng Session

◂Đối tượng Transaction

◂Đối tượng Query

◂Đối tượng Criteria

Trang 15

Môi trường Hibernate

◂Tải về phiên bản mới nhất của Hibernate từ https://hibernate.org/orm/releases/

◂Copy tất cả các tập tin thư viện từ /lib vào

CLASSPATH, và thay đổi biến classpath để bao gồm tất cả các JARs.

◂Copy tập tin hibernate[x].jar vào CLASSPATH Tập tin này nằm trong thư mục gốc của tiến trình cài đặt và là tệp JAR chính mà Hibernate cần để thực hiện công việc của nó.

15

Trang 16

ORM với Hibernate (tt)

◂Mỗi table trong database là một object trong

Hibernate Cần có một java bean cho mỗi table trong database Các java bean này sẽ có các

getters/setters và một số ngoại lệ theo quy ước của Hibernate.

◂Mỗi file mapping (ánh xạ) có dạng ***.hbm.xml có nhiệm vụ đặc tả mỗi quan hệ giữa các thuộc tính của đối tượng và các trường trong bảng CSDL (cột nào ứng với thuộc tính nào của class, kiểu giá trị là gì, quan hệ giữa các bảng chuyển thành quan hệ giữa các lớp ra sao…).

Trang 17

ORM với Hibernate (tt)

◂File Hibernate.cfg.xml : Đây là tập tin được load đầu tiên khi khởi chạy ứng dụng Hibernate Nó chứa các thông tin về kết nối (database kết nối là gì (MySQL, Oracle, SQL server…), username và password kết nối với database là gì, tên database được kết nối), driver kết nối…

17

Trang 18

◂Ánh xạ giữa các lớp Java đến các bảng trong CSDL dung các file XML

◂Cung cấp các API đơn giản để lưu trữ, truy xuất trực tiếp các đối tượng Java và CSDL.

◂Nếu có bất kỳ thay đổi nào trong CSDL thì chỉ cần thay đổi file XML.

◂Cung cấp đầy đủ các tiện ích, tính năng truy vấn dữ liệu đơn giản, hiệu quả.

◂Thao tác, xử lý được các quan hệ phức tạp của các đối tượng trong CSDL.

◂Giảm thiểu sự truy cập đến CSDL đến mức thấp nhất

Trang 19

◂HQL, Criteria Query, Native SQL

◂Hibernate Cache, Filter, Interceptor, Event ◂Hibernate Monitor

◂Hibernate Toolset

19

Trang 20

Kiến trúc Hibernate

Trang 21

Các bước sử dụng Hibernate

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

◂Bước 2: Tạo file cấu hình hibernate.cfg.xml ◂Bước 3: Tạo các POJO (Lớp persistent)

◂Bước 4: Tạo các file mapping <POJO>.hbm.xml ◂Bước 5: Khai báo các file mapping vào

◂Bước 6: Xây dựng lớp HibernateUtil ◂Bước 7: Sử dụng

21

Trang 22

Tạo cơ sở dữ liệu

Trang 23

Cấu hình hibernate.cfg.xml

◂Được dùng đề khai báo cấu hình các thông tin liên quan đến CSDL: url, driver_class, username,

password, pool_size, autocommit.

◂Khai báo nơi mà chứa file ánh xạ giữa các lớp thực thể tới các bảng trong CSDL

23

Trang 24

Cấu hình hibernate.cfg.xml (tt)

➢Các thuộc tính cấu hình cơ bản:

o hibernate.dialect: Cho phép hibernate tối ưu hóa SQL cho

thích hợp với CSDL quan hệ đặc biệt.

o hibernate.connection.driver_class: lớp driver class.

o hibernate.connection.url: url để kết nối tới CSDL thông qua

Trang 25

Cấu hình hibernate.cfg.xml (tt)

Loại hibernate.dialect: của một số CSDL phổ biến:

DB2: org.hibernate.dialect.DB2Dialect

Microsoft SQL Server 2005: org.hibernate.dialect.SQLServer2005Dialect Microsoft SQL Server 2008: org.hibernate.dialect.SQLServer2008Dialect

Trang 26

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

<! List of XML mapping files ><mapping resource="SinhVien.hbm.xml"/></session-factory>

</hibernate-configuration>

Trang 27

Tạo POJO (Lớp persistent)

◂Các lớp Java có các đối tượng hoặc các thể hiện sẽ được lưu trữ trong các bảng cơ sở dữ liệu được gọi là các lớp persistent trong Hibernate.

◂Hibernate hoạt động tốt nhất nếu các lớp này tuân theo một số quy tắc đơn giản, còn được gọi là mô hình lập trình Plain Old Java Object (POJO).

27

Trang 28

Tạo POJO (Lớp persistent)

Phải có 1 phương thức khởi tạo mặc định (phương

thức khởi tạo không có tham số)

Tất cả các thuộc tính trong lớp cần đặt private hoặc protected, hoặc default (Hibernate không xử lý các

thuộc tính để public)

◂Tất cả các thuộc tính phải có phương thức setter và getter.

◂Class không nên để final

◂Các phương thức không nên để public final, chỉ nên để public

◂Các lớp này không được kế thừa (extend) các lớp đặcbiệt khác mà chỉ có thể kế thừa các lớp persistent

Trang 29

Tạo POJO (Lớp persistent)

29

Trang 30

VD: Tạo POJO SinhVien

public class SinhVien {

privateString maSV;

privateString hoTen;

privateString gioiTinh;

privateString noiSinh;

public SinhVien(){ }

public SinhVien(String maSV){this.maSV = maSV; }

public SinhVien(String maSV,String hoTen, String gioiTinh,

Trang 31

◂ File mapping được sử dụng để ánh xạ một hoặc nhiều lớp trong java với các bảng trong database ◂Có hai cách để tạo ra các file mapping XML này:

◂Tạo file mapping XML bằng tay

◂Tạo file mapping XML bằng tool, bao gồm XDoclet, Middlegen và AndroMDA

31

Trang 32

Tạo file mapping ###.hbm.xml

Các thành phần quan trọng trong file mapping:

<hibernate-mapping>: phần tử gốc của tài liệu ánh xạ(mapping)

hibernate, nó chứa các phần tử khác và kết thúc với </hibernate-

<class> Ánh xạ các lớp đối tượng với bảng trong CSDL.

oname : tên của lớp đối tượng dữ liệu

otable : tên bảng trong CSDL tương ứng với lớp của thuộc tính name

<id> dùng để định danh id duy nhất của lớp đối tượng Thường

ánh xạ với khóa chính trong bảng CSDL Có các thuộc tính sau :

oname : tên thuộc tính được sử dụng trong lớp persistent

ocolumn : cột trong bảng CSDL để lưu khóa chính.

Trang 33

Tạo file mapping ###.hbm.xml (tt)

<generator> tạo ra giá trị ID khi thêm bản ghi mới vào CSDL

bằng Hibernate Một số phương thức tạo giá trị ID:

oincrement : sử dụng để tạo ID, chỉ dùng cho kiểu long, int, short

osequence : Hibernate sử dụng chuỗi để tạo khóa tự động Thường được sử dụng với HQTCSDL : DB2, PostgreSQL, Oracle, SAP DB databases.

oassigned : đăng ký 1 phương thức khởi tạo ID , phương thức nàyđược tạo ra bởi người phát triển ứng dụng.

oidentity: ID tự động tạo ra bởi CSDL.

<property> sử dụng các thuộc tính giống như thẻ ID nhưng

không có thẻ con <generator> Được dùng để ánh xạ các cột bình thường (không phải khóa chính).

Trang 34

Tạo file mapping ###.hbm.xml (tt)

<class name="hibernateexample.SinhVien" table="sinhvien"><id name="maSV" type="string">

<column length="5" name="MaSV"/><generator class="assigned" /></id>

<property name="hoTen" type="string"><column length="25" name="HoTen" /></property>

<property name="gioiTinh" type="string"><column length="4" name="GioiTinh" /></property>

<property name="noiSinh" type="string"><column length="20" name="NoiSinh" /></property>

</hibernate-mapping>

Trang 35

Tạo file mapping ###.hbm.xml (tt)

◂Nên lưu file mapping với định dạng <classname>.hbm.xml

◂Trong ví dụ trên file mapping được lưu với tên SinhVien.hbm.xml.

35

Trang 36

Kiểu dữ liệu trong hibernate

integerint hoặc IntegerINTEGERlonglong hoặc LongBIGINTshortshort hoặc ShortSMALLINTfloatfloat hoặc FloatFLOATdoubledouble hoặc DoubleDOUBLEbig_decimaljava.math.BigDecimalNUMERICcharacterStringCHAR(1)stringStringVARCHARbytebyte hoặc ByteTINYINTbooleanboolean hoặc BooleanBIT

Các kiểu dữ liệu cơ bản

Trang 37

Kiểu dữ liệu trong hibernate (tt)

Các kiểu dữ liệu thời gian

Kiểu HibernateKiểu JavaKiểu SQL

datejava.util.Date hoặc java.sql.DateDATEtimejava.util.Date hoặc java.sql.TimeTIME

Trang 38

Khai báo mapping vào ###.cfg.xml

Trang 39

Sử dụng – Tạo kết nối

public class HibernateSessionFactory {

private static SessionFactory sesstionFac;

Trang 40

Lấy danh sách sinh viên

public static List<SinhVien> getDSSinhVien(){List<SinhVien> dsSV = null;

Session session =

HibernateSessionFactory.getSessionFactory().openSession();try{

String sql = "select sv from SinhVien sv"; Query query = session.createQuery(sql);

Trang 41

Lấy thông tin sinh viên

Trang 42

Thêm sinh viên

Trang 43

Xóa sinh viên

Trang 44

Sửa sinh viên

public static boolean capNhatSV(SinhVien sv){ Session

Trang 45

Q & A

Giảng viên: Tạ Việt PhươngE-mail: phuongtv@uit.edu.vn

Ngày đăng: 27/04/2024, 10:57

Tài liệu cùng người dùng

Tài liệu liên quan