Spring boot 3 tutorial for beginners: connect to database with Spring JPA and create CRUD API
Ғылым және технология
Spring boot 3 tutorial for beginners:
Connect database with Spring JPA and create CRUD API
Link Github to download source code:
github.com/devteria/identity-...
Branch: course/create-crud-api
Support me:
www.buymeacoffee.com/devteria
#Java #Springboot3 #jpa #crud
Пікірлер: 74
Cảm ơn anh bài giảng rất chi tiết 🌹
Rất hay, nếu anh có ra khóa nâng cao dự án thực tế em cũng sẽ mua ủng hộ, nhất là phần Microservice
Rất dễ hiểu
theo quan điểm cá nhân của mình thì nên biết JDBC và SQL trước khi vào học JPA vì sau này đường nào cũng phải đụng SQL khi gặp các truy vấn phức tạp
Tuyệt vời quá anh ơi em đã khóc khi anh ra list này mãi yêu anh
@devteriadotcom
3 ай бұрын
Anh đã gớt nước mắt khi thấy comment này :))
@thaitrongtin3737
Ай бұрын
@@devteriadotcom em đã khóc khi tìm thấy 2 comment nàyyyyy
Mong anh ra một video giải thích về cấu trúc của một dự án spring boot trong thực tế ạ
@devteriadotcom
Ай бұрын
Kiến trúc trong video là đã follow the best practice em có thể áp dụng vào project thực tế. Anyway anh sẽ làm một video về cấu trúc một project spring boot, thanks em.
Nice
cảm ơn Pro
@dianadev1702
Ай бұрын
có phải Long - Nam Định không?
Hi anh, lại là em đây, cũng như lần trước video của anh rất dễ hiểu và rõ ràng, anh cứ làm tiếp như z thì tuyệt lắm, nhưng mà còn vài chỗ anh có thể giải thích thêm Bean là gì và khi nào dùng anotaion @Bean khi nào dùng @Autowired cũng như giải thích sơ về các loại anotation được không anh, cảm ơn vì list video vô cùng bổ ích ạ >:
@devteriadotcom
3 ай бұрын
Hi em, hôm nào anh sẽ làm một video khác nói rõ về các annotation này, stay tuned.
@tmyker
3 ай бұрын
@@devteriadotcom cảm ơn anh 🙆
cảm ơn anh, series rất hay , giải thích dễ hiểu. Anh có thể làm thêm một vài video về truy vấn phức tạp sử dụng QueryDSL, và Concurrency Control trong spring boot ko ạ
@devteriadotcom
Ай бұрын
Anh sẽ làm series chuyên sâu về JPA, nhưng giờ thì đang tập trung vào series microservices trước em nhé.
anh ơi khi hàm save bên repo trả về 1 object User thì sang service mình có phải convert nó sang 1 object UserResponse không ạ ?
@devteriadotcom
Ай бұрын
Service trả về dto chứ không phải entity do đó best practice là em phải convert từ entity sang dto để trả về. Giữ theo rule thì sau này em sẽ thấy easy hơn rất nhiều còn không sau này càng lúc sẽ càng rối.
A ơi trong vòng 3 tháng học full time 8h/d thì có khả năng học xong được java web k a. E được chọn vào chương trình đào tạo để qua Hàn làm. E có base là android nhưng đổi qua web k biết như thế nào, a tư vấn giúp e với. Thanks a
@devteriadotcom
18 күн бұрын
Chúc mừng em đã có cơ hội tốt như vậy. Nếu em đã có nền tảng Android thì khi học BE em sẽ có cái nhìn toàn cảnh hơn trong việc xây dựng APi như thế nào để phục vụ tốt nhất cho FrontEnd. 3 tháng full time như vậy anh thấy cũng đủ để em năm bắt từ cơ bản đến nâng cao về Spring framework rồi đấy, nếu chương trình đạo tạo của em bám sát thực tế thì càng tốt hơn.
Anh ơi ở tầng controller mặc dù mình trả vê mã code do mình quy định r em có nên bộc thêm Responentity vào responedata của minhg để trả về http code kh ạ
@devteriadotcom
2 ай бұрын
Nếu em cảm thấy cần thiết thì có thể bọc thêm ResponseEntity, ví dụ như em cần trả về 201, 204 ...
Em chưa hiểu lắm về nhiệm vụ của package dto ạ..tại bình thường em code không sử dụng đến dạng này .Mong anh giải thích ạ
@devteriadotcom
6 сағат бұрын
Package dto để chứa các object chỉ đơn thuần chứa dữ liệu mà không có nhiều behavior. Ví dụ như data trả về của api ...
Anh ơi. Em mới học java chưa học gì về spring boot. Thì học spring boot từ video anh luôn được ko ạ
@devteriadotcom
2 ай бұрын
Được nha em, series này như tiêu đề là dành cho người mới, nên em hoàn toàn có thể theo học.
@Bean dùng để làm gì vậy anh. Em đọc tài liệu vẫn chưa hiểu lắm ạ
@devteriadotcom
Ай бұрын
Em đọc topic này đi, anh thấy khá rõ ràng: www.baeldung.com/spring-bean
anh cho e hỏi, trong Interface UserRepository, extends JpaRepository, thì tại sao lại String vậy ạ?
@devteriadotcom
2 ай бұрын
String là kiểu dữ liệu của khoá chính bảng User nha em.
Anh cho em hỏi, em bị hỏi 1 câu là trên interface thì việc đánh annotation là không cần thiết. Vậy cái repository đánh dấu @Repository để làm gì không ạ?
@devteriadotcom
Ай бұрын
@Repository sẽ giúp framework đối xử với nó như một bean đồng thời nó cũng có một số xử lý đặc biệt với các custom methods và query bằng AOP.
@hackmehust
Ай бұрын
@@devteriadotcom e thử nếu không đánh dấu @Repository thì vẫn có thể Autowired được trong Service. Cái bean ở đây nghĩa là gì vậy ạ. Không hiểu sao tự nhiên nay đi hỏi bị vặn ghê quá a ạ.
@devteriadotcom
Ай бұрын
Yeah, A mới check lại doc của Spring, thực chất Spring sẽ tự scan những interface nào có extends JPA. Vì vậy việc annotate nó với @Repository là không bắt buộc. Tuy nhiên việc annotate với @Repository chủ yếu là để developer xác định rõ mục đích của interface là gì và đây là một pratice mà Spring recommend nên follow.
@hackmehust
Ай бұрын
@@devteriadotcom Dạ vâng em cảm ơn anh. Không hiểu mấy anh Dev Lead hỏi câu này mục đích gì. Chắc có thể để xem có hiểu thực sự vấn đề không. Cơ mà em thấy kiểu đặt câu hỏi này dìm ứng viên hay sao ý. ~~
5:00 của em bị "the file in editor is not runnable" anh ơi. Em dùng bản Community
@devteriadotcom
2 күн бұрын
Em chụp hình lỗi post lên group facebook devteria nhé
đoạn 26:23 anh làm cách nào mà tạo ra jpa: hibernate đl-auto .... nhanh vậy ạ
@devteriadotcom
3 ай бұрын
À đoạn đó a copy sẵn để paste cho nhanh thôi em chứ kg có phím tắt gì đâu :))
@ahnlinh2197
Ай бұрын
cùng thắc mắc luôn, lần đầu thì có thể là paste, chứ anh làm đến lần thứ hai nên tưởng phím tắt =))
bao giờ có vid mới vậy ạ
@devteriadotcom
3 ай бұрын
Mình ra phần tiếp theo rồi nè bạn: Khóa học Java spring boot 3: Quản lý Exception tập trung và Validation kzread.info/dash/bejne/loJoq8iuXZe2cdY.html
Dạ anh ơi em bị lỗi này khi start App lên ạ, với khi em đổi đuôi thành yaml thì biểu tượng nó không đổi thành chữ Y như trong video ạ! 'Unable to determine Dialect without JDBC metadata'
@devteriadotcom
Ай бұрын
Những lỗi này em có thể chụp hình post lên group thì dễ hơn em.
@LocNguyen-tu9id
Ай бұрын
@@devteriadotcom Dạ vâng anh!
@HoangTran-ur8rn
9 күн бұрын
bạn fix được lỗi chưa
Anh ghi số thứ tự cho video được không ạ, em nhìn khó tìm quá
@devteriadotcom
10 күн бұрын
Ý em là ghi ở hình thumbnail hả? Anh có để trong playlist, em có thể theo thứ tự trong playlist cũng được.
anh có thể cho chữ to hơn để bọn e dễ nhìn hơn ko ạ
@devteriadotcom
3 ай бұрын
Thanks em, các video sau anh sẽ zoom màn hình lớn hơn để dễ nhìn.
A ơi sao lúc phút 27p chạy postman e bị lỗi 415 mặc dù e làm giống theo a
@devteriadotcom
2 ай бұрын
Em check lại chỗ method là POST hay GET nhé.
anh ơi bảng trong database em đặt là users thì phải sửa gì k ạ em dùng post man kiểm tra mà cứ lỗi 404
@devteriadotcom
2 ай бұрын
Em sửa trực tiếp trong db hả? Nếu vậy em cần update lại entity User, set table name cho nó lad users
@hoanganh23611
2 ай бұрын
@@devteriadotcom chỉ cần set table name trong lớp entity user hả anh
@devteriadotcom
2 ай бұрын
Đúng rồi em. Nhưng tại sao em lại đặt tên là users? Tên table đặt số theo số ít là convention tốt.
@hoanganh23611
2 ай бұрын
@@devteriadotcom em tạo bảng bằng lệnh để name table là user thì nó báo lỗi à nnên em đổi thành users
cái chức năng xóa em code trên eclispe sao lại lỗi 500 nhỉ a
@devteriadotcom
Ай бұрын
Em chụp hình gửi lên group facebook mọi người xem thử.
a ơi sao khi e chạy trong postman thì bị lỗi 401 vậy ạ
@devteriadotcom
27 күн бұрын
Em checkout về branch anh để dưới description của video nhé.
a ơi, e chạy sau khi coi video tới phút thứ 25 thì nó bị lỗi này ạ: Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2024-05-10T02:40:43.896+07:00 ERROR 7520 --- [ main] o.s.boot.SpringApplication : Application run failed
@devteriadotcom
Ай бұрын
Em chụp tới đoạn cause by anh em thử lỗi gì.
@thile6968
Ай бұрын
@@devteriadotcom dạ e fix đc rồi ạ
sao em không tạo được file yami nhỉ
@devteriadotcom
28 күн бұрын
yaml nha em (L chứ kg phải i)
a ơi em chạy postman ra lỗi 405 là sao vậy anh
@devteriadotcom
Ай бұрын
Em kiểm tra lại method với endpoint đã đúng chưa nhé. Với em nhớ checkout đúng branch anh để dưới description của video.
a ơi, ở phần update em chạy thì báo lỗi thế này là sao vậy ạ, em có gg mà ko biết sửa sao ạ { "timestamp": "2024-05-01T14:07:29.791+00:00", "status": 400, "error": "Bad Request", "path": "/identity/users/updateUser/c81f1ce5-4507-441f-ab45-bd520ef71017" }
@devteriadotcom
Ай бұрын
Em chụp chi tiết lỗi trong console a coi thử.
@vietquoc5397
Ай бұрын
@@devteriadotcom dạ đây ạ 2024-05-03T00:09:20.061+07:00 INFO 18952 --- [nio-8080-exec-1] o.a.c.c.C.[.[localhost].[/identity] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2024-05-03T00:09:20.062+07:00 INFO 18952 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2024-05-03T00:09:20.063+07:00 INFO 18952 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms 2024-05-03T00:09:20.096+07:00 WARN 18952 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.devteria.identityservice.entity.Users com.devteria.identityservice.controller.UserController.updateUser(java.lang.String,com.devteria.identityservice.dto.request.UserUpdateRequest)]
@vietquoc5397
Ай бұрын
@@devteriadotcom dạ đây a: 2024-05-03T15:47:50.263+07:00 INFO 6992 --- [nio-8080-exec-1] o.a.c.c.C.[.[localhost].[/identity] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2024-05-03T15:47:50.263+07:00 INFO 6992 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2024-05-03T15:47:50.265+07:00 INFO 6992 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 2 ms 2024-05-03T15:47:50.304+07:00 WARN 6992 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.devteria.identityservice.entity.Users com.devteria.identityservice.controller.UserController.updateUser(java.lang.String,com.devteria.identityservice.dto.request.UserUpdateRequest)]
@devteriadotcom
Ай бұрын
Request của em trong postman có thể chưa đúng, sai content type hoặc thiếu body. Em check lại chỗ đó nhé.