Tải bản đầy đủ (.pdf) (129 trang)

Xây dụng hệ thống quản lý cửa hàng và đặt hàng trực tuyến

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (6.92 MB, 129 trang )

TRƯỜNG ĐẠI HỌC SƯ PHẠM
KHOA TIN HỌC

BÁO CÁO

KHÓA LUẬN TỐT NGHIỆP

TÊN ĐỀ TÀI

XÂY DỰNG HỆ THỐNG QUẢN LÝ CỬA
HÀNG VÀ ĐẶT HÀNG TRỰC TUYẾN

Sinh viên
CBHD
Lớp

: NGUYỄN THANH PHÚC
: ThS. PHẠM DƯƠNG THU HẰNG
: 16 CNTT 3

ĐÀ NẴNG, 04/2020


LỜI CAM ĐOAN
Tôi xin cam đoan:
1. Những nội dung trong báo cáo này là do em thực hiện dưới sự hướng
dẫn trực tiếp của ThS. Phạm Dương Thu Hằng.
2. Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên
tác giả, tên cơng trình, thời gian, địa điểm công bố.
3. Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, em
xin chịu hoàn toàn trách nhiệm.



Đà Nẵng, ngày 20 tháng 04 năm 2020
Sinh viên thực hiện

Nguyễn Thanh Phúc

Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


MỤC LỤC
DANH MỤC CÁC BẢNG ............................................................... i
DANH MỤC CÁC HÌNH VẼ - ĐỒ THỊ ....................................... ii
MỞ ĐẦU ......................................................................................... vii
1. Lý do chọn đề tài ..................................................................................... vii
2. Mục tiêu và nhiệm vụ............................................................................. viii
3. Đối tượng và phạm vi nghiên cứu.......................................................... viii
3.1. Đối tượng nghiên cứu ...................................................................................... viii
3.2. Phạm vi nghiên cứu.......................................................................................... viii

4. Phương pháp nghiên cứu ....................................................................... viii
5. Kết quả dự kiến ........................................................................................ ix
5.1 Lý thuyết ............................................................................................................. ix
5.2 Thực tiễn ............................................................................................................. ix

CHƯƠNG I: CƠ SỞ LÝ THUYẾT ................................................1
1. Spring Framework..................................................................................... 1
1.1. Tổng quan về Spring Framework........................................................................ 1
1.2. Một số khái niệm chính ....................................................................................... 2
1.3. Spring Core ......................................................................................................... 5
1.4. Spring Boot ......................................................................................................... 6

1.5. Spring Security .................................................................................................... 8
1.6. Spring JDBC ....................................................................................................... 9

2. Hệ quản trị cơ sở dữ liệu MySQL ............................................................. 9
2.1. Tổng quan về MySQL......................................................................................... 9
2.2. Một số khái niệm............................................................................................... 11
2.3. Những cú pháp cơ bản ...................................................................................... 13

CHƯƠNG II: THIẾT KẾ VÀ PHÁT TRIỂN HỆ THỐNG ......16
1. Ý tưởng ................................................................................................... 16
1.1. Mô tả ý tưởng .................................................................................................... 16
1.2. Cách tiếp cận, cách xử lý .................................................................................. 16
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


2. Phân tích thiết kế hệ thống ...................................................................... 16
2.1 Đặc tả hệ thống .................................................................................................. 16
2.2. Xác định các tác nhân (Actor)........................................................................... 27
2.3. Quan hệ giữa các tác nhân (Actor).................................................................... 29
2.4. Xác định các Use Case ...................................................................................... 29
2.6. Biểu đồ Use Case (Use Case Diagram) ............................................................ 36
2.7 Biểu đồ hoạt động (Activity Diagram) .............................................................. 40
2.8. Biểu đồ lớp (Class Diagram)............................................................................. 78
2.9. Thiết kế cơ sở dữ liệu quan hệ .......................................................................... 81
2.2 Cài đặt cơ sở dữ liệu quan hệ ............................................................................. 83

CHƯƠNG III: TRIỂN KHAI VÀ KẾT QUẢ .............................84
1. Triển khai hệ thống ................................................................................. 84
1.1. Môi trường triển khai ........................................................................................ 84
1.2. Giao diện hệ thống ............................................................................................ 85

1.3. Kiểm thử ......................................................................................................... 110
1.4. Xử lý ngoại lệ .................................................................................................. 111

