Hibernate slide introduction

67
ĐỀ TÀI: XÂY DỤNG WEB LUYỆN THI TOEIC SỬ DỤNG SPRING FRAMEWORK TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM KHOA CÔNG NGHÊ THÔNG TIN BÁO CÁO TIỂU LUẬN CHUYÊN NGÀNH CÔNG NGHỆ PHẦN MỀM Nhóm thực hiện: Lê Hữu Thành 11110124 Nguyễn Công Thành 11110285 GVHD: Ts. Đặng Thanh Dũng 1

Transcript of Hibernate slide introduction

Page 1: Hibernate slide introduction

1

ĐỀ TÀI: XÂY DỤNG WEB LUYỆN THI TOEIC SỬ DỤNG SPRING FRAMEWORK

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCMKHOA CÔNG NGHÊ THÔNG TIN

BÁO CÁO TIỂU LUẬN CHUYÊN NGÀNH CÔNG NGHỆ PHẦN MỀM

Nhóm thực hiện:• Lê Hữu Thành 11110124• Nguyễn Công Thành 11110285

GVHD: Ts. Đặng Thanh Dũng

Page 2: Hibernate slide introduction

Nội dung báo cáo

I. Giới thiệu đề tài tiểu luậnII. Cơ sở kiến thứcIII. Thiết kếIV. Cài đặt và kiểm thửV. DemoVI. Tổng kết

2

Page 3: Hibernate slide introduction

3

I. Giới thiệu đề tài tiểu luận1. Tính cấp thiết

Page 4: Hibernate slide introduction

4

I. Giới thiệu đề tài tiểu luận2. Yêu cầu

• Xây dựng một web hổ trợ luyện thi toeic: Flashcard Các tính năng luyện thi toeic căn bản Upload dữ liệu, bài test Quản lý của admin

• Sử dụng Spring framework Nghiên cứu Spring framework – Spring MVC Áp dụng các kiến thức về Spring vào đề tài

Page 5: Hibernate slide introduction

5

II. Cơ sở kiến thức1. Spring framework

1.1 Tổng quan về Spring framework – là gì?• Là một open source application framework• Framework phổ biến cho các ứng dụng enterprise của

java• Dùng để tạo nên một tốc độ cao, dể dàng kiểm thử và

tính tái sự dụng code• Một giải pháp đơn giản cho các ứng dụng enterprise

Page 6: Hibernate slide introduction

6

II. Cơ sở kiến thức1. Spring framework

1.1 Tổng quan về Spring framework – lịch sử• Phiên bản đầu tiên được viết bởi Rob Johnson• Expert One-on-One J2EE Design and Development• Spring 2.0 (2006)• Spring 2.5 (2007)• Spring 3.0 (2009)• Spring 4.0 (2013)

Page 7: Hibernate slide introduction

7

II. Cơ sở kiến thức1. Spring framework

1.1 Tổng quan về Spring framework – mục tiêu• Làm cho J2EE trở nên dể dàng sử dụng hơn• Promote good programming practice• Đơn giản hóa các yêu cầu phức tạp• Chúng ta có thể tập trung vào các vấn đề nhỏ

Page 8: Hibernate slide introduction

8

II. Cơ sở kiến thức1. Spring framework

1.2 Kiến trúc Spring framework Core Container Data Access Web Miscellaneous

Page 9: Hibernate slide introduction

9

II. Cơ sở kiến thức1. Spring framework

1.2 Kiến trúc Spring framework – Core Container• Core and Beans

Cung cấp các thành phần cở bản của framework, bao gồm các tính năng IoC và Dependency Injection

• Context Là một phương tiện dùng để truy cập đến các đối tượng đã được đinh nghĩa

và cấu hình• Expresstion Language

Cung cấp các ngôn ngữ cho việc truy vấn và thao tác với các đối tượng trong thời gian chạy của ứng dụng

Page 10: Hibernate slide introduction

10

II. Cơ sở kiến thức1. Spring framework

1.2 Kiến trúc Spring framework – Data Access• JDBC – cung cấp một tầng JDBC-abstraction• ORM – JPA, JDO, Hibernate và iBatis• OXL - cung cấp một tầng ảo hổ trợ các cài đặt Object/XML

mapping cho JAXB, Castor, XMLBeans, JiBX và Xstream• JMS – chứa các tính năng cho việc tạo và phân phối các

thông điệp• Transaction – programmic and declarative transaction

managerment

Page 11: Hibernate slide introduction

11

II. Cơ sở kiến thức1. Spring framework

