You are on page 1of 10

TÌM HIỂU SPRING

FRAMEWORK, ORM VÀ
XÂY DỰNG RESTFUL API
TRONG PHÁT TRIỂN ỨNG
DỤNG TẠI DOANH
NGHIỆP
Thực tập chuyên ngành cuối khóa

SDC-DATA
76 Trường Chinh
MỞ ĐẦU
I. Nội dung thực tập
1.1. Mục đích
- Tìm hiểu và xây dựng hệ thống back-end của web
- Hiểu được cơ chế hoạn động và ứng dụng của Spring framework.
- Áp dụng các kiến thức đã học vào việc phát triển ứng dụng thực tế tại doanh
nghiệp.
1.2. Ý nghĩa
Việc tìm hiểu xây dựng và phát triển back-end cho app bằng Spring Framework
bản thân sinh viên hiểu rõ hơn về chức năng, nhiệm vụ của từng bộ phần trong app và
web. Vận dụng kĩ năng lập trình vào xây dựng app và web.
1.3. Thời gian thực tập
12 tuần, bắt đầu từ ngày 1/02/2020 đến 1/05/2020.
1.4. Lịch trình:
Sinh viên có 3 tháng thực tập thực tế tại cơ quan (1/02/2020 đến 1/05/2020) và có
mặt tại cơ quan 7 buổi/tuần.
1.5. Địa điểm: Công ty TNHH Smart Data Cube (SDCdata).
Thông qua đề tài này, em muốn xây dựng một app và một web để việc thu thập
được thực hiện một cách nhanh chóng và chính xác hơn.
II. Bố cục của báo thực tập
Về phần nội dung, đề tài gồm có 2 chương:
1: Giới thiệu về các công nghệ sử dụng
Giới thiệu sơ lược về công nghệ sử dụng.
2: Tình hình thực tập tại doanh nghiệp
Báo cáo tình hình thực tập lại doanh nghiệp, các khó khăn và kinh nghiệm thu
được trong quá trình thực tập.
GIỚI THIỆU VỀ CÔNG NGHỆ SỬ DỤNG
I. Tìm hiểu về Spring Framework
1.1. Spring là gì ?
Spring là một Framework phát triển các ứng dụng Java được sử dụng bởi hàng
triệu lập trình viên. Nó giúp tạo các ứng dụng có hiệu năng cao, dễ kiểm thử, sử dụng lại
code.
Spring nhẹ và trong suốt (nhẹ: kích thước nhỏ, version cơ bản chỉ khoảng 2MB;
trong suốt: hoạt động một cách trong suốt với lập trình viên).
Spring là một mã nguồn mở, được phát triển, chia sẻ và có cộng đồng người dùng
rất lớn.
Spring Framework được xây dựng dựa trên 2 nguyên tắc design chính là:
Dependency Injection và Aspect Oriented Programming.
Những tính năng core (cốt lõi) của Spring có thể được sử dụng để phát triển Java
Desktop, ứng dụng mobile, Java Web. Mục tiêu chính của Spring là giúp phát triển các
ứng dụng J2EE một cách dễ dàng hơn dựa trên mô hình sử dụng POJO (Plain Old Java
Object).
1.1.1. Các lợi ích khi sử dụng Spring Framework
Spring cho phép lập trình viên sử dụng POJOs. Việc sử dụng POJOs giúp bạn
không phải làm việc với EJB, ứng dụng, các luồng chạy, cấu hình… đơn giản hơn rất
nhiều.
Spring được tổ chức theo kiểu mô-đun. Số lượng các gói và các lớp khá nhiều,
nhưng bạn chỉ cần quan tâm đến những gì bạn cần và không cần quan tâm đến phần còn
lại.
Spring hỗ trợ sử dụng khá nhiều công nghệ như ORM Framework, các logging
framework, JEE, các thư viện tạo lịch trình (Quartz và JDK timer)…
Module Web của Spring được thiết kế theo mô hình MVC nên nó cung cấp đầy đủ
các tính năng giúp thay thế các web framework khác như Struts.
1.1.2. Các dự án trong Spring Framework
- Spring MVC
- Spring Security
- Spring Boot
- Spring Batch
- Spring Social
- Spring IO
- Spring Cloud
- Spring Mobile
- Spring for Android
- Spring Session
Trong lần thực tập này , em chỉ tập trung vào Spring Boot và Spring
Security
1.1.3. Spring Boot
1.1.3.1. Spring Boot là gì ?
Spring Boot là một module của Spring Framework, cung cấp tính năng RAD
(Rapid Application Development) - Phát triển ứng dụng nhanh.
Spring Boot được dùng để tạo các ứng dụng độc lập dựa trên Spring.
Spring Boot không yêu cầu cấu hình XML
Nó là một chuẩn cho cấu hình thiết kế phần mềm, tăng cao năng suất cho
developer.
1.1.3.2. Ưu điểm của Spring Boot :
 Có các tính năng của Spring Framework.
 Tạo ứng dụng độc lập, có thể chạy bằng java -jar (cho cả java web).
 Nhúng trực tiếp các ứng dụng server (Tomcat, Jetty…) do đó không cần phải triển