2. Kết quả .................................................................................................. 113
2.1. Về mặt lý thuyết .............................................................................................. 113
2.2. Về mặt thực tiễn .............................................................................................. 113

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ................................. 114
1. Kết luận ................................................................................................. 114
2. Hướng phát triển ................................................................................... 114

DANH MỤC TÀI LIỆU THAM KHẢO ................................... 115

Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


i

DANH MỤC CÁC BẢNG
Bảng 1. Các kiểu dữ liệu cơ bản trong MySQL .............................................. 13
Bảng 2. Danh sách các tác nhân (actor). ......................................................... 28
Bảng 3. Danh sách các Use Case của hệ thống website quản lý cửa hàng và
đặt hàng trực tuyến. ................................................................................. 35
Bảng 4. Danh sách các bảng trong cơ sở dữ liệu quan hệ hệ thống ............... 82

Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


ii


DANH MỤC CÁC HÌNH VẼ - ĐỒ THỊ
Hình 1. Các module trong Spring Framework .................................................. 5
Hình 2. Khởi tạo ứng dụng Spring Boot ........................................................... 7
Hình 3. Cấu trúc thư mục ứng dụng Spring Boot ............................................. 7
Hình 4. Chạy thành cơng ứng dụng Spring Boot .............................................. 8
Hình 5. Các câu lệnh JOINS trong MySQL ................................................... 15
Hình 6. Quan hệ giữa các tác nhân (actor) ...................................................... 29
Hình 7. Biểu đồ Use Case với actor Visitor .................................................... 36
Hình 8. Biểu đồ Use Case với actor User ....................................................... 37
Hình 9. Biểu đồ Use Case với actor Store Owner .......................................... 38
Hình 10. Biểu đồ Use Case với actor Administrator ...................................... 39
Hình 11. Biểu đồ hoạt động xem trang chủ .................................................... 40
Hình 12. Biểu đồ hoạt động đăng ký .............................................................. 41
Hình 13. Biểu đồ hoạt động thay đổi ngơn ngữ .............................................. 42
Hình 14. Biểu đồ hoạt động xem liên hệ......................................................... 43
Hình 15. Biểu đồ hoạt động xem dịch vụ ....................................................... 44
Hình 16. Biểu đồ hoạt động xem chi tiết dịch vụ ........................................... 45
Hình 17. Biểu đồ hoạt động xem giới thiệu .................................................... 46
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


iii

Hình 18. Biểu đồ hoạt động xem hướng dẫn .................................................. 47
Hình 19. Biểu đồ hoạt động xem giỏ hàng ..................................................... 48
Hình 20. Biểu đồ hoạt động cập nhật số lượng sản phẩm trong giỏ hàng ...... 49
Hình 21. Biểu đồ hoạt động xóa sản phẩm trong giỏ hàng ............................. 50
Hình 22. Biểu đồ hoạt động xem cửa hàng ..................................................... 51
Hình 23. Biểu đồ hoạt động thêm sản phẩm vào giỏ hàng ............................. 52
Hình 24. Biểu đồ hoạt động đăng nhập ........................................................... 53

Hình 25. Biểu đồ hoạt động đăng xuất............................................................ 54
Hình 26. Biểu đồ hoạt động khôi phục mật khẩu ........................................... 55
Hình 27. Biểu đồ hoạt động xác thực tài khoản .............................................. 56
Hình 28. Biểu đồ hoạt động gửi lại email xác thực ........................................ 57
Hình 29. Biểu đồ hoạt động cập nhật thơng tin cá nhân ................................. 58
Hình 30. Biểu đồ hoạt động thay đổi mật khẩu .............................................. 59
Hình 31. Biểu đồ hoạt động kiểm tra đơn hàng cá nhân ................................. 60
Hình 32. Biểu đồ hoạt động đặt hàng.............................................................. 61
Hình 33. Biểu đồ hoạt động xem chi tiết đơn hàng ........................................ 62
Hình 34. Biểu đồ hoạt động quản lý thơng tin cửa hàng sỡ hữu .................... 63
Hình 35. Biểu đồ hoạt động quản lý sản phẩm cửa hàng sỡ hữu .................... 64
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


iv