1.2 Kiến trúc Spring framework – Web• Spring’s Web

Cung cấp các tính năng cơ bản của web-oriented• Web – Servlet

Bản cài đặt mô hình MVC của Spring• Web – Struts

Chứa các class cho việc tích hợp Struts Web vào trong ứng dụng Spring• Web – Portlet

Cung cấp mô hình MVC để sử dụng trong môi trường portlet

Page 12: Hibernate slide introduction

12

II. Cơ sở kiến thức1. Spring framework

1.2 Kiến trúc Spring framework – Miscellaneous• AOP - Cung cấp cài đặt của AOP cho phép bạn định nghĩa các

phương thức đánh chặn (method-interceptor) và điểm cắt (pointcut) để tách riêng các đoạn code mà cài đặt các chức năng cần phải được tách ra.

• Test - Hổ trợ kiểm thử của các thành phần Spring với JUnit hoặc TestNG framework

Page 13: Hibernate slide introduction

13

II. Cơ sở kiến thức1. Spring framework

1.3 Dependency Injection – IoC là gì?• Là một khái nệm trong phát triển ứng dụng• “Đừng gọi tôi, tôi sẽ gọi cho bạn”• Một dạng của IoC là Dependency Injection (DI)

Page 14: Hibernate slide introduction

14

II. Cơ sở kiến thức1. Spring framework

1.3 Dependency Injection• Là một quá trình mà các đối tượng định nghĩa các sự

phụ thuộc của nó• Có hai loại DI:o Constructor injectiono Setter injection

Page 15: Hibernate slide introduction

15

II. Cơ sở kiến thức1. Spring framework

1.3 Dependency Injection – Ví dụpublic class ConstructorMessage {

private Message message = null;//Constructor injectionpublic ConstructorMessage(Message message) {

this.message = message; } //Gets messagepublic Message getMessage() {

return message;}//Sets message injectionpublic void setMessage(Message message) {

this.message = message; }

}

Page 16: Hibernate slide introduction

16

II. Cơ sở kiến thức1. Spring framework

1.3 Dependency Injection – Lợi ích• Tăng khả năng tái sử dụng code• Làm công đoạn unit test trở nên dể dàng hơn• Dependency Injection giử các class liên kết với nhau

nhưng cũng giữ tính độc lập cao giữa chúng• Tăng khả năng độc hiểu code

Page 17: Hibernate slide introduction

17

II. Cơ sở kiến thức1. Spring framework

1.4 Aspect oriented programming• Là một phần quan trọng của Spring framework• Tách chương trình thành các concern• Cross-cutting concern• Đóng vai trò như một trigger trong các ngôn ngữ lập

trình

Page 18: Hibernate slide introduction

18

II. Cơ sở kiến thức2. Spring Web MVC framework

2.1 Giới thiệu

• Là một module của Spring framework• Là một framework mạnh mẽ trong lập trình java web

xoay quanh DispatcherServlet• Cung cấp mô hình MVC bao gồm các thành phần:o Modelo Viewo Controller

Page 19: Hibernate slide introduction

19

II. Cơ sở kiến thức2. Spring Web MVC framework

2.2 Mô hình MVC trong Spring

Page 20: Hibernate slide introduction

20

II. Cơ sở kiến thức2. Spring Web MVC framework

2.2 Mô hình MVC trong Spring

MVC – Model:

• Mô tả dữ liệu của ứng dụng trong các POJO• Nhận và trả lời các yêu cầu dữ liệu từ View• Trả về các dữ liệu, giá trị cho các xử lý nghiệp vụ của

Controller

Page 21: Hibernate slide introduction

21

II. Cơ sở kiến thức2. Spring Web MVC framework

2.2 Mô hình MVC trong Spring

MVC – View:

• Thực hiện lấy dữ liệu từ Model• Biểu diễn dữ liệu của Model trên các trang HTML, JSP,

…• Người dùng sẽ tương tác với ứng dụng thông qua các

View

Page 22: Hibernate slide introduction

22

II. Cơ sở kiến thức2. Spring Web MVC framework

2.2 Mô hình MVC trong Spring

MVC – Controller:

• Tiếp nhận xử lý các request và trả về các View phù hợp

• Lấy dữ liệu từ Model và đưa vào View để hiển thị• Đồng bộ hóa Model và View

Page 23: Hibernate slide introduction

23

II. Cơ sở kiến thức2. Spring Web MVC framework

2.3 DispatcherServlet – là gì?