khai file WAR.
 Cấu hình ít, tự động cấu hình bất kì khi nào có thể (Giảm thời gian viết code, tăng
năng suất).
 Không yêu cầu XML config…
 Cung cấp nhiều plugin.
 Chuẩn cho Microservices (Cloud support; giảm việc setup, config; các thư viện hỗ
trợ…)
1.1.4. Spring Security
1.1.4.1 Spring Security là gì ?
Spring Security là một framework tập trung vào việc cung cấp khả năng xác thực
và phân quyền cho ứng dụng Java.
1.1.4.2. Cơ chế hoạt động của Spring Security
Khi chúng ta đăng nhập , Spring Security sẽ kiểm tra thông tin dựa vào các thông
tin chúng ta config để xác thực và phân quyền cho user.
Sau khi đăng nhập , user sẽ được lưu trong session, đối tượng user này gồm các
thông tin như username , password , role …
1.1.4.3. Ưu điểm của Spring Security :
Lợi ích lớn nhất của Spring Security là giúp bạn tích hợp tính năng xác thực và
phân quyền một cách dễ dàng vào ứng dụng của mình.
Ngoài ra Spring Security còn giúp:
Chống lại CSRF attack Bảo vệ Session Fixation Mã hóa mật khẩu. Cache control
X-XSS-Protection …
1.2. Tìm hiểu về JWT (JSON Web Token)
1.2.1. Tổng quan về JWT (JSON Web Token)
1.2.1.1. JWT là gì ?
JWT là một phương tiện đại diện cho các yêu cầu chuyển giao giữa hai bên Client
– Server , các thông tin trong chuỗi JWT được định dạng bằng JSON . Trong đó chuỗi
Token phải có 3 phần là header , phần payload và phần signature được ngăn bằng dấu “.”
1.2.1.2. Cấu trúc của JWT
JWT gồm 3 phần:
- Header
Phần Header sẽ chứa kiểu dữ liệu và thuật toán sử dụng để mã hóa ra chuỗi JWT.
- Payload
Phần payload sẽ chứa các thông tin mình muốn đặt trong chuỗi Token như
username, userId, author,…
- Signature
Phần chữ ký này sẽ được tạo ra bằng cách mã hóa phần header, payload kèm theo
một chuỗi secret(khóa bí mật).
Sau khi mã hóa Header và Payload bằng thuật toán base64UrlEncode và kèm theo
chuỗi secret được mã hóa bằng HS256 thì ta có được chuỗi Signature .
Kết hợp 3 chuỗi trên ta có được một chuối JWT
1.2.2. Ứng dụng của JWT (JSON Web Token)
1.2.2.1. Authentication
Đây là trường hợp phổ biến nhất thường sử dụng JWT. Khi người dùng đã đăng
nhập vào hệ thống thì những request tiếp theo từ phía người dùng sẽ chứa thêm mã JWT.
Điều này cho phép người dùng được cấp quyền truy cập vào các url, service, và resource
mà mã Token đó cho phép. Phương pháp này không bị ảnh hưởng bởi Cross-Origin
Resource Sharing (CORS) do nó không sử dụng cookie.
1.2.2.2. Trao đổi thông tin
JSON Web Token là 1 cách thức khá hay để truyền thông tin an toàn giữa các
thành viên với nhau, nhờ vào phần signature của nó. Phía người nhận có thể biết được
người gửi là ai thông qua phần signature. Và chữ ký được tạo ra bằng việc kết hợp cả
phần header, payload lại nên thông qua đó ta có thể xác nhận được chữ ký có bị giả mạo
hay không.
1.2.3. JWT (JSON Web Token) trong Spring Security
Khi hết hợp JWT vào Spring , chúng ta cần thêm các dependency sau để sử dụng
JWT
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.7.0</version>
</dependency>
Cơ chế hoạt động của JWT trong Spring :
1.3. Hibernate Framework
1.3.1 Giới thiệu về Hibernate
Hibernate ra đời năm 2001 bởi nhà sáng lập Gavin King như một sự thay thế cho
EJB2 kiểu thực thể bean.
1.3.2 Hibernate Framework là gì?
Hibernate framework là một giải pháp ORM (Object Relational Mapping) mã
nguồn mở, gọn nhẹ. Hibernate giúp đơn giản hoá sự phát triển của ứng dụng java để
tương tác với cơ sở dữ liệu.

