월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
mvc2편까지 봤는데 쭉 나가도 될까요 선생님?
현재스프링 기본 -HTTP- mvc1편-mvc2편 까지 본 상태입니다또한 스프링부트+jpa 로드맵도 다 구매를 해둔 상태이구요병렬적으로 자바 / cs / 이론적인 데이터베이스 공부도 함께하고 있구요 다만 스타일이 한번 빠르게 쭉 보고 모르는게 있으면 체크 해둔 후진도를 나갈수록 계속 쓰이는데, 제가 반복적으로 헷갈리는 부분은 따로 적어두고 체크해두면서 1회독 후 2회독 3회독을 하는 스타일 입니다다만 스프링 기본~ mvc2편 까지 공부한 상태에서 한 번 더 보려고 하니 생각보다 시간이 많이 소요될 것 같다는 것을 느꼈습니다그래서mvc2까지 본 현재 상황에서나머지 스프링 로드맵들 db관련 내용(db1,2)+ jpa+스프링부트까지 빠르게 쭉 다 보고다시 처음 스프링부터 보는게 나을지, 아니면 다시 스프링 기본부터 복습하고 db및 jpa+스프링부트쪽 뒷 로드맵으로 넘어가는게 나을지 고민입니다! 항상 양질의 강의 감사드립니다 영한님 및 서포터즈 분들 새해복 많이 받으세요!
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
트랜잭션 매니저와 트랜잭션 동기화 매니저 동작 방식
트랜잭션 매니저와 트랜잭션 동기화 매니저 동작 방식 설명에서 4번째 문장 ("트랜잭션이 종료되면 트랜잭션 매니저는 트랜잭션 동기화 매니저에 보관된 커넥션을 통해 트랜잭션을 종료하고, 커넥션도 닫는다.")에서 커넥션도 닫는다는 말이 사용이 끝나서 커넥션풀에 다시 반납한다는 의미인가요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
안녕하세요. 스프링 강의 로드맵 문의입니다.
안녕하세요. 김영한님 강의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술무료 강의 완강하였고, 인프런에 올라와 있는 영상은 일단 전부 결제해서 가지고 있습니다.로드맵이 스프링 이론에 초점을 맞춘 로드맵과, DB쪽 에 초점을 둔 로드맵이 두가지가 있어서모두 정복하고 싶은 마음에 로드맵을 조금 더 알고 싶어서 질문글을 올립니다.스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술스프링 핵심 원리 - 기본편모든 개발자를 위한 HTTP 웹 기본 지식스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술스프링 MVC 2편 - 백엔드 웹 개발 활용 기술스프링 DB 1편 - 데이터 접근 핵심 원리스프링 DB 2편 - 데이터 접근 활용 기술스프링 핵심 원리 - 고급편여기까지의 로드맵과 실전! 스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발자바 ORM 표준 JPA 프로그래밍 - 기본편실전! 스프링 부트와 JPA 활용 2 - API개발과 성능 최적화실전! 스프링 데이터 JPA실전! Querydsl여기까지의 로드맵이 있는데. (아, 아래의 DB쪽 로드맵은 무료강의에서 선생님께서 말하신 것과소개글에 있는 로드맵의 순서가 약간 달라서 (1번과 2번이 서로 바뀜) 일단 선생님이 말해주신대로 적었습니다.) 스프링 이론 강의를 어느정도 나간 다음에 DB쪽을 시작하면 좋을지 궁금합니다아니면 그냥 처음부터 반반씩 나눠가면서 같이 시작해야 할지요~답변 부탁드리겠습니다 감사합니다~ 열심히 하겠습니다
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
DB서버와의 통신에서 사용되는 프로토콜
안녕하세요 DB I/O 관련 작업 중 발생하는 네트워크 프로토콜에 대해 질문드립니다. 애플리케이션 서버(WAS)에서 DB 서버로 TCP 요청을 통해 쿼리를 수행할 때 L7 프로토콜이 어떤게 사용되는지 궁금합니다. 직접 wireshark 프로그램을 사용하여 패킷 필터링을 해본 결과 L7 프로토콜은 잡히지 않고 TCP만 필터링되고 있음을 확인했습니다. 생각해보니 L7 프로토콜을 사용하지 않고 데이터를 전송한다는 것은 말이 되지 않습니다. TCP는 OS레벨에서 관리하는 프로토콜이기 때문입니다. 분명 L7 프로토콜을 최소 한 번은 타야 보내질텐데 이 부분이 어떻게 처리되는지 궁금합니다. 추가적으로 저희가 작성한 쿼리문이나 sessionId나 isolationlevel, readOnly 등 커넥션, 트랜잭션 관련 값들이 프로토콜 상의 어떤 필드를 통해 보내지는지도 궁금합니다. 감사합니다. Happy New Year!
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
테스트코드에서 rollback 적용 안됨
안녕하세요 강의 도중 에러를 해결하지 못해서 질문 남깁니다.예시 중 이체 중 오류발생 시 롤백하는 테스트를 진행하는데,throw한 에러를 모두 잡아서 rollback 코드까지는 들어가는데, 결과는 롤백이 안되는 상황입니다.(memberA가 10000원으로 롤백되어야 하는데 안됨) 롤백 코드가 있는 부분은 분명 실행이 된 것이 확인 되는데 막상 결과는 롤백이 되지 않습니다.
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
TCP커넥션과 커넥션 풀의 커넥션
안녕하세요 커넥션 풀 강의 부분을 듣고 질문사항이 생겼습니다. 일반적으로 TCP커넥션이라 함은, 소켓(src ip, src port, dst ip, dst port 조합으로 구분)을 통하게 되는데 결국 클라이언트와 서버 1대1 관계에서 TCP 커넥션이 하나 생기지 않습니까? (src ip, src port, dst ip, dst port가 모두 같을 경우에 해당) 하지만 커넥션 풀 개념에서는 커넥션 풀에 여러개의 커넥션이 존재하게 됩니다. 여기서 다음과 같이 의문점이 생겼습니다. DB커넥션과 TCP커넥션은 다른 개념으로 생각해야 할 게 맞는건지(TCP커넥션 하나에 여러개의 DB커넥션이 포함되는 느낌?)위 질문이 맞다면 DBMS 단에서 커넥션 풀의 여러 커넥션들을 구분하는 기준은 소켓이 아니라 세션ID같은 정보일 것으로 확인되는데 맞을까요?트랜잭션 개념에 의하면 같은 커넥션(세션)으로 일련의 쿼리들을 전송해야 하는데, 커넥션과 세션은 1대1로 매핑되는 개념으로 알고 있습니다. 세션은 DBMS단에서 세션ID로 식별을 한다고 생각하면 커넥션 풀의 커넥션은 어떤 세션과 매핑이 될지에 대한 정보를 어떻게 표현되어지고 있는지 궁금합니다. 커넥션 풀 구현체(히카리 등)에서 정의한 커넥션 객체에 세션ID라는 필드가 있는 건지... 추가질문JDBC 기반으로 메시지를 보낼 때 프로토콜이 JDBC인 것으로 알고있는데 wireshark같은 네트워크 패킷 프로그램으로 확인해본 결과 JDBC나 mysql이라는 프로토콜은 필터링되지 않고 TCP로 필터링되어 확인됩니다. 결국 JDBC나 mysql 같은 프로토콜은 TCP의 payload부분을 커스터마이징하여 구현된 프로토콜인것으로 예측이 되는데(사실 payload 부분이 암호회되어 확인할 수 없음) 맞는 사실일까요?위 질문이 맞다면 DB접근에 대한 프로토콜은 애플리케이션 레벨 프로토콜을 사용하지 않고 TCP로만 데이터를 보내는 것으로 해석이 되는데 맞을까요? (JDBC나 mysql 같은 프로토콜이 L7 프로토콜인 것으로 생각했었습니다...) 감사합니다!
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
예외처리와 관련하여 질문이 있습니다.
예외처리를 할 때 catch에서 예외를 잡아줄 때 그 안에 들어가는 예외종류는 상황에 맞게 개발자가 직접 넣어줘야 하는걸까요? 그러면 미리 어떤 예외 터질 거 같다는걸 예측해서 그 예외에 해당하는 걸 찾아서 넣어줘야 하는건가요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
id 'org.springframework.boot' version '3.0.0' 에서 Gradle - Groovy 선택하니 오류 발생이 되네요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오)[질문 내용]첫번째 강의를 들을땐 정상적으로 되었는데어느 순간 start.spring.io 에서 생성이 되는 프로젝트가 오류가 나옵니다.지금 스프링 부트 버젼이 3.0.0 으로 되어 있고프로젝트 선택시 "Gralde" 만 있는게 아니라 "Gradle - Groovy" 가 있네요. 그래서 그걸 선택해서 나머지는 예제와 똑같이 만들었는데 오류가 발생이 됩니다. 그래서 이전꺼랑 비교하면서 확인을 해보니plugins { id 'java' id 'org.springframework.boot' version '3.0.0' id 'io.spring.dependency-management' version '1.1.0' }에서 3.0.0 버전에서 2.7.5로 낮추니 정상적으로 실행이 됩니다.이거 해결할 수 있는 방법은 없는건가요?스프링의 3.0.0은 사용을 못하는 건가요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
블로그에 강의 내용을 정리한 글을 게시해도 될까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니요2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]추후에 면접시에 이론공부를 위해서 피피티내용이나 코드를 복사해서 블로그에 정리해놓고 싶은데혹시 그렇게 해도 괜찮을까요? 물론 글 상단 및 하단에 김영한님의 어떤 강의를 듣고 정리해 놓은 내용이라는 부분을 작성해놓으려고 합니다.
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
세션이란게 구체적으로 무엇인가요?
안녕하세요 세션이란게 구체적으로 무엇인가요?db에 있는 스레드 같은건가요??
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
autoCommit(false)시 conn.rollback()은 필요 없나요?
안녕하세요. 강의 늘 잘 보고 있습니다. 1편을 다 마치게 되어서 손으로 jdbc~트랜잭션 추상화까지 직접 테스트 코드를 짜보고 있는데요.일부러 같은 pk를 넣어 익셉션이 터지도록 의도하고, 롤백이 되길 원했습니다.그런데 코드를 들여다보니 rollback() 구문을 빠트리고 작성했는데도 원하는 대로 롤백이 되었습니다.void multiSave(List<Member> members) throws SQLException { Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); try { conn.setAutoCommit(false); for (Member member : members) { repository.save(conn, member); } conn.commit(); } catch (SQLException e) { log.error("log message = {}", e); throw new RuntimeException(); } finally { JdbcUtils.closeConnection(conn); } }사실 autocommit true가 아니니까 이렇게 처리해주는 것이 당연한 것 같으면서도, 개발자가 명시하지 않아도 동작하는 거라면 rollback()이 왜 있는 건가요? 다른 쓰임새가 또 있는걸까요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
프로젝트 생성시 빌드 오류 질문
안녕하세요. 스프링DB 1편 프로젝트 생성을 할 때 빌드 오류가 나서 질문드립니다.지금까지 처음 프로젝트 불러오고나서 생성할 때 빌드 오류가 난 적이 없어서 어떻게 해결해야될지를 모르겠네요 ㅠㅠ프로젝트는 Spring Initializr를 통해서 생성했습니다.자바11, 17과 7.5.1 관련 문구가 반복적으로 나오는데 무슨 의미인지 모르겠습니다.
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
쓰레드 질문 있습니다.
안녕하세요. 쓰레드 순서에 관해서 궁금증이 있습니다. 강의에서는 sleep()이 crud() 마지막에 위치해 있습니다. 그러나 이 때 sleep()을 crud() 맨 앞으로 위치시키면 MyPool 로그가 찍히지 않고 끝나버립니다. 제 생각엔 sleep 1초를 뒤가 아닌 앞에 위치시키면메인 쓰레드가 멈춤히카리 쓰레드가 먼저 커넥션을 10개 생성메인 쓰레드 sleep이 끝나서, 선택할 커넥션 10개가 있는 상태로 crud() 함수 실행이렇게 동작할 거라고 생각했는데 결과가 달라서 당황스럽습니다.제가 아직 쓰레드 프로그래밍에 익숙치 않아서 잘 모르는 부분이 많습니다. 감사합니다.
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
다중 DataSource 사용시
안녕하세요~! 핵심 원리를 잘 설명해주셔서 Spring DB 강의를 정말 잘 듣고 있습니다!!그런데 강의를 듣던 도중에 궁금한 점이 있는데요,, DataSource 를 다중으로 사용하는 경우 사용하는 패턴이나 좋은 방법이 있을까요?구글에서 검색하면 보통 Multiple DataSource 라고 하면 2개 DB에 커넥션 풀을 연결하는 예제가 있는데 10개이상의 DB 와 연결하는 경우에도 DataSource를 효율적으로 관리하는 방법이 있는지 궁금합니다!
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
H2 데이터베이스 설정 4분 17초 테이블 복사 스크립트 어디서 구해요?
H2 데이터베이스 설정 4분 17초 테이블 복사 스크립트 어디서 구해요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
MemberServiceV2의 모든 코드를 100%이해해야 할까요?
강의 흐름은 어느 정도 보이는데 코드는 90%센트 정도만 이해가 됩니다나머지 10% 이해가 가지 않는 부분을 명확하게 짚어내기 어렵네요...과거에 이렇게 힘들게 짰고 이런 문제들이 발생했다 정도만 숙지하고 넘어가도 이번 수업에서 달성하고자 하는 목표를 달성한 걸까요? 꼭 MemberServiceV2의 모든 코드를 100% 이해해야 할까요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
datasource를 썼을 때 jdbc 인터페이스는 어느 위치에 들어가나요?
"jdbc인터페이스"를 쓰면 아래와 같이 연결이 되고애플리캐이션로직jdbc인터페이스mysql드라이버mysqlDB "datasource"를 쓰면 아래와 같이 연결이 되는데애프릴캐이션로직Datasource커넥션풀DBdatasource를 썼을 때 jdbc 인터페이스는 어느 위치에 들어가게 되나요?
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
ResultSet Cursor 방식 관련 질문 드립니다.
ResultSet 은 내부에 있는 커서 "cursor" 를 이동해서 다음 데이터를 조회할 수 있는데이 때 전체 결과 데이터는 DB 서버 내부의 메모리에 저장되는지 아니면 애플리케이션 서버 메모리에 저장되는 지가 궁굼합니다.
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
7:30 DuplicateKeyException 질문
7:30 부분에서 잘 이해가 안가는 부분이 있습니다.35 라인으로 catch(DuplicateKeyException e)로 예외를 잡아주셨는데저 익셉션을 Repository에서throw exTranslator.translate("update", sql, e); 이런식으로 변환된 익셥션이 (DuplicateKeyException )이 익셉션을 Service로 던져서 처리 하라는 말씀인가요? 아니면 자동으로 DuplicateKeyException이 서비스 계층으로 넘어 온다는 말씀인가요 ??
- 미해결스프링 DB 1편 - 데이터 접근 핵심 원리
익셉션 처리
쉽게 생각하면 SQLException, ConnectException 이러한 익셉션들을RuntimeException 로 대체한다고 생각하면 되겠네요 ?맞나요 !?