Thumbnail
BEST 개발 · 프로그래밍 백엔드

스프링 DB 1편 - 데이터 접근 핵심 원리 대시보드

(5.0)
301개의 수강평 ∙ 5823명의 수강생
77,000원

월 15,400원

5개월 할부 시
지식공유자: 김영한
총 57개 수업 (10시간 4분)
수강기한: 무제한
수료증: 발급
난이도: 
입문
-
초급
-
중급이상
지식공유자 답변이 제공되는 강의입니다
폴더에 추가 공유
초급자를 위해 준비한
[백엔드] 강의입니다.

백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다.

✍️
이런 걸
배워요!
스프링 DB 접근 기술
스프링을 통해 DB를 사용하는 다양한 방법
스프링을 통해 DB를 사용하는 내부 원리

백엔드 개발자라면 반드시 알아야하는
스프링 데이터 접근 기술 Part.1

📣 확인해주세요!
본 강의는 자바 스프링 완전 정복 시리즈의 6번째 강의입니다. 우아한형제들 최연소 기술이사 김영한의 스프링 완전 정복 로드맵을 먼저 확인해주세요.
• 로드맵 링크: https://www.inflearn.com/roadmaps/373 (클릭하면 바로가기)

데이터 접근 기술

현대의 애플리케이션은 대부분 웹 환경에서 동작하는 웹 애플리케이션입니다. 단순하게 생각하면 웹 애플리케이션은 크게 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, 커넥션, 커넥션 풀, 데이터소스, 트랜잭션 같은 기반 기술의 핵심 개념을 먼저 학습합니다. 이렇게 기반을 다진 다음에, 그 위에 스프링 데이터 접근 기술이 이 기능들을 얼마나 편리하게 사용할 수 있도록 도와주는지 단계별로 깊이있게 학습합니다.

스프링 DB 2편 - 데이터 접근 활용 기술

1편의 기반 위에 다양한 활용 기술들을 학습합니다.
JdbcTemplate, MyBatis 같은 SQL 매퍼 기술 부터, JPA, 스프링 데이터 JPA, Querydsl 같은 최신 ORM 기술을 학습하고 각 기술들의 장단점을 이해합니다. 그리고 데이터 접근 계층의 테스트 방법과 스프링 트랜잭션에 대한 다양한 기능들도 깊이있게 학습합니다.


지식공유자님의
한마디

백엔드 개발자는 MVC와 DB 접근 기술이라는 2가지 큰 축을 꼭 완성해야 합니다. 여러분이 두 가지 축을 완성하고, 멋진 백엔드 개발자로 성장할 수 있도록 저도 열심히 도와드리겠습니다. 감사합니다.

 


강의 순서


연관 로드맵

스프링 완전 정복 시리즈 
스프링 똑똑하게 시작하기, 핵심 원리부터 실전 활용
스프링 부트 + JPA 실무 완전 정복 
최신 실무 기술로 웹 앱을 만들며 학습  실전 심화 단계 
지식공유자가 알려주는
강의 수강 꿀팁!
🎓
이런 분들께
추천드려요!
스프링을 통해 DB에 접근하고, 데이터를 관리하고 싶은 개발자
개발자 취업 준비생
스프링 DB 접근 기술을 깊이있게 이해하고 싶은 현업 개발자
스프링으로 웹 애플리케이션을 만들고 싶은 개발자
📚
선수 지식,
필요한가요?
자바 언어
스프링 기본 지식
DB 기본 지식