Hình 36. Biểu đồ hoạt động quản lý danh mục cửa hàng ............................... 65
Hình 37. Biểu đồ hoạt động quản lý đơn hàng cửa hàng ................................ 66
Hình 38. Biểu đồ hoạt động thống kê cửa hàng .............................................. 67
Hình 39. Biểu đồ hoạt động quản lý dịch vụ .................................................. 68
Hình 40. Biểu đồ hoạt động quản lý danh mục ............................................... 69
Hình 41 Biểu đồ hoạt động quản lý cửa hàng ................................................. 70
Hình 42. Biểu đồ hoạt động quản lý đơn hàng ............................................... 71
Hình 43. Biểu đồ hoạt động quản lý sản phẩm ............................................... 72
Hình 44. Biểu đồ hoạt động quản lý tài khoản ............................................... 73
Hình 45. Biểu đồ hoạt động quản lý quyền người dùng ................................. 74
Hình 46. Biểu đồ hoạt động quản lý phương thức thanh tốn ........................ 75
Hình 47. Biểu đồ hoạt động quản lý phương thức vận chuyển ...................... 76
Hình 48. Biểu đồ hoạt động thống kê ............................................................. 77
Hình 49. Biểu đồ lớp hệ thống website quản lý cửa hàng và đặt hàng trực

tuyến......................................................................................................... 80
Hình 50. Biểu đồ cơ sở dữ liệu quan hệ hệ thống website quản lý cửa hàng và
đặt hàng trực tuyến .................................................................................. 83
Hình 51. Giao diện trang chủ website ............................................................. 85
Hình 52. Giao diện trang liên hệ website ........................................................ 86
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


v

Hình 53. Giao diện trang giới thiệu website ................................................... 87
Hình 54. Giao diện trang trợ giúp website ...................................................... 88
Hình 55. Giao diện trang dịch vụ .................................................................... 89
Hình 56. Giao diện trang chi tiết dịch vụ ........................................................ 90
Hình 57. Giao diện trang cửa hàng ................................................................. 91
Hình 58. Giao diện trang đăng nhập ............................................................... 92
Hình 59. Giao diện trang đăng ký ................................................................... 93
Hình 60. Giao diện trang khơi phục mật khẩu ................................................ 94
Hình 61. Giao diện trang giỏ hàng .................................................................. 95
Hình 62. Giao diện trang thơng tin cá nhân .................................................... 96
Hình 63. Giao diện trang thay đổi mật khẩu ................................................... 97
Hình 64. Giao diện trang kiểm tra đơn hàng ................................................... 98
Hình 65. Giao diện trang chi tiết đơn hàng ..................................................... 99
Hình 66. Giao diện trang quản lý thông tin cửa hàng ................................... 100
Hình 67. Giao diện trang quản lý sản phẩm cửa hàng .................................. 100
Hình 68. Giao diện trang quản lý danh mục cửa hàng.................................. 101
Hình 69. Giao diện trang thống kê cửa hàng ................................................ 102
Hình 70. Giao diện trang quản lý dịch vụ ..................................................... 103
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)



vi

Hình 71. Giao diện trang quản lý cửa hàng .................................................. 103
Hình 72. Giao diện trang quản lý danh mục ................................................. 104
Hình 73. Giao diện trang quản lý sản phẩm .................................................. 105
Hình 74. Giao diện trang quản lý đơn hàng .................................................. 106
Hình 75. Giao diện trang quản lý người dùng .............................................. 106
Hình 76. Giao diện trang quản lý quyền người dùng.................................... 107
Hình 77. Giao diện trang quản lý phương thức vận chuyển ......................... 107
Hình 78. Giao diện trang quản lý phương thức thanh tốn........................... 108
Hình 79. Giao diện trang quản lý liên hệ ...................................................... 108
Hình 80. Giao diện trang thống kê ................................................................ 109
Hình 81. Quá trình xử lý ngoại lệ. ................................................................ 112

Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


vii

MỞ ĐẦU
1. Lý do chọn đề tài
Ngày nay, công nghệ thông tin phát triển ngày càng hiện đại và đổi mới
khơng ngừng. Với sự phát triển đó của cơng nghệ thơng tin, thế giới đang
hồn tất cuộc cách mạng 4.0 thì việc tự động hóa và số hóa là việc làm cấp
thiết trong mọi ngành nghề nếu không muốn bị bỏ lại phía sau. Trong đó, các
lĩnh vực kinh doanh, thương mại điện tử hay cụ thể là kinh doanh cửa hàng và
mua bán sản phẩm trực tuyến đang là xu hướng được khách hàng ưu thích khi
cuộc sống đang ngày càng bận rộn và sự tiện nghi luôn đặt lên hàng đầu. Nhìn
nhận được sự cấp thiết và tầm quan trọng của việc phát triển ra một hệ thống