• Spring MVC được xây dựng dựa trên DispatcherServlet• Tiếp nhận tất cả các request đến từ client• Điều khiển luồng xử lý và trung chuyển giữa các thành

phần• Tích hợp Spring IoC container -> Các tính năng của

Spring• Được khai báo bên trong file web.xml, các request muốn

được xử lý bởi DispatcherServlet thì cần phải ánh xạ

Page 24: Hibernate slide introduction

24

II. Cơ sở kiến thức2. Spring Web MVC framework

2.3 DispatcherServlet – cơ chế

Page 25: Hibernate slide introduction

25

II. Cơ sở kiến thức2. Spring Web MVC framework

2.3 DispatcherServlet – cơ chế

1) Sau khi nhận được một HTTP request, DispatcherServlet nhờ Handler Mapping để gọi được một Controller phù hợp2) Controller nhận request và tiến hành gọi phương thức xử lý phù hợp là POST hoặc là GET. Sau khi xử lý thì phương thức sẽ có được Model và tên của View sẽ hiển thị rồi gửi về cho DispatcherServlet

Page 26: Hibernate slide introduction

26

II. Cơ sở kiến thức2. Spring Web MVC framework

2.3 DispatcherServlet – cơ chế

3) DispatcherServlet sẽ nhờ hổ trợ của ViewResolver để lấy được một View cho request4) Một View được khởi tạo, DispatcherServlet đưa Model vào View và cuối cùng là hiển thị lên browser

Page 27: Hibernate slide introduction

27

II. Cơ sở kiến thức2. Spring Web MVC framework

2.4 Hiện thực controller

Page 28: Hibernate slide introduction

28

II. Cơ sở kiến thức2. Spring Web MVC framework

2.5 HandlerMapping

• Trong các phiên bản trước, người dùng cần khai báo các bean HandlerMapping

• Trong phiên bản 2.5 trở về sau, annotation xuất hiện• RequestMappingHandlerMapping tự động tìm kiếm

các annotation để tạo ra các bean tương ứng @Controller, @RequestMapping

• Các handler có thể được cài đặt các phương thức đánh chặn

Page 29: Hibernate slide introduction

29

II. Cơ sở kiến thức2. Spring Web MVC framework

2.5 HandlerMapping - HandlerInterceptor

• Các interceptor trong một handler phải implement HandlerInterceptor

• Interface này có 3 phương thức:o preHandler() - thực hiện trước khi handler được

thực thio postHandler() – sau khi handler được thực thio afterCompletion() – khi xử lý request hoàn toàn kết

thúc

Page 30: Hibernate slide introduction

30

II. Cơ sở kiến thức2. Spring Web MVC framework

2.5 HandlerMapping - HandlerInterceptor

Page 31: Hibernate slide introduction

31

II. Cơ sở kiến thức2. Spring Web MVC framework

2.5 HandlerMapping - HandlerInterceptor

Page 32: Hibernate slide introduction

32

II. Cơ sở kiến thức2. Spring Web MVC framework

2.5 HandlerMapping - HandlerInterceptor

Page 33: Hibernate slide introduction

33

II. Cơ sở kiến thức2. Spring Web MVC framework

2.6 Resolving view

• Spring cung cấp view resolver cho phép hiển thị các model ra trình duyệt

• Có hai interface quan trọng xử lý view:o ViewResolver: cung cấp ánh xạ giữa tên view và tên

view thực tếo View: đề cập đến việc chuẩn bị và xử lý request

thông qua một công nghệ view nào đó

Page 34: Hibernate slide introduction

34

II. Cơ sở kiến thức2. Spring Web MVC framework

2.6 Resolving view

• Trong Spring thì một controller giải quyết cho một tên view

• Các view được đánh địa chỉ là một tên view logic và nó sẽ được phân giải bởi một view resolver

• Spring có một số loại view resolver: AbstractCatchingViewResolver UrlBasedViewResolver FreeMakerViewResolver ContentNegotiatingViewResolver

Page 35: Hibernate slide introduction

35

II. Cơ sở kiến thức2. Spring Web MVC framework

2.6 Resolving view – ví dụ

UrlBasedViewResolver

test

/WEB-INF/jsp/test.jsp

Page 36: Hibernate slide introduction

36

II. Cơ sở kiến thức3. Hibernate

• Là một kỹ thuật ORM trên Java• Được tạo ra bởi Gavin King năm 2001• Là mã nguồn mở• Hỗ trợ các API để lưu trữ và lấy các đối tượng Java

