묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
이번 강의부터가 JDBC 직접 사용 맞나요?
이번 강의부터가 7강에서 설명하신 데이터 접근 기술중 JDBC 직접 사용, SQL Mapper, ORM 기술 중 JDBC 직접 사용하는 부분이 맞을까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
순수한 서비스 계층에 대한 의문???
서비스 계층을 순수한 비즈니스 로직만 남도록 하고,특정 기술에 의존하지 않도록 하는 과정을 배우면서많은 영감을 얻었습니다!그런데, @Transactional은 과연 순수한가 하는 의구심이 듭니다.내부 코드에서는 깔끔하게 지웠지만,순수한 자바 환경에서는 여전히 특정 예외상황에서 불완전하게 동작하고,어노테이션을 통해 프록시 기술에 의존하게 되는데요. 테스트 시에도 순수한 자바테스트가 아니라 스프링 컨테이너에서 관리되도록 해야하니 순수하지 않다고 느껴집니다.이런건 트랜잭션을 순수한 자바코드만으로 깔끔하게 구현하기 어렵기때문에 현실적으로 타협한건가요?여전히 찝찝한 마음이 남아있습니다 ㅠㅠ
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
3_4test, 4test 자동 리소스 안됨
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]테스트를 돌리는 과정 속에서 자꾸 h2 디비로 접속하지 못하고 새로운 메모리 테이블로 접근하는 거 같습니다. 3_3테스트까지는 문제없이 작동이 되는데 자동 리소스 등록을 하는 부분부터 문제가 생겨요. 다운 받은 예제를 돌릴 때는 또 제대로 실행이 되는데 이거 왜 이러는 걸까요
-
미해결토비의 스프링 부트 - 이해와 원리
11강에서 cmd에서 spring shell에 $ init 하면 Fail 메세지
안녕하세요. 정말정말 왕초보인 수강생입니다. 강의 대로 진행중인데 어찌해야 할지 몰라 문의드립니다.11강 프로젝트 생성의 3:54에서 부터(cmd -> spring shell -> $ init) 저는 아래와 같이 에러메세지가 뜹니다.이걸 어떻게 해결해야 할지 감 못 잡고 있습니다. ㅜㅜ--Using service at https://start.spring.ioFailed to retrieve metadata from service at 'https://start.spring.io' (PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target)-- (현재 설치환경)스프링 부트 2.7.18버전을 설치했고 IntelliJjava는 21버전 설치spring initializr에서 스프링부트 3.5.6 버전으로 템플릿 받아둔 상태입니다.환경변수 JAVA_HOME, SpringBoot_Home 셋팅해두었습니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
데이터베이스 선택 관련 질문.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)강의 수강전 질문2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)네3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 스프링 DB를 듣기전에 데이터베이스에 대한 공부를 하고 해당 강의를 수강하라고 하셔서 강사님의 최신 데이터베이스 강의를 수강중입니다. 해당 강의에서는 MySQL을 사용중인데 이 데이터베이스를 사용해서 스프링 DB 강의를 수강할 수 있을까요? 아니면 H2데이터베이스를 별도로 추가 다운로드 해야할까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
after 메서드 사용 유무
[1줄 질문]after 메서드 로직을 테스트에 바로 적는 것도 보편적으로 사용하는 방법일까요?[설명] 테스트를 실행한 후, after 메서드로 memberA, memberB, ex 객체 값을 삭제하여 다음 테스트 실행할 때 데이터 충돌을 방지하는 것으로 이해했습니다.after 메서드를 실행할 때마다 테스트에서 생성 자체가 되지 않은 객체 또한 삭제되는 경우가 있는데, 이런 경우에는 after 메서드 대신 테스트 후(then 로직 종료 후) 바로 삭제하는 로직을 추가하는 것이 좀 더 빠르지 않을까 생각해보았습니다.물론 after 메서드를 사용하는 것은 중복 로직을 줄이기 위함도 있겠지만, 지금과 같은 경우에는 테스트 내에서 삭제 로직까지 추가하는 것은 보편적인 방법이 아닌지 궁금합니다.
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
데이터베이스 접근 및 DB 락
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]데이터 베이스 접근 및 DB 락에 대해서 학습을 하면 "동시성 이슈" 그리고 "트랜잭션 격리성" 에 대한 전반적인 DB Lock 이슈 관리에 도움이 될까요??
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
@SpingBootTest, @TestConfiguration
아직 스프링부트 강의까지는 수강하지 못해서 남기는 질문입니다. 만약 프로젝트가 처음부터 스프링부트 환경이라고 한다면 별도로 @SpringBootTest 같은 애노테이션은 사용하지 않아도 되나요?@TestConfiguration의 경우에 꼭 내부 클래스로만 사용해야하나요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
AopCheck Test 부분의 EnhancerBySpring 확인 법??
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]17:20 부분에 보면 EnhancerBySpringCGLIB 어쩌구 이렇게 나온다는데프록시로 쓰인다는건 AopCheck Test를 통해서 볼 수도 있고, Assertions로도 확인이 가능한데 저는 로그가 좀 다르게 나옵니다. 다르다기 보다는 19:30:47.432 [Test worker] INFO h.jdbc.service.MemberServiceV3_3Test -- memberService class=class hello.jdbc.service.MemberServiceV3_3$$SpringCGLIB$$0 라고 나오는데, 혹시 EnhancerBySpring~ 이 부분은 어디서 확인이 가능할까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
커리큘럼 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 커리큘럼 관련 질문은 어디에 남겨야 좋을지 모르겠어서 여기에 남기게 됐씁니다 ㅠㅠ 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? [질문 내용]안녕하세요! 평소에 강의 너무 잘 듣고 있습니다! 데이터베이스 강의가 다양해서 좋지만 ! 순서가 고민돼서 질문드립니다. 저는 신입 또는 저년차 개발자로 입사하고 싶습니다! 기본적인 SQL 쿼리는 작성할 수 있습니다. 현재 자바, 스프링 핵심원리 기본, 스프링 MVC1 강의 들었습니다. 1. 데이터베이스 강의 순서 추천: 김영한의 실전 데이터베이스/ 스프링 DB/ 자바 ORM 표준 JPA 프로그래밍/ 실전! 스프링 데이터 JPA 등 다양한 데이터베이스 강의 중 어떤 순서로 학습하면 좋을까요? 2. 스프링 관련 강의 추천: 위에서 추천해주실 데이터베이스 강의와 함께 스프링 MVC2/ 스프링부트/ 스프링부트와 JPA 활용 강의 중 어떤 강의 수강하는 것이 좋을지도 추천 부탁드립니다!
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
서비서 계층 스프링 프레임워크 사용
이번 강의 코드에서 서비스 계층 코드인 MemberServiceV3_1 에서 PlatformTransactionManager 같은 스프링 프레임 워크를 사용하고 있는데요,이전 강의에서 프레젠테이션 계층, 서비스 계층, 데이터 접근 계층에 대해 설명하실 때서비스 계층에서는 순수 자바 코드로 작성해야한다고 하셨는데요.MemberServiceV3_1 에서 몇몇 코드가 스프링 프레임워크인데 이런 것은 정말 필요에 의해서 사용하는 것이므로 어쩔 수 없는 부분인가요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
validation(toMember)의 위치
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 강의 수강 중 질문이 생겨 여쭤봅니다. MemberServiceV1에서 memberRespository.update(fromId, fromMember.getMoney() - money); validation(toMember); memberRespository.update(toId, toMember.getMoney() + money); 해당 코드가 있습니다. 트랜잭션을 사용하지 않아서 테스트 코드에서 예외가 발생하며 memberA는 8000원, memberEx는 10000원이 된다고 말씀하셨는데, 근본적인 원인은 validation(toMember); 의 위치 문제가 아닐까 생각이 드네요 ..! validation(toMember); memberRespository.update(fromId, fromMember.getMoney() - money); memberRespository.update(toId, toMember.getMoney() + money); 이렇게 순서를 바꾸면 검증을 먼저 수행하고 이체를 하니 테스트 코드에서 둘 다 1만원으로 변동이 되지 않던데, 단순히 트랜잭션 이해를 위한 설명으로 생각하면 될지 싶어 여쭤봅니다 !
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
데이터 계층에서 서비스 로직의 datasource를 인식하는 방법
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]1. MemberServiceV3_1 서비스 로직에서 트랜잭션만 가져오고 TCL만 하는 상태에서 MemberRepositoryV3 데이터 계층에서 getConnection() 할 때 서비스 로직의 트랜잭션과 동일한 커넥션인지 어떻게 판단하는지?커넥션 풀 생성 트랜잭션 동기화 매니저에서 확인하고 가져오는건 알겠는데 어떻게 비즈니스 로직이의 트랜잭션의 커넥션인지?
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
member 상수 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요.17: 58초에 나오는 MEMBER_A,B,EX 상수들질문입니다.영상처럼 상수에 값을 넣고 @AfterEach에 넣어주셨는데 @AfterEach void after() throws SQLException { memberRepository.delete("memberA"); memberRepository.delete("memberB"); memberRepository.delete("ex"); }이것처럼 직접 값을 넣어주게 되도 동작을 동일하게 진행되는데 상수 지정을 하지 않고 이런 식으로 값을 넣어주게 되면 문제가 생길 수 있을까요?
-
해결됨스프링 DB 1편 - 데이터 접근 핵심 원리
ctrl + F6 이후로 con 인식이 안 됩니다
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]제목 그대로 ctrl + F6 이후로 con 인식이 안됩니다.그래서 새로 다시 코딩을 해봐도 안되고 강의 PDF에 있는걸로 복사해서 바꿔봐도 안 됩니다. 복사 이후로는 다른 memberRepository 나 fromId 등 인식이 다 안되서 여쭤봅니다. 프로젝트 압축 파일 링크입니다https://drive.google.com/file/d/1WsWLpkTaAFSYKr7sL7V1mzXDqmoR6bhL/view?usp=drive_link
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
DrivenManager 와 Connection 반환에 대한 질문입니다!
커넥션을 요청하고 반환받는건 서버와 DB 사이의 작용이라고 생각해서 커넥션 구현체를 클라이어트에 반환한다는 부분이 이해가 잘 안 갑니다! 클라이언트라는 단어가 단순히 웹 클라이언트로 쓰이는 것뿐만 아니라 요청하는 쪽을 지칭할 때 쓰는거라고 보면 될까요? 여기선 애플리케이션 로직 즉, Connection 객체를 사용하는 저의 애플리케이션 코드를 의미하는 걸까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
섹션5 트랜잭션 템플릿관련 질문(이기종 DB)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요트랜잭션 템플릿은 하나의 DBMS 에서의 계좌이체 트랜잭션에서만 사용할 수 있을것 같은데요 맞을까요?만일 2개의 DBMS 에서 원자성을 지키려면 어떻게 해야될까요?시나리오는 ㅇ db 1 : 데이터 갱신ㅇ db 2 : 데이터 갱신ㅇ db 1 : 데이터 갱신 이고 3번째 스텝에서 exception 이 발생하면 어떻게 되나요?감사합니다
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
세션1 테이블 조회결과 그림은 Redo 로그에 속하나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 항상 좋은 강의 감사드립니다! 강의에 [섹션4] 에서 나오는 강의 자료에서 그림부분에 [세션1 테이블 조회결과]라는 그림이 있는 부분이 있는데 이 부분이Redo 로그에 속하나요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
트랜잭션이 필요하지 않은 경우 DB 대신 파일 시스템을 사용하는 것이 더 효율적인가?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 매번 좋은 강의 감사드립니다.강의에서 db 를 사용하는 가장 대표적인 이유가 트랜잭션 사용이라 언급을 해주셨는데 그럼 트랜잭션이 필요하지 않는 상황이라면 다른 구조를 사용하는게 더 효과적일까요? 만약 파일로 저장을 하게 된다면 더 빠른가요? db 는 트랜잭션을 보장하기 때문에 추가적인 작업이 더 들어가기 때문에 insert update 가 파일에 비해 무거울까요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
강의 14분쯤 Exception 질문
[질문 내용]안녕하세요. 강의 14분쯤에,@Test 부분에서 .isInstanceOf(SQLException.class)를 했을 때, 테스트가 성공하는 이유가 궁금합니다.저는 ConnectException과 SQLException이 서로 관련이 없는 Exception이기 때문에 테스트가 실패해야 한다고 생각했습니다.혹시 Service의 logic()에서 repository.call()이 호출 될 때 SQLException이 터지고, 그로 인해서 networkClient.call()은 실행되지 않고 끝나기 때문에 테스트가 성공하는건가요?