có thể quản lý chuỗi các cửa hàng và có thể đặt hàng trực tuyến, tác giả đã
chọn đề tài “HỆ THỐNG WEBSITE QUẢN LÝ CỬA HÀNG VÀ ĐẶT
HÀNG TRỰC TUYẾN” để nghiên cứu.
Hệ thống phát triển dựa trên các tiêu chí trên – tối ưu hoạt động của con
người. Chỉ cần vài bước đơn giản, khách hàng có thể tiếp cận và sử dụng hệ
thống để xem cửa hàng và đặt các sản phẩm mà cửa hàng cung cấp. Thông tin
đặt hàng được nhân viên quản lý hoặc nhân viên cửa hàng tiếp nhận và xử lý
nhanh gọn.
Hệ thống quản lý theo hướng các dịch vụ như: nhà hàng, bách hóa, hiệu
thuốc, … Trong mỗi dịch vụ sẽ có nhiều cửa hàng khác nhau, các cửa hàng
này sẽ đưa lên các sản phẩm mà cửa hàng kinh doanh, từ đó khách hàng có
thể tiếp cận và đặt mua dễ dàng.
Cùng với u cầu của khóa luận tốt nghiệp – tìm hiểu các cơng nghệ
mới khơng có trong q trình giảng dạy, hệ thống sử dụng Spring Framework
để xây dựng Website.

Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


viii

2. Mục tiêu và nhiệm vụ
Phân tích, thiết kế và xây dựng hệ thống website quản lý cửa hàng và
đặt hàng trực tuyến với các chức năng xem dịch vụ, xem cửa hàng, xem sản
phẩm cửa hàng, đặt mua hàng, quản lý cửa hàng, quản lý hệ thống, … Có
giao diện đẹp mắt, dễ nhìn, phù hợp với đa số người dùng, hỗ trợ thiết bị máy
tính và điện thoại thông minh. Hệ thống phục vụ cho các khách hàng mua sắm
trực tuyến, các chủ cửa hàng muốn kinh doanh sản phẩm trực tuyến.
3. Đối tượng và phạm vi nghiên cứu
3.1. Đối tượng nghiên cứu

- Hệ thống đặt hàng trực tuyến.
- Hệ thống quản lý cửa hàng trực tuyến.
- Website bán hàng trực tuyến.
- Người dùng mua hàng trực tuyến.
- Chủ cửa hàng kinh doanh trực tuyến.
3.2. Phạm vi nghiên cứu
- Người dùng mua hàng trực tuyến, chủ cửa hàng, quản trị viên hệ
thống.
- Các chức năng phục vụ đặt hàng trực tuyến, quản lý thông tin về cửa
hàng, quản lý thông tin về hệ thống website quản lý cửa hàng và đặt hàng trực
tuyến.
4. Phương pháp nghiên cứu
- Phương pháp nghiên cứu lý thuyết: Tìm kiếm tài liệu về Spring
Framework, Hệ quản trị cơ sở dữ liệu MySQL. Phân tích tài liệu và tóm tắt
nội dung lý thuyết cơ sở.

Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


ix

- Phương pháp quan sát: Quan sát các nghiệp vụ, quy trình bán hàng
của cửa hàng. Quan sát các website quản lý các cửa hàng và bán hàng trực
tuyến đã tồn tại trên internet.
5. Kết quả dự kiến
5.1 Lý thuyết
Công nghệ mới Spring Framework trong việc xây dựng website.
5.2 Thực tiễn
Hệ thống website quản lý cửa hàng và đặt hàng trực tuyến.


Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


1

CHƯƠNG I: CƠ SỞ LÝ THUYẾT
1. Spring Framework
1.1. Tổng quan về Spring Framework
Spring Framework hay ngắn hơn là Spring, là một framework phát triển
ứng dụng phổ biến nhất dành cho Java Enterprise. Ban đầu nó được viết viết
bởi Rod Johnson và lần đầu tiên được phát hành theo giấy phép Apache 2.0
vào tháng 6 năm 2003. Spring có kích thướng nhẹ, phiên bản cơ bản của
Spring framework có kích thước khoảng 2MB. [1]
Vào năm 2002, Spring Framework phát hành phiên bản đầu tiên bởi
Rod Johnson. Việc xây dựng các ứng dụng doanh nghiệp trở nên đơn giản và
dễ dàng hơn. Rod Johnson đã cho xuất bản một cuốn sách được phổ biến rộng
rãi có nhan đề "J2EE Development without EJB". Điều này đã cho Spring
Framework rất nhiều động lực để thay thế EJB.
Theo đà phát triển đó, Spring đã trở thành framework mã nguồn mở
phổ biến nhất để xây dựng các ứng dụng doanh nghiệp. Cách tiếp cận thực tế
ban đầu của Rod Johnson tiếp tục được phát triển và hướng tới một bộ cơng
cụ hồn chỉnh dành cho xây dựng các ứng dụng doanh nghiệp. Theo một số
nguồn, trên 50% các ứng dụng web Java hiện nay đang sử dụng Spring.
Để ngăn chặn sự phức tạp trong phát triển các ứng dụng, Spring
Framework thường dựa trên các quan điểm như sau:
- Đơn giản hóa cơng việc phát triển thơng qua việc sử dụng các POJO
(Plain Old Java Object)
- Nới lỏng ràng buộc giữa các thành phần thông qua việc sử dụng
Dependency Injection.
- Giảm thiểu các mã boilerplate thông qua việc sử dụng template và

