TỔNG QUAN VỀ DOANH NGHIỆP THỰC TẬP
Lĩnh vực kinh doanh
- Cung cấp các giải pháp, dịch vụ viễn thông.
- Đào tạo sinh viên và nhân viên về kiến thức phần mềm và kỹ năng mềm.
1.3 Giới thiệu tổng quan về ngành developer hiện nay
"Developer" là một từ tiếng Anh, còn được gọi là "software developer" hoặc "software engineer", thường được dùng để chỉ người chuyên viết và phát triển phần mềm, ứng dụng, hoặc các hệ thống máy tính Những người làm công việc này thường tạo ra, cải tiến và duy trì các ứng dụng và phần mềm để đáp ứng các nhu cầu của người dùng hoặc doanh nghiệp.
- Developer làm những công việc gì
Các developer có thể làm việc với nhiều ngôn ngữ lập trình khác nhau, các nền tảng, và công nghệ để xây dựng ứng dụng phần mềm hoặc các giải pháp phức tạp Công việc của họ có thể bao gồm việc thiết kế, lập trình, thử nghiệm, gỡ lỗi và tối ưu hóa các ứng dụng.
Có nhiều vai trò khác nhau trong lĩnh vực phát triển phần mềm, bao gồm nhưng không giới hạn trong các loại như:
Front-end developer: Chuyên viết mã để tạo giao diện người dùng của ứng dụng, thường sử dụng HTML, CSS và JavaScript.
Back-end developer: Tập trung vào việc xây dựng phần của hệ thống hoạt động phía sau, quản lý dữ liệu và các tác vụ xử lý logic.
Full-stack developer: Có kiến thức và kỹ năng để làm cả hai công việc front-end và back-end. x
Mobile app developer: Tập trung vào việc phát triển ứng dụng di động cho hệ điều hành di động như Android hoặc iOS.
DevOps engineer: Tập trung vào việc tích hợp các quy trình và công cụ giữa phát triển phần mềm và vận hành hệ thống.
- Xu hướng ngành nghề Developer trong tương lai
Trong tương lai, ngành developer dự kiến sẽ tiếp tục trở nên phức tạp và đa dạng hơn Các công nghệ mới, như blockchain và tiền điện tử, sẽ mở ra cơ hội mới cho các ứng dụng và giải pháp Trí tuệ nhân tạo và tự động hóa dự kiến sẽ ngày càng tăng cường để cải thiện hiệu suất và tính năng của các ứng dụng.Nhu cầu về developer cũng dự kiến sẽ tiếp tục tăng cao Việc học tập và nắm bắt các công nghệ mới sẽ giúp các developer duy trì và phát triển sự nghiệp trong lĩnh vực này Tóm lại, ngành phát triển phần mềm hiện nay đang tiếp tục phát triển mạnh mẽ và trong tương lai, nó sẽ tiếp tục phát triển đa dạng và đòi hỏi các developer cần cập nhật kiến thức và kỹ năng để đáp ứng các thách thức mới. xi
Giới thiệu tổng quan về ngành developer hiện nay
Ngôn ngữ lập trình Java
Hình 2 Ngôn ngữ lập trình Java Ngôn ngữ lập trình Java là một ngôn ngữ lập trình hướng đối tượng
Là một ngôn ngữ lập trình mạnh mẽ, di động và đa nền tảng, có tính bảo mật cao và hỗ trợ đa luồng, giúp developer xây dựng các ứng dụng đáng tin cậy và hiệu quả trên nhiều môi trường khác nhau.
2.2 Lập trình hướng đối tượng với Java
2.2.1 Giới thiệu về Java OOP
Lập trình hướng đối tượng (OOP-Object-Oriented Programming) là một phương pháp hay mô hình giúp tăng năng suất, đơn giản hóa việc bảo trì dễ dàng mở rộng trong thiết kế phần mềm
2.2.2 Các khái niệm cơ bản của 4 đặc tính trong java OOP
Là một khái niệm được hiểu những thuộc tính của một lớp có thể được kế thừa bởi một lớp khác Nó giúp chúng ta có thể sử dụng lại code và thiết lập một mối quan hệ giữa các class khác nhau Một lớp kế thừa những thuộc tính được biết đến là một Sub class trong khi một lớp có các thuộc tính được kế thừa được gọi là Parent class. xii
LÝ THUYẾT
Lập trình hướng đối tượng với Java
Ngôn ngữ lập trình Java
Hình 2 Ngôn ngữ lập trình Java Ngôn ngữ lập trình Java là một ngôn ngữ lập trình hướng đối tượng
Là một ngôn ngữ lập trình mạnh mẽ, di động và đa nền tảng, có tính bảo mật cao và hỗ trợ đa luồng, giúp developer xây dựng các ứng dụng đáng tin cậy và hiệu quả trên nhiều môi trường khác nhau.
2.2 Lập trình hướng đối tượng với Java
2.2.1 Giới thiệu về Java OOP
Lập trình hướng đối tượng (OOP-Object-Oriented Programming) là một phương pháp hay mô hình giúp tăng năng suất, đơn giản hóa việc bảo trì dễ dàng mở rộng trong thiết kế phần mềm
2.2.2 Các khái niệm cơ bản của 4 đặc tính trong java OOP
Là một khái niệm được hiểu những thuộc tính của một lớp có thể được kế thừa bởi một lớp khác Nó giúp chúng ta có thể sử dụng lại code và thiết lập một mối quan hệ giữa các class khác nhau Một lớp kế thừa những thuộc tính được biết đến là một Sub class trong khi một lớp có các thuộc tính được kế thừa được gọi là Parent class. xii
-Tính đóng gói trong java là kỹ thuật ẩn giấu thông tin và hiển thị ra những thông tin liên quan Mục đích chính của đóng gói trong java là giảm thiểu mức độ phức tạp trong việc phát triển và bảo trì phần mềm.
-Đóng gói cũng được sử dụng để bảo vệ trạng thái bên trong của một đối tượng Thông qua các phương thức setter, getter ta có thể thay đổi các giá trị thuộc tính và lấy giá trị từ chúng Điều này làm cho chương trình dễ quản lý hơn và có thể kiểm soát dữ liệu tốt hơn -Phạm vi truy cập của một lớp gồm có 4 loại:
+Default (mặc định): Nếu như bạn không khai báo phạm vi truy cập thì Java sẽ hiểu mặc định phạm vi truy cập là default Với default thì trong lớp (class) đó và trong gói (package) đó mới có thể tác động tới được.
+ Private (riêng tư): Nếu như bạn khai báo phạm vi truy cập là private thì chỉ duy nhất trong lớp (class) đó mới có thể tác động tới được.
+Public (công khai): Nếu như bạn khai báo phạm vi truy cập là public thì mọi thứ từ lớp
(class), gói (package), lớp con (subclass) đều có thể tác động tới được.
+Protected (được bảo vệ): Nếu như bạn khai báo phạm vi truy cập là protected thì lớp
(class) đó, gói (package) đó, lớp con (subclass) đó đều có thể tác động tới được nhưng khác gói (package) thì không thể Tuy nhiên nếu dùng kế thừa thì khác gói (pakage) vẫn có thể tác động tới được còn default thì không.
+Lớp trừu tượng trong java chứa từ khóa “ abstract”
+ Nếu một lớp được định nghĩa là trừu tượng nó không thể được khởi tạo bằng toán từ
“new“, có nghĩa là bạn không thể tạo instance từ một lớp trừu tượng Ngoài ra, một lớp trừu tượng có thể chứa phương thức trừu tượng hoặc các phương thức bình thường.
+Để sử dụng lớp trừu tượng, bắt buộc nó phải được một lớp khác kế thừa và override toàn toàn bộ abstract method.
+Một Interface trong Java là một tập hợp các phương thức trừu tượng (abstract) Một class triển khai một interface, do đó kế thừa các phương thức abstract của interface. xiii
+Một interface không phải là một lớp Viết một interface giống như viết một lớp, nhưng chúng có 2 định nghĩa khác nhau Một lớp mô tả các thuộc tính và hành vi của một đối tượng Một interface chứa các hành vi mà một class triển khai.
- chỉ sự đa hình thái, chẳng hạn cùng có một phương thức giống nhau nhưng tùy vào tham số truyền vào hay sự cài đặt của lớp con mà nó thực hiện các công việc khác nhau Tính đa hình liên quan tới 2 khái niệm là overriding (ghi đè) và overloading (nạp chồng) + overriding (ghi đè) là đi viết lại, định nghĩa lại phương thức mà nó kế thừa từ lớp cha.
+ overloading (nạp chồng) sử dụng các phương thức có cùng tên nhưng tham số đầu vào lại khác nhau.
Spring Boot Framework
Spring Boot là một phần mở rộng của Spring Framework, được phát triển để đơn giản hóa và tăng tốc quá trình xây dựng các ứng dụng Java độc lập và sẵn sàng triển khai Nó được tạo ra bởi công ty Pivotal (trước đây là một phần của VMware) và được phát hành lần đầu vào năm 2014 Spring Boot tập trung vào việc cung cấp các cấu hình mặc định thông minh và tự động hóa nhiều công việc cần thiết để bắt đầu phát triển ứng dụng một cách nhanh chóng và dễ dàng Một số tính năng và ưu điểm mà framework này mang lại: + Tính năng:
Tự cấu hình thông minh (Auto-configuration): Spring Boot tự động cấu hình các thành phần trong ứng dụng, giảm thiểu công việc cài đặt và cấu hình thủ công.
Embedded Server: Tích hợp máy chủ nhúng như Tomcat hoặc Jetty, giúp bạn chạy ứng dụng một cách đơn giản và không cần cài đặt máy chủ bên ngoài.
Spring Boot Starter: Các Starter POMs giúp tập trung vào việc phát triển mà không cần lo lắng về việc cài đặt các thư viện phụ thuộc.
Hỗ trợ truy cập dữ liệu: Tích hợp dễ dàng với Spring Data, giúp truy cập cơ sở dữ liệu dễ dàng và mạnh mẽ.
Spring Data JPA
Spring Data JPA là một phần của Spring Framework được thiết kế để giúp đơn giản hóa việc truy vấn và tương tác với cơ sở dữ liệu trong các ứng dụng Java JPA viết tắt của xiv
"Java Persistence API" là một tiêu chuẩn trong Java EE (Java Enterprise Edition) cho việc quản lý đối tượng và lưu trữ dữ liệu vào cơ sở dữ liệu.
Spring Data JPA cung cấp một lớp trừu tượng hóa và một tập hợp các tính năng để làm cho việc làm việc với JPA dễ dàng hơn và hiệu quả hơn trong các ứng dụng sử dụng Spring Nó giúp giảm thiểu lượng mã phải viết để thực hiện các thao tác cơ sở dữ liệu thông qua JPA
Các tính năng cơ bản của Spring data JPA:
- Hỗ trợ xây dựng reprositories dựa trên Spring và JPA
- Hỗ trợ phân trang, thực hiện query động.
Một số khái niệm và annotation quan trọng trong Spring Data JPA:
- Entity: Một entity đại diện cho một bảng trong cơ sở dữ liệu Nó được đánh dấu bằng annotation @Entity Các trường của entity tương ứng với các cột trong bảng.
- Repository: Repository là một interface được đánh dấu bằng annotation @Repository và mở rộng từ JpaRepository hoặc các interface tương tự từ Spring Data JPA Nó cung cấp các phương thức tiêu chuẩn để thực hiện các thao tác CRUD (Create, Read, Update, Delete) với cơ sở dữ liệu.
- JpaRepository: Đây là một interface trong Spring Data JPA, mở rộng từ CrudRepository Nó cung cấp các phương thức tiêu chuẩn để thao tác với cơ sở dữ liệu, bao gồm tìm kiếm, lưu, xóa và cập nhật.
@Table: Xác định tên của bảng trong cơ sở dữ liệu mà lớp thực thể tương ứng.
@Id: Đánh dấu một trường là khóa chính của entity.
@GeneratedValue: Xác định cách sinh giá trị cho một trường khóa chính, ví dụ như tự động tăng (GenerationType.AUTO) hoặc dựa trên chuỗi UUID (GenerationType.UUID).
@Column: Xác định thuộc tính của một trường tương ứng với một cột trong cơ sở dữ liệu Bạn có thể xác định tên cột, độ dài, ràng buộc và các thuộc tính khác.
@ManyToOne, @OneToMany, @OneToOne, @ManyToMany: Các annotation này xác định các mối quan hệ giữa các entity Chúng xác định quan hệ một-nhiều, một-một và nhiều-nhiều giữa các entity. xv
@JoinColumn: Xác định cột liên kết giữa các entity khi sử dụng quan hệ.
@Query: Xác định một truy vấn tùy chỉnh để truy xuất dữ liệu từ cơ sở dữ liệu Bạn có thể viết truy vấn SQL hoặc truy vấn JPQL (Java Persistence Query Language).
Spring Security
Spring Security là một module của Spring Framework được sử dụng để quản lý và bảo mật phần xác thực và ủy quyền trong ứng dụng web Java Nó giúp đơn giản hóa việc thực hiện các chức năng bảo mật như xác thực người dùng, phân quyền truy cập và quản lý phiên làm việc.
Các tính năng chính của Spring Security bao gồm:
Authentication (Xác thực): Spring Security cung cấp khả năng xác thực người dùng bằng nhiều phương thức như xác thực thông qua form đăng nhập, xác thực dựa trên token, xác thực bằng LDAP, OpenID, và nhiều phương thức khác.
Authorization (Ủy quyền): Spring Security cho phép bạn quản lý quyền truy cập của người dùng vào các tài nguyên, chức năng của ứng dụng Bạn có thể xác định rõ ràng ai được phép thực hiện những hoạt động nào.
Session Management (Quản lý phiên làm việc): Spring Security giúp bạn quản lý việc quản lý phiên làm việc và hạn chế số lượng phiên làm việc một cách an toàn.
TRIỂN KHAI XÂY DỰNG
Tích hợp với Front-End
1 Mục tiêu của đề tài
- Đề tài này nghiên cứu việc sử dụng ngôn ngữ Java để tạo nên các API cho việc đăng ký, đăng nhập, xác thực, phân quyền người dùng, thêm mới, sửa, xoá các thực thể liên quan đối với website bán hàng trang sức D-luxury.
2 Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Người có nhu cầu mua hàng trang sức trực tuyến
- Phạm vi nghiên cứu: Ngôn ngữ Java
3 Kết cấu của đề tài Đề tài được tổ chức gồm phần mở đầu, 4 chương nội dung và phần kết luận
- Chương 1: TỔNG QUAN VỀ DOANH NGHIỆP TMA BÌNH ĐỊNH
- Chương 2: CƠ SỞ LÝ THUYẾT VỀ JAVA
- Chương 3: TRIỂN KHAI XÂY DỰNG WEBSITE D-LUXURY
KẾT QUẢ
Kết quả đạt được
Xây dựng thành công trang web có các chức năng đăng ký, đăng nhập, hiển thị sản phẩm, danh mục sản phẩm, lọc sản phẩm có điều kiện.
Tạo được các API để thêm sửa xoá với sản phẩm, danh mục, tạo và xem hoá đơn.
Vì thời gian của kỳ thực tập chỉ bao gồm 10 tuần, và lần thực tập này em được học qua ngôn ngữ Java, ngôn ngữ mà em chưa từng tiếp xúc trước đây nên chưa thể làm được các chức năng mà các trang web hiện nay phải có như phân quyền, thanh toán, phân trang, sắp xếp sản phẩm theo các điều kiện để hiển thị cho người dùng xem. liii
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
- Xây dựng được một trang web bán hàng có thể đăng ký, đăng nhập tài khoản, quản lý tài khoản, xem được thông tin về các sản phẩm trang sức và danh mục các loại sản phẩm.
- Nắm được kiến thức cơ bản về ngôn ngữ lập trình Java, Spring Boot, Spring security, … để áp dụng những kiến thức đó vào việc xây dựng các chức năng đã đặt ra trong đề tài này.
- Cải thiện kỹ năng giao tiếp, làm việc nhóm, nâng cao hiểu biết của bản thân trong môi trường làm việc chuyên nghiệp của doanh nghiệp.
- Nâng cao kỹ năng viết email, CV, kỹ năng thuyết trình, làm việc trong môi trường doanh nghiệp,…
- Trong tương lai em sẽ hoàn thiện toàn bộ chức năng của một trang web bán hàng phải có bao gồm thanh toán, phân trang, sắp xếp hiển thị thông tin các sản phẩm một cách thông minh giúp người dùng có trải nghiệm sử dụng thuận tiện, dễ dàng hơn.
- Để làm được những điều này đòi hỏi em phải nắm vững kiến thức về backend mà cụ thể là framework Spring của Java Vì thời gian thực tập không cho phép do đó bản thân em chưa nắm vững được sâu hơn các kỹ thuật trong lập trình web với Spring Kĩ năng, kiến thức liên quan trực tiếp tới phát triển trang web của bản thân em chỉ mới dừng lại ở những kiến thức căn bản, do đó em sẽ cố gắng phát triển nhiều hơn trong tương lai Thời gian tới em rất mong muốn được học hỏi và tìm hiểu thêm về Java web cũng như framework Spring sâu hơn Một lần nữa em xin chân thành cảm ơn doanh nghiệp và nhà trường cũng như khoa Thống Kê – Tin Học đã tạo điều kiện cho em được tiếp thu những kiến thức cơ sở này để từng bước hoàn thiện, trau dồi kỹ năng của bản thân trong con đường sự nghiệp trở thành một Back-End Developer. liv
Hạn chế
1 Spring Framework https://loda.me/courses/spring-boot
2 Java Basic, OOP https://howkteam.vn/course/lap-trinh-java-co-ban-den-huong-doi-tuong/lich-su-phat- trien-va-tinh-nang-cua-java-124
3 JsonWebToken https://gpcoder.com/5827-gioi-thieu-json-web-token-jwt/
4 Annotaion @Query https://stackjava.com/spring/huong-dan-annotation-query-nativequery-trong-spring- data.html lv