========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 궁금증이 생겨서 질문을 드립니다. 현재 듣고 있는 "트랜잭션 -개념 이해" 에서 격리수준에 대해서 설명할때 일반적으로 "READ COMMITTED"을 사용하고 이것에 대해서 설명한다고 했습니다. "db - 기본 -11번 트랙잭션" 편에서 격리 수준을 설명 할때, 사진을 보면 이렇게 격리 수준이 "REPEATABLE READ"로 바뀌어져 있는데요. 그래서 궁금증은 지금 백엔드 개발을 한다면, "REPEATABLE READ" 이게 맞는 건가요? 아니면 "READ COMMITTED" 이게 맞는 건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요. spring db 1편 들으려 하는데 초기 설정이 강의랑 많이 다르네요 Gradle groovy, Gradle kotlin Spring boot (4.05 vs 3.5.13) java 21 vs 17 등 어떤 것을 선택해야할지 모르겠어요
체크 예외의 경우는 그냥 커밋한다고 하는데, 혹시 그 이유가, 체크 예외는 어차피 예외 처리가 강요 되는 예외라, 코드에서 외부적으로 try - catch 형태로 처리되는 부분이기 때문에, 굳이 트랜잭션 템플릿에서는 별도로 롤백처리를 안하는 걸까요? 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.
서비스 계층을 순수한 비즈니스 로직만 남도록 하고, 특정 기술에 의존하지 않도록 하는 과정을 배우면서 많은 영감을 얻었습니다! 그런데, @Transactional은 과연 순수한가 하는 의구심이 듭니다. 내부 코드에서는 깔끔하게 지웠지만, 순수한 자바 환경에서는 여전히 특정 예외상황에서 불완전하게 동작하고, 어노테이션을 통해 프록시 기술에 의존하게 되는데요. 테스트 시에도 순수한 자바테스트가 아니라 스프링 컨테이너에서 관리되도록 해야하니 순수하지 않다고 느껴집니다. 이런건 트랜잭션을 순수한 자바코드만으로 깔끔하게 구현하기 어렵기때문에 현실적으로 타협한건가요? 여전히 찝찝한 마음이 남아있습니다 ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 테스트를 돌리는 과정 속에서 자꾸 h2 디비로 접속하지 못하고 새로운 메모리 테이블로 접근하는 거 같습니다. 3_3테스트까지는 문제없이 작동이 되는데 자동 리소스 등록을 하는 부분부터 문제가 생겨요. 다운 받은 예제를 돌릴 때는 또 제대로 실행이 되는데 이거 왜 이러는 걸까요
안녕하세요. 정말정말 왕초보인 수강생입니다. 강의 대로 진행중인데 어찌해야 할지 몰라 문의드립니다. 11강 프로젝트 생성의 3:54에서 부터(cmd -> spring shell -> $ init) 저는 아래와 같이 에러메세지가 뜹니다. 이걸 어떻게 해결해야 할지 감 못 잡고 있습니다. ㅜㅜ -- Using service at https://start.spring.io Failed 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버전을 설치했고 IntelliJ java는 21버전 설치 spring initializr에서 스프링부트 3.5.6 버전으로 템플릿 받아둔 상태입니다. 환경변수 JAVA_HOME, SpringBoot_Home 셋팅해두었습니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 강의 수강전 질문 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 스프링 DB를 듣기전에 데이터베이스에 대한 공부를 하고 해당 강의를 수강하라고 하셔서 강사님의 최신 데이터베이스 강의를 수강중입니다. 해당 강의에서는 MySQL을 사용중인데 이 데이터베이스를 사용해서 스프링 DB 강의를 수강할 수 있을까요? 아니면 H2데이터베이스를 별도로 추가 다운로드 해야할까요?
[1줄 질문] after 메서드 로직을 테스트에 바로 적는 것도 보편적으로 사용하는 방법일까요? [설명] 테스트를 실행한 후, after 메서드로 memberA, memberB, ex 객체 값을 삭제하여 다음 테스트 실행할 때 데이터 충돌을 방지하는 것으로 이해했습니다. after 메서드를 실행할 때마다 테스트에서 생성 자체가 되지 않은 객체 또한 삭제되는 경우가 있는데, 이런 경우에는 after 메서드 대신 테스트 후(then 로직 종료 후) 바로 삭제하는 로직을 추가하는 것이 좀 더 빠르지 않을까 생각해보았습니다. 물론 after 메서드를 사용하는 것은 중복 로직을 줄이기 위함도 있겠지만, 지금과 같은 경우에는 테스트 내에서 삭제 로직까지 추가하는 것은 보편적인 방법이 아닌지 궁금합니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 데이터 베이스 접근 및 DB 락에 대해서 학습을 하면 " 동시성 이슈 " 그리고 " 트랜잭션 격리성 " 에 대한 전반적인 DB Lock 이슈 관리에 도움이 될까요??
아직 스프링부트 강의까지는 수강하지 못해서 남기는 질문입니다. 만약 프로젝트가 처음부터 스프링부트 환경이라고 한다면 별도로 @SpringBootTest 같은 애노테이션은 사용하지 않아도 되나요? @TestConfiguration의 경우에 꼭 내부 클래스로만 사용해야하나요?
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 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~ 이 부분은 어디서 확인이 가능할까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 커리큘럼 관련 질문은 어디에 남겨야 좋을지 모르겠어서 여기에 남기게 됐씁니다 ㅠㅠ 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? [질문 내용] 안녕하세요! 평소에 강의 너무 잘 듣고 있습니다! 데이터베이스 강의가 다양해서 좋지만 ! 순서가 고민돼서 질문드립니다. 저는 신입 또는 저년차 개발자로 입사하고 싶습니다! 기본적인 SQL 쿼리는 작성할 수 있습니다. 현재 자바, 스프링 핵심원리 기본, 스프링 MVC1 강의 들었습니다. 1. 데이터베이스 강의 순서 추천: 김영한의 실전 데이터베이스/ 스프링 DB/ 자바 ORM 표준 JPA 프로그래밍/ 실전! 스프링 데이터 JPA 등 다양한 데이터베이스 강의 중 어떤 순서로 학습하면 좋을까요? 2. 스프링 관련 강의 추천: 위에서 추천해주실 데이터베이스 강의와 함께 스프링 MVC2/ 스프링부트/ 스프링부트와 JPA 활용 강의 중 어떤 강의 수강하는 것이 좋을지도 추천 부탁드립니다!
이번 강의 코드에서 서비스 계층 코드인 MemberServiceV3_1 에서 PlatformTransactionManager 같은 스프링 프레임 워크를 사용하고 있는데요, 이전 강의에서 프레젠테이션 계층, 서비스 계층, 데이터 접근 계층에 대해 설명하실 때 서비스 계층에서는 순수 자바 코드로 작성해야한다고 하셨는데요. MemberServiceV3_1 에서 몇몇 코드가 스프링 프레임워크인데 이런 것은 정말 필요에 의해서 사용하는 것이므로 어쩔 수 없는 부분인가요?
[질문 템플릿] 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만원으로 변동이 되지 않던데, 단순히 트랜잭션 이해를 위한 설명으로 생각하면 될지 싶어 여쭤봅니다 !
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 1. MemberServiceV3_1 서비스 로직에서 트랜잭션만 가져오고 TCL만 하는 상태에서 MemberRepositoryV3 데이터 계층에서 getConnection() 할 때 서비스 로직의 트랜잭션과 동일한 커넥션인지 어떻게 판단하는지? 커넥션 풀 생성 트랜잭션 동기화 매니저에서 확인하고 가져오는건 알겠는데 어떻게 비즈니스 로직이의 트랜잭션의 커넥션인지?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 17: 58초에 나오는 MEMBER_A,B,EX 상수들 질문입니다. 영상처럼 상수에 값을 넣고 @AfterEach에 넣어주셨는데 @AfterEach void after() throws SQLException { memberRepository.delete("memberA"); memberRepository.delete("memberB"); memberRepository.delete("ex"); } 이것처럼 직접 값을 넣어주게 되도 동작을 동일하게 진행되는데 상수 지정을 하지 않고 이런 식으로 값을 넣어주게 되면 문제가 생길 수 있을까요?
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 제목 그대로 ctrl + F6 이후로 con 인식이 안됩니다. 그래서 새로 다시 코딩을 해봐도 안되고 강의 PDF에 있는걸로 복사해서 바꿔봐도 안 됩니다. 복사 이후로는 다른 memberRepository 나 fromId 등 인식이 다 안되서 여쭤봅니다. 프로젝트 압축 파일 링크입니다 https://drive.google.com/file/d/1WsWLpkTaAFSYKr7sL7V1mzXDqmoR6bhL/view?usp=drive_link