aspect ...
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


2

1.2. Một số khái niệm chính
1.2.1. Inversion of Control (IoC)
IoC Container trong spring được xây dựng dựa trên nguyên lý Inversion
of Control (đảo ngược điều khiển) đã xuất hiện khác lâu trong các mẫu hình
thiết kế (design pattern), và được phổ biến rokong rãi nhờ Robert C. Martin
và Martin Fowler. Để hiểu về Spring, trước tiên chúng ta cần hiểu khái niệm
IoC là gì?
Khái niệm Inversion of Control:
Inversion of Control (IoC) là một nguyên lý thiết kế trong công nghệ
phần mềm với các đoạn code khi đưa vào một framework sẽ nhận được luồng
điều khiển từ framework hay nói một cách khác là được framework điều
khiển. Kiến trúc phần mềm với thiết kế này sẽ đảo ngược quyền điều khiển so
với lập trình hướng thủ tục truyền thống. Trong lập trình truyền thống các
đoạn code thêm vào sẽ gọi các thư viện nhưng với IoC, framework sẽ gọi các
mã thêm vào.
Hiểu một cách đơn giản, người lập trình viên tạo ứng dụng sẽ không
phải vừa trực tiếp tạo dựng và kiểm soát luồng thực thi, vừa xây dựng các
chức năng nghiệp vụ. Việc tạo dựng và kiểm soát luồng thực thi được tách ra
khỏi chức năng nghiệp vụ và đẩy ra bên ngồi. Người lập trình viên ủy thác
việc tạo dựng và kiểm soát luồn thực thi ứng dụng cho một thành phần
(thường là thư viện dựng sẵn) bên ngoài đảm nhiệm, chỉ cịn tập trung vào
chức năng chính của ứng dụng.
Như vậy, khái niệm Inversion of Control chính là chuyển nhiệm vụ
kiểm soát và khởi tạo luồng thực thi của ứng dụng cho một thành phần khác

phụ trách, thường là một thư viện phần mềm khung – framework – dựng sẵn
ở bên ngoài.
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


3

Trong Spring framework, Inversion of Control cũng hồn tồn có ý
nghĩa như trên. Các đối tượng chính để xây dựng ứng dụng thì được quản lý
bởi Spring IoC Container. Và IoC container gọi các đối tượng đó là các bean.
1.2.2. Dependency Injection (DI)
Dependency Injection là khả năng liên kết giữa các thành phần lại với
nhau, đó chính là việc các thuộc tính trong một đối tượng được “tiêm chích”
(injection) để tham chiếu lần lượt đến các đối tượng khác. Dependency
Injection trong Spring hoạt động dựa trên Java Reflection.
1.2.3. Spring Context
Spring Context mang mọi thứ lại với nhau. Spring Context kế thừa các
tính năng của Spring Bean và bổ sung các hỗ trợ cho internationalization (ví
dụ như các resource bundle), event propagation, resource loading... Ngoài ra,
Spring Context cũng hỗ trợ các tính năng của Java EE như EJB, JMX và
RMI. Interface ApplicationContext chính là trọng tâm của Spring Context.
1.2.4. Beans
Trong Spring các object được quản lý bởi IoC container và được gọi là
beans. Một bean thì đơn giản là một đối tượng được khởi tạo, phân phát và
được quản lý bởi IoC container. Sự phụ thuộc giữa chúng được phản ánh
trong configuration metadata.
Một Spring container sẽ quản lý một hoặc nhiều bean. Các bean được
tạo ra nhờ vào thông tin cấu hình được chỉ ra trong thẻ <bean></bean> nếu sử
dụng XML config hoặc @Bean nếu sử dụng Annotation config. Bên trong
container các bean được biểu diễn như một đối tượng của lớp BeanDefinition,