trực tiếp từ cơ sở dữ liệu• Hỗ trợ hầu hết các hệ thống cơ sở dữ liệu quan hệ

3.1 Giới thiệu Hibernate

Page 37: Hibernate slide introduction

37

II. Cơ sở kiến thức3. Hibernate

3.1 Giới thiệu Hibernate

Page 38: Hibernate slide introduction

38

II. Cơ sở kiến thức3. Hibernate

3.2 Kiến trúc Hibernate

Page 39: Hibernate slide introduction

39

II. Cơ sở kiến thức3. Hibernate

3.2 Kiến trúc Hibernate

Page 40: Hibernate slide introduction

40

II. Cơ sở kiến thức3. Hibernate

Các thuộc tính của Hibernate :• hibernate.dialect• hibernate.connection.driver_class • hibernate.connection.url • hibernate.connection.username • hibernate.connection.password• hibernate.connection.pool_size• hibernate.connection.autocommit

3.3 Cấu hình Hibernate

Page 41: Hibernate slide introduction

41

II. Cơ sở kiến thức3. Hibernate

Ví dụ về file cấu hình Hibernate.cfg.xml :<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </property>

3.3 Cấu hình Hibernate

Page 42: Hibernate slide introduction

42

II. Cơ sở kiến thức3. Hibernate

Ví dụ về file cấu hình Hibernate.cfg.xml :<property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property> <!-- Assume test is the database name --> <property name="hibernate.connection.url"> jdbc:mysql://localhost/test </property> <property name="hibernate.connection.username"> root </property>

3.3 Cấu hình Hibernate

Page 43: Hibernate slide introduction

43

II. Cơ sở kiến thức3. Hibernate

Ví dụ về file cấu hình Hibernate.cfg.xml :<property name="hibernate.connection.password"> root123 </property> <!-- List of XML mapping files --> <mapping resource="Employee.hbm.xml"/></session-factory></hibernate-configuration>

3.3 Cấu hình Hibernate

Page 44: Hibernate slide introduction

44

II. Cơ sở kiến thức3. Hibernate

• Một session sử dụng để lấy kết nối vật lý với cơ sở dữ liệu

• Các đối tượng Persistent được lưu lại là lấy ra thông qua đối tượng Session

• Đối tượng Hibernate có 3 trạng thái :• Transient• Persistent• Detached

3.4 Hibernate Session

Page 45: Hibernate slide introduction

45

II. Cơ sở kiến thức3. Hibernate

Một số phương thức cơ bản của Session interface :• Transaction beginTransaction() • Connection close() • Serializable getIdentifier(Object object) • Query createQuery(String queryString) • SQLQuery createSQLQuery(String queryString) • void delete(Object object) • Session get(String entityName, Serializable id)

3.4 Hibernate Session

Page 46: Hibernate slide introduction

46

II. Cơ sở kiến thức3. Hibernate

Một số phương thức cơ bản của Session interface :• SessionFactory getSessionFactory() • Transaction getTransaction() • Serializable save(Object object) • void saveOrUpdate(Object object) • void update(Object object) • …

3.4 Hibernate Session

Page 47: Hibernate slide introduction

47

II. Cơ sở kiến thức3. Hibernate

• Các đối tượng hoặc thể hiện của lớp Java sẽ được lưu trữ trong các bảng và được gọi là lớp persistent trong Hibernate

• Tài liệu ánh xạ Hibernate giúp xác định cách lấy các giá trị từ lớp và ánh xạ chúng với bảng liên quan.

• Các lớp phải tuân theo mô hình POJO

3.5 Lớp Persistent Hibernate

Page 48: Hibernate slide introduction

48

II. Cơ sở kiến thức3. Hibernate

• Xét ví dụ :<hibernate-mapping> <class name="Employee" table="EMPLOYEE"> <meta attribute="class-description"> This class contains the employee detail. </meta> <id name="id" type="int" column="id"> <generator class="native"/> </id>

3.6 File ánh xạ Hibernate

Page 49: Hibernate slide introduction

49

II. Cơ sở kiến thức3. Hibernate

<property name="firstName" column="first_name" type="string"/> <property name="lastName" column="last_name" type="string"/> <property name="salary" column="salary" type="int"/> </class></hibernate-mapping>

3.6 File ánh xạ Hibernate

Page 50: Hibernate slide introduction

50

II. Cơ sở kiến thức3. Hibernate

Bao gồm ba kiểu ánh xạ chính :• Ánh xạ tập hợp• Ánh xạ liên kết giữa các lớp thực thể• Ánh xạ bộ phận