안녕하세요
김영한 입니다.
김영한의 썸네일
커리큘럼 총 57 개 ˙ 10시간 4분의 수업
이 강의는 영상, 수업 노트, 첨부 파일이 제공됩니다. 미리보기를 통해 콘텐츠를 확인해보세요.
섹션 0. 강의 소개
강의 소개 미리보기 05:23
수업 자료
강의 소스 코드
섹션 1. JDBC 이해
프로젝트 생성 미리보기 03:13 H2 데이터베이스 설정 미리보기 05:02 JDBC 이해 미리보기 09:09 JDBC와 최신 데이터 접근 기술 미리보기 08:38
데이터베이스 연결 16:04
JDBC 개발 - 등록 19:57
JDBC 개발 - 조회 14:42
JDBC 개발 - 수정, 삭제 12:45
정리 05:02
섹션 2. 커넥션풀과 데이터소스 이해
커넥션 풀 이해 미리보기 08:41
DataSource 이해 06:10
DataSource 예제1 - DriverManager 08:32
DataSource 예제2 - 커넥션 풀 11:04
DataSource 적용 13:54
정리 03:23
섹션 3. 트랜잭션 이해
트랜잭션 - 개념 이해 미리보기 08:42
데이터베이스 연결 구조와 DB 세션 02:40
트랜잭션 - DB 예제1 - 개념 이해 08:29
트랜잭션 - DB 예제2 - 자동 커밋, 수동 커밋 06:14
트랜잭션 - DB 예제3 - 트랜잭션 실습 06:24
트랜잭션 - DB 예제4 - 계좌이체 09:25
DB 락 - 개념 이해 05:10
DB 락 - 변경 07:52
DB 락 - 조회 10:13
트랜잭션 - 적용1 19:04
트랜잭션 - 적용2 29:04
정리 06:44
섹션 4. 스프링과 문제 해결 - 트랜잭션
문제점들 16:22
트랜잭션 추상화 08:44
트랜잭션 동기화 06:20
트랜잭션 문제 해결 - 트랜잭션 매니저1 20:53
트랜잭션 문제 해결 - 트랜잭션 매니저2 06:58
트랜잭션 문제 해결 - 트랜잭션 템플릿 16:01
트랜잭션 문제 해결 - 트랜잭션 AOP 이해 07:28
트랜잭션 문제 해결 - 트랜잭션 AOP 적용 17:57
트랜잭션 문제 해결 - 트랜잭션 AOP 정리 08:30
스프링 부트의 자동 리소스 등록 09:19
정리 07:28
섹션 5. 자바 예외 이해
예외 계층 05:58
예외 기본 규칙 03:49
체크 예외 기본 이해 16:45
언체크 예외 기본 이해 10:47
체크 예외 활용 22:19
언체크 예외 활용 13:06
예외 포함과 스택 트레이스 07:57
정리 05:16
섹션 6. 스프링과 문제 해결 - 예외 처리, 반복
체크 예외와 인터페이스 09:51
런타임 예외 적용 11:04
데이터 접근 예외 직접 만들기 20:19
스프링 예외 추상화 이해 21:04
스프링 예외 추상화 적용 08:54
JDBC 반복 문제 해결 - JdbcTemplate 09:28
정리 05:50
섹션 7. 다음으로
다음으로 34:25
강의 게시일 : 2022년 04월 12일 (마지막 업데이트일 : 2022년 11월 28일)
수강평 총 301개
수강생분들이 직접 작성하신 수강평입니다. 수강평을 작성 시 300잎이 적립됩니다.
5
301개의 수강평
5점
4점
3점
2점
1점
VIEW 좋아요 순 최신 순 높은 평점 순 낮은 평점 순 평점 순 높은 평점 순 낮은 평점 순
이한빈 thumbnail
보통 인터넷에 리뷰를 다는 편은 아닌데, 많은 도움을 받아서 글을 남깁니다. 지식공유자님의 다른 강의들이 그렇듯이, 강사님 본인의 개발 실력뿐만 아니라 철저한 준비가 기반이 된 좋은 강의입니다. 내용적으로도 정말 도움이 되지만, 항상 강의를 듣는 사람을 기준으로 어떻게 잘 전달해야 하느냐에 대한 고민이 녹아들어 있어 특히 추천할만한 강의입니다. 적절한 시점에 소스코드나 공식 문서를 뜯어 보여주시면서도 딱 그 시점에 필요한 만큼만 진행해주시고, 늘 그렇듯이 현업에서의 사용 경험 이야기도 도움이 됩니다. DB 접근기술을 공부하던 중이었는데, 기저에 있는 원리들에 대해서, 자연스럽게 나올 수밖에 없는 의문들에 대해서 큰 도움을 얻었습니다. 덕분에 시간을 크게 절약할 수 있었습니다. 특히 예외 처리 문제를 다룬 것이 정말 도움이 많이 되었습니다. JDBC를 학습하면서 예외에 대해 상당히 혼란스러웠던 상황이었는데, 1. 자바 예외 개념에 대해서 기초부터 탄탄하게 짚어 주시고, 2. 현업에서 사용 추세를 전달, 어떻게 사용하라는 것에 대한 지침을 명확히 주셔서 특히나 도움이 되었습니다. 사실상 독학으로 개발을 시작해서 구구단만 칠 줄 알던 시절부터 영한님 강의로 공부해온지 8개월 정도 지났는데, 강의 하나하나가 정말 도움이 되었습니다. 특히 강사님의 라이브 코딩으로 진행되는 수업이기에, IDE 이용과 좋은 코드 작성법에 대한 지식도 습득할 수 있다는 점도 추천하고 싶습니다. 항상 감사합니다.
2022-04-18
지식공유자 김영한
이한빈님 열심히 공부하시고, 또 이렇게 강의의 장점을 하나하나 풀어서 이야기해주시니 정말 고맙습니다. 자바 예외의 기초에 대해서 여기에 포함할까 고민을 좀 많이 했었는데, 이런 부분에서 도움을 드려서 저도 보람이 있네요. 고맙습니다!
2022-04-19
민규 thumbnail
자바 문법만 공부하고 JPA -> Spring 로드맵 순서로 영한님 강의 전부 본 취준생 입니다. (순서가 바뀐것 같지만 제가 시작할 당시엔 스프링 기초편만 있었어요 ㅠㅠ) 고대 개발자들이 어떤 문제를 느껴서 어떻게 발전 했는지 처음 프로그래밍을 하는 저도 이해할 수 있게 쉽게 풀어서 설명 해 주셔서 큰 어려움 없이 여기까지 온 것 같아요. 이번 강의는 전에 고급편을 듣고 와서 그런지 템플릿, 콜백, 프록시, AOP 같은 개념이 나왔을때 이렇게 활용 되는구나 하고 재미있게 들었네요. 나중에 제가 기능을 만들때도 반복되는 코드나 의존성 문제가 생기면 패턴을 도입 해야겠다는 생각이 들었습니다. 스프링으로 만드는 프로젝트 같은 책으로 시작을 했다면 그저 스프링을 사용하는 것에 만족했을 수도 있었겠다는 생각이 들어서 영한님 강의로 시작하길 잘한것 같아요 :) DB 2편을 기다리면서 말씀 해 주신 것처럼 공부하는 단계를 넘어서 체득하는 단계로 가려고 하는데 어떻게 시작해야 할지 막막하긴 하지만 영한님의 조언대로 작은 프로젝트부터 차근차근 만들어 볼 생각입니다. 강의도 물론 좋지만 마지막에 나아가야 할 방향을 제시 해 주시는게 저한테 큰 동기부여가 되는 것 같아요 정말 감사합니다^^
2022-04-16
지식공유자 김영한
민규님 제가 딱 의도한 대로 공부를 하셨군요^^! 취준생인데, 벌써 이정도 고민을 하셨다면 실무 개발자가 되었을 때 분명 좋은 개발자가 되실 것이라 확신합니다. 응원합니다!
2022-04-17
이석준 thumbnail
김영한!!김영한!!김영한!!
2022-04-26
지식공유자 김영한
이석준님 열심히 들어주셔서 저도 감사합니다!
2022-04-28
yongeun612 thumbnail
항상 좋은 강의 감사합니다.
2022-04-18
지식공유자 김영한
yongeun612님 고맙습니다^^!
2022-04-18
OMG thumbnail
회사 코드에 throws exception이 도배되어 있거나, 트랜잭션 개념이 부족한 분들에게 적극 추천드립니다 :) 국내 백엔드 개발자의 평균 실력을 올려주는 유일무이한 좋은 강의 제공해주셔서 감사합니다!!
2022-11-29
지식공유자 김영한
OMG님 회사 코드에 throws exception이 도배되어 있거나 하는 부분에서 많이 공감되네요^^ 열심히 들어주셔서 고맙습니다!
2022-11-30
연관 로드맵
이 강의가 포함된 잘 짜여진 로드맵을 따라 학습해 보세요!