nó chứa các thơng tin sau:
- class: Thuộc tính này là bắt buộc và chỉ định lớp được sử dụng để
tạo ra bean (bao gồm cả phẩn package).
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


4

- name: Thuộc tính này chỉ định duy nhất nhận dạnh bean. Trong
XML config, sử dụng thuộc tính id và (hoặc) name để chỉ định bean
duy nhất
- scope: Thuộc tính này xác định phạm vi của các đối tượng được tạo
ra từ một định nghĩa bean cụ thể.
- constructor-arg: Thuộc tính này được sử dụng để bơm các phụ thuộc
(dependency).
- properties: Thuộc tính này được sử dụng để bơm các phụ thuộc
(dependency).
- autowiring: Thuộc tính này được sử dụng để tiêm các phụ thuộc
(dependency).
- lazy-initialization: Thuộc tính này nói cho IoC container biết được
rằng đối tượng này được tạo ra tại thời điểm được request, chứ
không phải lúc khởi động.
- initialization: Phương thúc sẽ được gọi ngay sau khi tất cả các thuộc
tính cần thiết trên bean đã được thiết lập bởi container.
- Destruction: Phương thức được gọi khi container chứa bean bị hủy.
Các cách để cung cấu hình cung cấp bean cho Spring IoC container:
- Tệp cấu hình dựa trên XML.
- Cấu hình dựa trên Annotation.

Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)



5

1.3. Spring Core
Spring Core là thành phần cốt lõi của Spring Framework. Đây chính là
nền tảng để xây dựng nên các thành phần khác trong Spring Framework. Để
tìm hiểu và sử dụng được Spring Framework thì Spring Core là phần tất yếu
cần tìm hiểu và nắm vững trước tiên. [2]
Lược đồ dưới đây mô tả mối quan hệ giữa Spring Core với các thành
phần khác trong Spring Framework:

Hình 1. Các module trong Spring Framework

Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


6

1.4. Spring Boot
Spring boot là một dự án nổi bật trong hệ sinh thái Spring Framework.
Nếu như trước đây, công đoạn khởi tạo một dự án Spring khá vất vả từ việc
khai báo các dependency trong file pom.xml cho đến cấu hình bằng XML
hoặc annotation phức tạp, thì giờ đây với Spring Boot, chúng ta có thể tạo các
ứng dụng Spring một cách nhanh chóng và cấu hình cũng đơn giản hơn. [3]
Dưới đây là một số tính năng nổi bật của Spring Boot:
- Đóng gói ứng dụng Spring dưới dạng một file JAR (stand-alone
application). Chúng ta có thể dễ dàng start ứng dụng Spring chỉ với
câu lệnh quen thuộc java -jar.
- Tối ưu cơng đoạn cấu hình cho ứng dụng Spring, khơng sinh code

cấu hình và khơng u cầu phải cấu hình bằng XML.
- Cung cấp một loạt các tính năng phi chức năng phổ biến cho các dự
án lớn như nhúng trực tiếp web server như Tomcat, Jetty, ... vào ứng
dụng, bảo mật, health check...
Phiên bản của Spring Boot hiện tại thời điểm làm đề tài là 2.2.7.
1.4.1. Khởi tạo ứng dụng Spring Boot
Cách đơn giản nhất để khởi tạo một ứng dụng Spring Boot, đó là chúng
ta sẽ truy cập vào trang web Spring Initializr tại địa chỉ />- Chọn build tool: Maven hay Gradle
- Chọn ngôn ngữ lập trình: Java, Kotlin hay Groovy
- Chọn version của Spring Boot Nhập tên của Group và Artifact
- Lựa chọn các dependency cần cho ứng dụng (ví dụ như Web,
Security, JPA, Actuator, Devtools, ...)
Cuối cùng click button Generate Project để download project xuống.
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


7

Hình 2. Khởi tạo ứng dụng Spring Boot

Ngồi ra, chúng ta cũng có thể dùng các tool khác để khởi tạo ứng dụng
Spring Boot như Spring Tool Suite chẳng hạn.
1.4.2. Cấu trúc thư mục
Dưới đây là hình ảnh cấy thư mục của ứng dụng:

Hình 3. Cấu trúc thư mục ứng dụng Spring Boot
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


8