3.7 Ánh xạ O/R Hibernate

Page 51: Hibernate slide introduction

51

II. Cơ sở kiến thức3. Hibernate

Bao gồm ba kiểu ánh xạ chính :• Ánh xạ tập hợp• Ánh xạ liên kết giữa các lớp thực thể• Ánh xạ thanh phần

3.7 Ánh xạ O/R Hibernate

Page 52: Hibernate slide introduction

52

II. Cơ sở kiến thức3. Hibernate

Ánh xạ tập hợpCác kiểu tập hợp thường sử dụng như :• <set> : Không chứa các phần từ trùng nhau, có thứ

tự/không thứ tự• <map> :Không chứa giá trị trùng nhau, có thứ

tự/không thứ tự, cần giá trị cho thuộc tính key và column

• <list> : Có thứ tự, cần một index column trên bảng đối tượng tham chiếu

3.7 Ánh xạ O/R Hibernate

Page 53: Hibernate slide introduction

53

II. Cơ sở kiến thức3. Hibernate

Ánh xạ liên kết giữa các lớp thực thể• Many-to-One• One-to-One• One-to-Many• Many-to-Many

3.7 Ánh xạ O/R Hibernate

Page 54: Hibernate slide introduction

54

II. Cơ sở kiến thức3. Hibernate

Ánh xạ thành phần• Một lớp thực thể tham chiếu đến lớp thực thể khác

như biến thanh viên

3.7 Ánh xạ O/R Hibernate

Page 55: Hibernate slide introduction

55

II. Cơ sở kiến thức3. Hibernate

• Các annotation phổ biến thường dung như :• @Entity• @Table • @Id và @GeneratedValue • @Column

3.8 Hibernate annotation

Page 56: Hibernate slide introduction

56

II. Cơ sở kiến thức3. Hibernate

• Là ngôn ngữ truy vấn hướng đối tượng,tương tự SQL nhưng thay vì làm việc trên các cột,HQL làm việc trên đối tượng persistent và các thuộc tính của nó. HQL sẽ chuyển sang câu lệnh SQL tùy theo CSDL đang sử dụng

• Có thể sử dụng các interface hoặc class• Hạn chế rắc rối trong việc thay đổi CSDL

3.8 Hibernate Query Language(HQL)

Page 57: Hibernate slide introduction

57

II. Cơ sở kiến thức3. Hibernate

• Cho phép truy vấn đối tượng áp dụng quy tắc lọc và điều kiện logic

• Sử dụng phương thức createCriteria() để tạo ra điều kiện lọc xác định.

• Sau đây là ví dụ đơn giản nhất vè truy vấn criteria và trả về đối tượng tương ứng :

Criteria cr = session.createCriteria(Employee.class);List results = cr.list();

3.8 Truy vấn với Hibernate Criteria

Page 58: Hibernate slide introduction

58

II. Cơ sở kiến thức3. Hibernate

• Sử dụng phương thức add() để thêm điều kiện lọc cho truy vấn criteria

Ví dụ : Criteria cr = session.createCriteria(Employee.class);cr.add(Restrictions.eq("salary", 2000));List results = cr.list();

3.8 Truy vấn với Hibernate Criteria

Page 59: Hibernate slide introduction

59

II. Cơ sở kiến thức3. Hibernate

• Sử dụng lớp org.hibernate.criterion.Projections để lấy giá trị trung bình, giá trị lớn nhất, giá trị nhỏ nhất của thuộc tính

Ví dụ :// Đếm tổng số dòngcr.setProjection(Projections.rowCount());// Lấy giá trị trung bình thuộc tínhcr.setProjection(Projections.avg("salary"));

3.8 Truy vấn với Hibernate Criteria

Page 60: Hibernate slide introduction

60

III. Thiết kế1. Usecase

Page 61: Hibernate slide introduction

61

III. Thiết kế2. Database

Page 62: Hibernate slide introduction

62

IV. Cài đặt và kiểm thử1. Cài đặt

Page 63: Hibernate slide introduction

63

IV. Cài đặt và kiểm thử2. Kiểm thử

Page 64: Hibernate slide introduction

64

IV. Cài đặt và kiểm thử3. Đánh giá

Page 65: Hibernate slide introduction

65

V. Demo

Page 66: Hibernate slide introduction

66

VI. Tổng kết

Page 67: Hibernate slide introduction

67

Cảm ơn thầy cô và các bạn đã lắng nghe