Tool ORM giúp đơn giản hoá việc tạo ra dữ liệu, thao tác dữ liệu và truy cập dữ
liệu. Đó là một kỹ thuật lập trình để ánh xạ đối tượng vào dữ liệu được lưu trữ trong cơ
sở dữ liệu.

1.3.3 Lợi ích của Hibernate Framework

Hibernate Framework có các lợi ích như dưới đây:

o Mã nguồn mở và nhẹ: Hibernate Framework là mã nguồn mở có giấy phép LGPL


và nhẹ.
o Hiệu suất nhanh: Hiệu suất của Hibernate Framework là nhanh bởi vì bộ nhớ
cache được sử dụng trong nội bộ Hibernate Framework. Có hai loại bộ nhớ cache
trong Hibernate Framework, gồm bộ nhớ cache cấp một và bộ nhớ cache cấp hai.
Bộ nhớ cache cấp một được bật bằng lệnh mặc định.
o Truy vấn cơ sở dữ liệu độc lập: HQL (Hibernate Query Language) là phiên bản
hướng đối tượng của SQL. Nó tạo ra các truy vấn cơ sở dữ liệu độc lập. Vì vậy,
bạn không cần phải viết các truy vấn cơ sở dữ liệu cụ thể. Trước Hibernate, nếu
dự án có cơ sở dữ liệu bị thay đổi, chúng ta cần phải thay đổi truy vấn SQL dẫn
đến sự cố bảo trì.
o Tạo bảng tự động: Hibernate framework cung cấp phương tiện để tạo ra các bảng
cơ sở dữ liệu tự động. Vì vậy, không cần phải tạo ra các bảng trong cơ sở dữ liệu
bằng tay.
o Đơn giản lệnh join phức tạp: Có thể lấy dữ liệu từ nhiều bảng một cách dễ dàng
với Hibernate framework.
o Cung cấp thống kê truy vấn và trạng thái cơ sở dữ liệu: Hibernate hỗ trợ bộ nhớ
cache truy vấn và cung cấp số liệu thống kê về truy vấn và trạng thái cơ sở dữ
liệu.
1.3.4 Database được hỗ trợ
Hibernate hỗ trợ hầu hết tất cả RDBMS chính. Dưới đây là danh sách vài cơ sở dữ
liệu quan hệ được hỗ trợ bởi Hibernate.

 HSQL Database Engine


 DB2/NT
 MySQL
 PostgreSQL
 FrontBase
 Oracle
 Microsoft SQL Server Database
 Sybase SQL Server
 Informix Dynamic Server
TÌNH HÌNH THỰC TẬP TẠI DOANH NGHIỆP
1.Đánh giá chung:
Quá trình thực tập tại doanh nghiệp diễn ra rất suôn sẻ, kể cả trong thời gian dịch
bệnh. Các công việc được giao tìm hiểu đều áp dụng được vào dự án, ngoài ra doanh
nghiệp còn hỗ trợ và tạo điều kiện rất tốt về cơ sở vật chất và tinh thần trong quá trình
diễn ra thực tập, tuy nhiên vẫn còn tồn tại một số khó khăn của chính bản thân và doanh
nghiệp trong quá trình thực tập …
2. Các khó khăn và hạn chế:
 Chưa hệ thống hóa tốt kiến thức nền tảng được học tại trường, trong giai đoạn đầu
của quá trình thực tập vẫn còn mắc một số lỗi cơ bản như : name convention,
design database schema …
 Hiểu sai kiến thức trong quá trình nghiên cứu và lập trình điển hình là:
- Session Based Authentication (Spring Session) & Token Based Authentication
(JWT)
- Spring Security concept : Authentication & Authorization
- Hibernate: Quản lý việc đóng, mở các connection đến Oracle Database trong
quá trình truy vấn dẫn đến lỗi.
Quản lý không tốt các trạng thái của thực thể hibernate khiến cho việc thao tác
với CSDL diễn ra lỗi.
 Do tình hình dịch bệnh diễn ra phức tạp nên việc giao tiếp giữa các thành viên
thực hiện dự án và người quản lý nhóm thực tập diễn ra rất hạn chế.
Tổng quan: Các yếu tố như trên dẫn đến việc kéo dài thời gian làm dự án, hao hụt
nhiều ngày cho mỗi phần công việc, việc sửa đổi code diễn ra rất nặng nhọc, nhiều khi
phải sửa đổi toàn bộ. Các vấn đề này đã được khắc phục trong khoảng thời gian giữa
và cuối của quá trình thực tập.
3. Kết quả thu được:
 Hiểu được việc quản lý, phân chia công việc trong doanh nghiệp.
 Tìm hiểu và áp dụng thành công Spring Framework, Hibernate Framwork trong
việc áp dụng doanh nghiệp.
 Áp dụng kiến thức đã học vào phát triển ứng dụng doanh nghiệp.

You might also like