1.4.3. Build ứng dụng
Trong thư mục của source code, chúng ta chạy lệnh sau để build ứng
dụng:
$ mvn clean install
Sau khi build thành công, chúng ta thử vào thư mục target của source
code, sẽ thấy file *-SNAPSHOT.jar được sinh ra.
1.4.4. Chạy ứng dụng
Trong thư mục target, chạy file *-SNAPSHOT.jar bằng lệnh:
$ java -jar *-SNAPSHOT.jar
Kết quả ví dụ nếu chạy thành cơng:

Hình 4. Chạy thành cơng ứng dụng Spring Boot

1.5. Spring Security
Spring Security là một module nổi bật trong Spring Framework. Spring
Security cung cấp các dịch vụ bảo mật toàn diện cho các ứng dụng enterprise
có nền tảng Java EE, module này cố gắng để cung cấp cho chúng ta một hệ
thống bảo mật hữu ích và dễ dàng để cấu hình cho các dự án được phát triển
dựa trên Spring Framework. [4]
Spring Security cung cấp 2 cơ chế cơ bản:
- Authentication (xác thực): là tiến trình thiết lập một principal.
Principal có thể hiểu là một người, hoặc một thiết bị, hoặc một hệ
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


9

thống nào đó có thể thực hiện một hành động trong ứng dụng của
bạn.

- Authorization (phân quyền) hay Access-control: là tiến trình quyết
định xem một principal có được phép thực hiện những hành động
nào trong ứng dụng. Trước khi diễn tiến tới Authorization, principal
cần phải được thiết lập bởi Authentication (xác thực).
1.6. Spring JDBC
Spring Data JDBC là một thành viên mới của gia đình Spring Data. Nó
được tạo ra để lấp đầy khoảng trống nằm giữa Spring JDBC và Spring Data
JPA. Nếu nhìn vào Spring JDBC, có thể lập luận rằng nó ở mức q thấp để
hoạt động vì nó chỉ giúp kết nối với cơ sở dữ liệu. Spring Data JPA có vẻ q
phức tạp vì nó cung cấp rất nhiều tùy chọn và có thể khó nắm vững tất cả các
tùy chọn này.
Spring Data JDBC là một khung cơng tác cố gắng cung cấp sức mạnh
tương tự có được từ việc sử dụng Spring Data JPA nhưng làm cho nó dễ hiểu
hơn bằng cách sử dụng các nguyên tắc DDD (Domain Driven Design). Nó
cũng cung cấp nhiều quyền kiểm soát hơn bằng cách làm việc ở mức thấp hơn
và bằng cách cho phép bạn quyết định khi nào các tương tác cơ sở dữ liệu cần
được thực hiện như Spring JDBC, nhưng theo cách dễ dàng hơn. [5]
2. Hệ quản trị cơ sở dữ liệu MySQL
2.1. Tổng quan về MySQL
MySQL là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến và được các
nhà phát triển rất ưu chuộng trong quá trình phát triển ứng dụng. MySQL sử
dụng Ngơn ngữ truy vấn có cấu trúc (SQL), được phát triển, phân phối và hỗ
trợ bởi Oracle Corporation. Phần mềm được đặt tên theo tên của con gái
người đồng sáng lập Monty Widenius: My.
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


10

MySQL có thể được cài đặt trên nhiều nền tảng hệ điều hành khác nhau

như Windows, Linux và Mac OS X. Ngồi MySQL ra, cịn một số DBMS
khác như Oracle, PostgreSQL, SQLite, … [6]
Ưu điểm và lợi ích mà MySQL mang lại:
- Khả năng mở rộng và tính linh hoạt
Máy chủ cơ sở dữ liệu MySQL đáp ứng nhiều tính năng linh
hoạt, nó có sức chứa để xử lý các ứng dụng được nhúng sâu với
1MB dung lượng để chạy kho dữ liệu khổng lồ lên đến hàng
terabytes thông tin. Đặc tính đáng chú ý của MySQL là sự linh hoạt
về flatform với tất cả các phiên bản của Windows, Unix và Linux
đang được hỗ trợ. Và đương nhiên, tính chất mã nguồn mở của
MySQL cho phép tùy biến theo ý muốn để thêm các yêu cầu phù
hợp cho database server.
- Hiệu năng cao
Dù ứng dụng là website dung lượng lớn phục vụ hàng triệu
người/ngày hay hệ thống xử lý giao dịch tốc độ cao thì MySQL đều
đáp ứng được khả năng xử lý khắt khe của mọi hệ thống. Với những
tiện ích tải tốc độ cao, cơ chế xử lý nâng cao khác và đặc biệt bộ
nhớ caches, MySQL đưa ra tất cả nhưng tính năng cần có cho hệ
thống doanh nghiệp khó tính hiện nay.
- Quản lý dễ dàng
Cài đặt MySQL khá nhanh và trung binh từ khi download phần
mềm tới khi cài đặt thành công chỉ mất chưa đầy 15 phút. Cho dù
flatform là Linux, Microsoft Windows, Macintosh hoặc Unix thì q
trình cũng diễn ra nhanh chóng. Khi đã cài đặt, tính năng quản lý
như tự khởi động lại, tự động mở rộng không gian và cấu hình động
sẵn sàng cho người quản trị cơ sở dữ liệu bắt đầu làm việc. MySQL
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


