현대의 애플리케이션은 대부분 웹 환경에서 동작하는 웹 애플리케이션입니다. 단순하게 생각하면 웹 애플리케이션은 크게 3가지 기능을 수행합니다.
우리는 앞서 스프링 MVC 강의를 통해 클라이언트의 요청을 받아서 처리하는 방법을 학습했습니다. 이번에는 그 이후 단계인 비즈니스 로직을 수행하는 서비스와 수행 결과를 데이터베이스에 보관하고 관리하는 리포지토리에 대해 깊이있게 학습합니다.
클라이언트의 요청을 받아서 처리하는 기능은 스프링 MVC를 사용합니다. 비즈니스 로직을 수행하는 기능은 순수한 자바 코드로 만들어집니다. 마지막으로 수행 결과를 데이터베이스에 보관하고 관리하는 기능은 JDBC, JdbcTemplate, MyBatis, JPA와 같은 다양한 기술들을 선택해서 사용합니다. 그리고 스프링이 제공하는 DB 데이터 접근 기술을 사용하면 이러한 기술들을 스프링과 통합해서, 매우 편리하게 사용할 수 있습니다.
데이터 접근 기술을 정복해야 하는 이유
애플리케이션에서 데이터베이스에 데이터를 보관하고 관리하기 위해서는 다양한 데이터 접근 기술을 학습해야 합니다. 이러한 데이터 접근 기술을 학습하기 어려운 대표적인 이유는 다음 3가지 때문입니다.
1. 데이터베이스 기반 지식이 약하다.
모든 데이터 접근 기술은 데이터베이스에 데이터를 보관하고 관리하기 위한 것입니다. 따라서 데이터베이스에 대한 기본 이해가 필요합니다. 이 강의를 학습하기 전에 데이터베이스와 SQL에 대한 기본 내용을 학습하시길 바랍니다.
2. 데이터 접근 기술이 너무 다양하다.
JDBC부터 시작해서 SQL 매퍼라고 불리는 JdbcTemplate이나 MyBatis 같은 기술부터 ORM 기술인 JPA, 스프링 데이터 JPA, Querydsl 같은 최신 기술까지 정말 다양한 데이터 접근 기술들이 있습니다. 너무 다양한 기술들이 존재해서, 각각의 기술들이 어떤 장단점이 있고, 어떤 상황에 어떤 기술들을 사용하면 좋은지 명확하게 이해하고 사용하기는 쉽지 않습니다.
3. 데이터 접근 기술의 역사가 너무 오래되었다.
JDBC부터 시작한 데이터 접근 기술은 이미 20년이 넘었습니다. 그동안 데이터 접근 기술의 발전은 물론이고, 스프링은 이러한 데이터 접근 기술들을 더욱 편리하게 사용하도록 돕기 위해 수많은 기능을 발전시키고, 개선해왔습니다. 그래서 지금은 너무 많은 것이 자동화되고, 추상화 되어버렸습니다. 특히 최근에 개발을 시작한 백엔드 개발자들은 데이터 접근 기술을 사용할 때 왜 이런 방식으로 기능이 동작하는지 정확한 이유를 모르고, 단순히 사용법 위주로 사용하게 됩니다. 왜 이런 방식으로 사용하지?라고 의문을 가져도 과거에 어떤 불편한 문제 때문에 지금 이런 방식으로 개선되고 사용하는지 과거의 문맥을 제대로 이해하고 사용하기는 어렵습니다.
강의 특징
'왜' 쓰는지 알면, 정확하게 쓸 수 있습니다.
이 강의는 20년 전으로 돌아갑니다. 데이터 접근 기술의 시작인 JDBC를 시작으로, 커넥션, 커넥션 풀, 데이터소스, 트랜잭션 개념, 그리고 스프링이 지원하는 데이터 접근 기술까지, 모든 것을 코드로 여러분과 함께 만들어보면서 단계적으로 진행합니다. 과거에 어떤 불편한 점이 있어서 다음 기술이 탄생했고, 어떤 점들이 개선되었는지 그 이유를 찾고 직접 코딩하면서 하나씩 이해할 수 있습니다.
그리고 2편을 통해 MyBatis, JPA 같이 실무에서 주로 사용하는 데이터 접근 기술들도 함께 학습하게 됩니다.
기본기를 단단히
데이터 접근 기술을 학습할 때는 여러가지 기본기가 중요합니다. 이 강의에서는 실무에서는 많이 사용되지만 학습하기는 쉽지 않은 트랜잭션과 자바 예외에 대한 기본기도 함께 다룹니다. 그리고 이렇게 학습한 내용들이 실무에서 어떻게 활용되는지 코드로 학습할 수 있습니다.
강의 목표
목표: 백엔드 개발을 할 때 필요한 데이터 접근 기술을 완성하는 것을 목표로 합니다.
기초부터 실무까지: 실무 개발을 위한 내용이 많지만, 백엔드 개발 경험이 없는 개발자도 적응할 수 있게 구성하였습니다.
실무 예제 중심: 실무에서 스프링으로 백엔드 애플리케이션을 개발할 때 필요한 데이터 접근 기술을 예제를 통해 자연스럽게 학습하며, 실무에서의 Best Practice를 전수해드립니다.
간결함: 실무에서 사용하지 않는 오래된 기능은 과감하게 제외했습니다. 최신 실무에 주로 사용하는 내용을 위주로 설명합니다.
이 강의는 데이터 접근 기술에 대한 모든 내용을 설명하지 않습니다. 데이터 접근 기술을 위해 필요한 핵심 뼈대를 세우고, 그 위에 실무에 꼭 필요한 기술을 위주로 설명합니다. 이 강의가 끝나면 여러분은 튼튼한 기반 지식을 바탕으로 스프링 백엔드 애플리케이션을 자신있게 개발할 수 있습니다.
스프링 DB 강의 구성
스프링 DB 강의는 1, 2편으로 나누어져 있습니다. 본 강의는 스프링 DB 1편 - 데이터 접근 핵심 원리입니다.
스프링 DB 1편 - 데이터 접근 핵심 원리 현재 강의
데이터 접근 기술의 핵심 개념을 다지고, 스프링이 제공하는 데이터 접근 기술의 기본 원리를 이해합니다. 1편은 먼저 스프링 없이 순수한 데이터 접근 기술인 JDBC, 커넥션, 커넥션 풀, 데이터소스, 트랜잭션 같은 기반 기술의 핵심 개념을 먼저 학습합니다. 이렇게 기반을 다진 다음에, 그 위에 스프링 데이터 접근 기술이 이 기능들을 얼마나 편리하게 사용할 수 있도록 도와주는지 단계별로 깊이있게 학습합니다.
1편의 기반 위에 다양한 활용 기술들을 학습합니다. JdbcTemplate, MyBatis 같은 SQL 매퍼 기술 부터, JPA, 스프링 데이터 JPA, Querydsl 같은 최신 ORM 기술을 학습하고 각 기술들의 장단점을 이해합니다. 그리고 데이터 접근 계층의 테스트 방법과 스프링 트랜잭션에 대한 다양한 기능들도 깊이있게 학습합니다.
지식공유자님의 한마디
백엔드 개발자는 MVC와 DB 접근 기술이라는 2가지 큰 축을 꼭 완성해야 합니다. 여러분이 두 가지 축을 완성하고, 멋진 백엔드 개발자로 성장할 수 있도록 저도 열심히 도와드리겠습니다. 감사합니다.
Tôi thường không đăng bài đánh giá trên internet nhưng tôi viết bài này vì tôi đã nhận được rất nhiều sự giúp đỡ.
Giống như các bài giảng khác của người chia sẻ kiến thức, đây là một bài giảng hay không chỉ dựa vào kỹ năng phát triển của bản thân người hướng dẫn mà còn dựa trên sự chuẩn bị kỹ lưỡng. Nó thực sự hữu ích về mặt nội dung, nhưng đây là một bài giảng đặc biệt được khuyến khích vì nó luôn liên quan đến mối quan tâm về cách truyền tải bài giảng tốt dựa trên khán giả.
Vui lòng mở và hiển thị mã nguồn hoặc tài liệu chính thức vào thời điểm thích hợp nhưng chỉ tiến hành khi cần thiết vào thời điểm đó. Như thường lệ, những câu chuyện về trải nghiệm của bạn khi sử dụng nó trong lĩnh vực này cũng rất hữu ích. Tôi đang nghiên cứu công nghệ truy cập DB và nó giúp ích rất nhiều trong việc hiểu các nguyên tắc cơ bản cũng như các câu hỏi chắc chắn sẽ xuất hiện một cách tự nhiên. Điều này đã giúp tôi tiết kiệm rất nhiều thời gian.
Đặc biệt, việc đề cập đến các vấn đề xử lý ngoại lệ thực sự hữu ích. Khi học JDBC, tôi khá bối rối về các trường hợp ngoại lệ.
1. Cung cấp sự hiểu biết vững chắc về khái niệm ngoại lệ Java từ những điều cơ bản.
2. Truyền đạt các xu hướng sử dụng tại hiện trường và đưa ra hướng dẫn rõ ràng về cách sử dụng chúng.
Điều này đặc biệt hữu ích.
Trên thực tế, đã khoảng 8 tháng kể từ khi tôi bắt đầu tự phát triển trò chơi và học qua các bài giảng của Younghan vì tôi chỉ biết làm bảng cửu chương và mỗi bài giảng đều thực sự hữu ích. Đặc biệt, tôi muốn khuyến nghị rằng vì đây là lớp học do người hướng dẫn giảng dạy thông qua mã hóa trực tiếp nên bạn cũng có thể có được kiến thức về cách sử dụng IDE và cách viết mã tốt.
Cảm ơn bạn luôn.
Hanbin Lee, cảm ơn bạn rất nhiều vì đã chăm chỉ học tập và giải thích từng điểm mạnh của bài giảng. Tôi đã suy nghĩ rất nhiều về việc có nên đưa những kiến thức cơ bản về ngoại lệ Java vào đây hay không, nhưng tôi thấy thật bổ ích khi có thể trợ giúp trong lĩnh vực này. Cảm ơn!
Chỉ học ngữ pháp Java và JPA -> Tôi là người tìm việc đã xem tất cả các bài giảng của Younghan theo thứ tự lộ trình mùa xuân. (Có vẻ như thứ tự đã thay đổi nhưng khi tôi bắt đầu thì chỉ có Spring Basics.)
Tôi nghĩ rằng tôi đã đi xa đến mức này mà không gặp nhiều khó khăn vì bạn đã giải thích một cách dễ hiểu những loại vấn đề mà các nhà phát triển cổ xưa gặp phải và cách họ phát triển, ngay cả khi là một lập trình viên lần đầu.
Bài giảng này có thể là do tôi đã nghe phần nâng cao trước đó, nhưng tôi rất thích nghe ý tưởng về cách sử dụng các khái niệm như mẫu, lệnh gọi lại, proxy và AOP khi chúng được giới thiệu. Sau này, khi tạo một hàm, tôi nghĩ mình nên giới thiệu một mẫu nếu gặp phải các vấn đề về mã lặp lại hoặc phụ thuộc. Nếu tôi bắt đầu với một cuốn sách như Projects with Spring, tôi có thể hài lòng với việc chỉ sử dụng Spring, vì vậy tôi nghĩ nên bắt đầu với bài giảng của Younghan :)
Như bạn đã đề cập trong khi chờ đợi DB Phần 2, tôi đang cố gắng vượt qua giai đoạn nghiên cứu để chuyển sang giai đoạn tiếp thu và tôi không chắc nên bắt đầu như thế nào, nhưng tôi dự định làm theo lời khuyên của Younghan và tạo một dự án nhỏ từng bước một . Tất nhiên, bài giảng rất hay, nhưng tôi nghĩ đó là động lực rất lớn để tôi đề xuất hướng đi ở phần cuối. Cảm ơn bạn rất nhiều ^^.
Mingyu, bạn đã học đúng như ý định của tôi ^^!
Nếu bạn là người tìm việc và đã suy nghĩ nhiều về nó, tôi chắc chắn rằng bạn sẽ trở thành một nhà phát triển giỏi khi trở thành một nhà phát triển đang làm việc.
Chúc mừng!
Rất khuyến khích cho những người có mã công ty có nhiều ngoại lệ hoặc những người thiếu khái niệm về giao dịch :)
Cảm ơn bạn đã cung cấp một khóa học đặc biệt tốt giúp cải thiện kỹ năng trung bình của các nhà phát triển back-end trong nước!!
Không chỉ nội dung bài giảng mà cả những câu nói hay trong video vừa rồi đã tiếp thêm cho tôi rất nhiều sức mạnh. Gần đây tôi có cảm giác như mình chỉ học một cách trì trệ sau giờ làm mà không có mục tiêu cụ thể nào cả. Điều này có thực sự đúng không? Đó thực sự không phải là con đường của tôi sao? Rất nhiều phần bực bội mà tôi nghĩ đã được giải quyết đã được giải quyết. Cảm ơn bạn!
KoorunG, cuối cùng thì điều quan trọng nhất là phải làm việc chăm chỉ một cách nhất quán. Tôi cũng cảm thấy được khen thưởng vì đã chăm chỉ chuẩn bị haha.