11


cung cấp tồn bộ cơng cụ quản lý đồ họa cho phép một DBA quản
lý, sửa chữa và điều khiển hoạt động của nhiều server MySQL từ
một máy trạm đơn.
- Chi phí sở hữu thấp nhất
Sử dụng MySQL cho các dự án, doanh nghiệp đều nhận thấy sự
tiết kiệm chi phí đáng kể. Người dùng MySQL cũng khơng mất
nhiều thời gian để sữa chữa hoặc vấn đề thời gian chết.
Nhược điểm và hạn chế của MySQL:
- MySQL có thể bị khai thác để chiếm quyền điều khiển.
- MySQL không được tích hợp để sử dụng cho các hệ thống lớn cần
quản lý lượng dữ liệu khổng lồ. Ví dụ: hệ thống siêu thị trên tồn
quốc, ngân hàng, quản lý thơng tin dân số cả nước, …
2.2. Một số khái niệm
- Cơ sở dữ liệu (Database): là tên của cơ sở dữ liệu chúng ta muốn sử
dụng.
- Bảng (Table): là nơi chứa thông tin. Một bảng bao gồm tên table,
danh sách cột (column), khóa chính, khóa ngoại. Một bảng thuộc về
một cơ sở dữ liệu, một cơ sở dữ liệu có thể có nhiều bảng.
- Khóa chính (Primary Key): là một hoặc tổ hợp nhiều cột trong bảng,
xác định giá trị duy nhất trong một bảng, giá trị khóa chính ln
khác rỗng (NULL) và là duy nhất (UNIQUE).
- Khóa ngoại (Foreign Key): là một trường hay một nhóm trường
trong một bản ghi (record) của một bảng (table), trỏ (point) đến
khóa chính của một bảng (thường là hai bảng khác nhau).
- Cột (column): là một giá trị nằm trong bảng, dùng để lưa trữ các bản
ghi.
Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)



12

- Bản ghi (Record): mỗi hàng trong bảng là một bản ghi, là dữ liệu
được lưu trữ.
- NULL: Giá trị cho phép rỗng.
- AUTO_INCREMENT: Cho phép giá trị tăng dần (tự động).
- UNSINED: Nhận giá trị phải là số nguyên dương.
- Kiểu dữ liệu (Data type): Kiểu dữ liệu chỉ định một loại dữ liệu cụ
thể, chẳng hạn như integer, floating-point, Boolean etc. Một loại dữ
liệu cũng chỉ định các giá trị có thể cho loại đó, các hoạt động có thể
được thực hiện trên loại đó và cách các giá trị của loại đó được lưu
trữ.
Các kiểu dữ liệu cơ bản trong MySQL:
Kiểu dữ liệu
CHAR

Mô tả
Giữ tối đa 255 ký tự và cho phép một chuỗi có độ dài
cố định.

VARCHAR

Giữ tối đa 255 ký tự và cho phép một chuỗi có độ dài
thay đổi. Nếu bạn lưu trữ các ký tự lớn hơn 55, thì kiểu
dữ liệu sẽ được chuyển đổi thành kiểu văn bản.

INT

Cho phép các số nguyên đã ký từ -2147483638 đến
214747483637 và 0 đến 4294967925 số ngun khơng

dấu. Kích thước 4 byte.

FLOAT

Cho phép số nhỏ với dấu thập phân nổi. Tham số kích
thước được sử dụng để chỉ định số chữ số tối đa và
tham số được sử dụng để chỉ định số chữ số tối đa ở
bên phải của số thập phân. Kích thước 4 byte.

DOUBLE

Cho phép số lớn với dấu thập phân nổi. Tham số kích
thước được sử dụng để chỉ định số chữ số tối đa và

Nguyễn Thanh Phúc – Lớp 16CNTT3 (2016-2020)


×