7분 08초 정도에 회원가입 테스트 코드를 실행하는 부분에서요,,! MemberServiceTest 클래스에 @Transactional을 걸어서 회원가입() 메소드를 하나의 트랜잭션으로 관리하는 것으로 이해했습니다... memberService.join(member); 으로 persistence context에 member를 영속화 시킨 상태인데, 그 다음 코드인 memberRepository.findOne(savedId);에서, 왜 select 문이 나가는거죠? 하나의 트랜잭션이고, member가 영속 상태라서 1차 캐시에서 관리되면, context에서 가져와야 하는게 아닌가요?... 트랜잭션을 롤백한다는 것의 의미가 DB의 트랜잭션을 롤백한다는 것 뿐만 아닌 영속성 컨텍스트도 롤백하는 것을 의미하나요?.. 만약 그렇다면, 저는 @Transactional을 메소드 단위로 걸었는데, 왜 회원가입() 메소드 중간에 롤백이 되는 건가요?..ㅠ 아예 애초부터 스프링에서의 트랜잭션 롤백은 영속성 컨텍스트에 반영조차 하지 않는 거라고 봐야 하나요?.. 너무 헷갈립니다 ㅠ.ㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx ) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG ) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. JUnit5를 사용하여 테스트 코드를 작성 중인데, JUnit4와는 다르게 @Test(expected = ) 사용이 불가하더라고요. 다음과 같이 테스트 코드를 작성하면 될까요? @Test public void 중복_회원_예약() throws Exception { //given Member member1 = new Member(); member1.setName("kim"); Member member2 = new Member(); member2.setName("kim"); //when memberService.join(member1); assertThrows(IllegalStateException.class, () -> { memberService.join(member2); }); }
좋은 강의 잘 듣고있습니다!! 혹시 타이타닉 예제에서 Pclass 가 상관관계가 낮다고 표현하셨는데, 음의 상관관계도 절대값이 높으면 상관관계가 짙은거 아닌가하는 궁금증이 듭니다!!! survived 에 미치는 영향을 상관관계라고 하는것이라 한다면 양수 > 음수 측면이아니라 절대값으로 판단하여 SibSp 가 상관관계가 낮다고 봐야하는거 아닌가요!! 헷갈려서 질문드립니다
안녕하세요 강사님! 우선 양질의 강의 잘 듣고 있다는 말씀 드리고 싶습니다. Spring Security 에서 AuthenticationProvider 를 찾아서 인증을 위임하는 역할을 수행하는 ProviderManger 도 옵저버 패턴을 사용하고있다고 볼 수 있을까요? ProviderManager (AuthenticationManager) 에서 AuthenticationProvider 들을 가져온후 이들을 순회하며 인증위임을 시키는 코드입니다 단순히 supports() 를 통해 인증을 위임시킬 AuthenticationProvider 들을 골라내는 것뿐, 이것도 옵저버 패턴이 적용된 예인지 알고 싶습니다.
좋은 내용 감사합니다. 프롬프트 내용중에 "Translate Into Korean~" 이라는 내용으로 답변을 한글로 받게 됩니다. 혹시 [events] 밑에 오는 사용자 입력값과 동일한 언어로 결과를 받고 싶다면 어떻게 작성하면 될까요? 강의 내용을 기준으로 다국어 서비스를 만들려고 하는데, 영어가 짧아서 질문 드려요
안녕하세요 현재 프로젝트 세팅 및 테스트를 진행 중입니다. spring boot가 3이상으로 제한된 상황속에서 진행중이며, 강의 내용을 따라하고 있습니다! build.gradle은 https://docs.google.com/document/d/1j0jcJ9EoXMGzwAA2H0b9TOvRtpwlxI5Dtn3sRtuXQas/edit#heading=h.vfy9wirpglmx 를 복/붙 하였습니다. plugins { id 'java' id 'org.springframework.boot' version '3.2.0' id 'io.spring.dependency-management' version '1.1.4' } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' //test 롬복 사용 testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' //Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') } 질문은 크게 3가지입니다. build/other/compileQuerydsl은 표기가 안되는데 다른 답변을 보니 springboot3으로 올라가며 compileQuerydsl은 표기가 안된다고 하신 것 같은데 맞을까요? 정확한 Q파일의 생성 위치가 궁굼합니다.! 강의상에서는 src/main에 둬도 괜찮지만, 버전관리 시스템(git)에는 추가 되지 않는게 좋다고 하셨던 것 같은데 맞나요? build에만 Q파일이 생성되는게 좋나요? 올려주신 google doc의 build.gradle로 진행하면, Q파일이 build/annotationProcessor아래 생성됩다... 뭐가 문제일까요? docs에 올려주신 build.gradle에서 build clean을 진행할 때 'src/main/generated'의 폴더를 삭제하는 이유가 무엇일까요? (현재 저는 Q파일을 build/ 아래 관리하고있는데, src/main/generate 아래 Q파일을 생성하시는 분들에만 해당 되는 내용인가요?) 답변해주시면 감사하겠습니다!
@JoinColumn(name = "MEMBER_ID) List<AddressEntity> addressHistory = .. 다대일이 아닌 일대다로 매핑한 이유가 있을까요? 앞에서 다쪽에 @JoinColumn하는 것을 추천하셨는데 일쪽에 연관관계 주인을 잡은 이유가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 제 프로젝트 압축파일입니다. https://drive.google.com/file/d/1CsFmsNczcupxGIQTMM_-uA7EQFzu3KRq/view?usp=sharing JpaMain에서 Movie movie = new Movie(); movie.setDirector("aaa"); movie.setActor("asdf"); movie.setName("바람과 함께 사라지다"); movie.setPrice(10000); em.persist(movie); em.flush(); em.clear(); 에 의해 movie가 insert되어야하는데 실제로 데이터베이스의 MOVIE테이블을 조회해보면 아무것도 없습니다. 그리고 아래와 같은 에러로그가 뜨는데 어떻게 해야할지 모르겠어서 질문드립니다! https://drive.google.com/file/d/1YCpr2ZBFSC84lw3wvn5wks22DVx1GHAM/view?usp=sharing
안녕하세요. 라인 여러 줄 복사할 때 범위 지정 후 ctrl d 하는 거는 이해했는데 라인 맨 앞으로 이동 후 범위 지정할 때는 어떻게 쓰나요? 이전 영상에서 설명해 주셨는데 따로 필기 안 하고 지나가서 찾아보려니까 못 찾겠네요ㅜㅜ 윈도우 기준 home 키 써서 라인 맨 앞으로 간 다음에 ctrl w 하신 건가요? 영상 보니 라인 전체 복사가 한 번에 이루어지는 것 같아 궁금해서 질문 남겨 봅니다. 미리 답변 감사합니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Traceback (most recent call last): File "C:\Users\lyl89\anaconda3\Lib\site-packages\notebook \traittypes.p y", line 235, in _resolve_classes klass = self._resolve_string(klass) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lyl89\AppData\Roaming\Python\Python311\site-packages\traitl ets\traitlet s.py", line 2018, in _resolve_string return import_item(string) ^^^^^^^^^^^^^^^^^^^ File "C:\Users\lyl89\AppData\Roaming\Python\Python311\site-packages\traitlets \utils\importst ring.py", line 31, in import_item module = __import__(package, fromlist=[obj]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ModuleNotFoundError: No module named 'jupyter_server.contents' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\lyl89\ana conda3\Scripts\jupyter-not ebook-script.py", line 10, in sys.exit(main()) ^^^^^^ File "C:\Users\lyl89\AppData\Roaming\Python\Python311\site-pack ages\jupyter_c ore\application.py", line 280, in launch_instance super().launch_instance(argv=argv, **kwargs) File "C:\Users\lyl89\AppData\Roaming\Python\Python311\site-packag es\traitlets\c onfig\application.py", line 1051, in launch_instance app = cls.instance(**kwargs) ^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lyl89\AppData\Roaming\Python\Python311\site-pac kages\traitlets \config\configurable.py", line 583, in instance inst = cls(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\lyl89\AppData\Roaming\Python\Python31 1\site-packa ges\traitlets\traitlets.py", line 1294, in __new__ inst.setup_instance(*args, **kwargs) File "C:\Users\lyl89\AppData\Roaming\Python\Python 311\site-pac kages\traitlets\traitlets.py", line 1337, in setup_instance super(HasTraits, self).setup_instance(*args, **kwargs) File "C:\Users\lyl89\AppData\Roaming\Python\Pyth on311\site-p ackages\traitlets\traitlets.py", line 1313, in setup_instance init(self) File "C:\Users\lyl89\anaco nda3\Lib\site -packages\notebook\traittypes.py", line 226, in instance_init self._resolve_classes() File "C:\Users\lyl89\ana conda3\Lib\si te-packages\notebook\traittypes.py", line 238, in _resolve_classes warn(f"{klass} is not importable. Is it installed?", ImportWarning) TypeError: warn() missing 1 required keyword-only argument: 'stacklevel' 이런 오류가 떠요ㅠㅠ 어떻게 해결할 수 있을까요?
Jupyter command jupyter-contrib not found. 지금 이 오류가 떠서 설치가 안되고 있는데요. 어떻게 해결해야 할까요?? 제가 봤을땐, pip install jupyter_contrib_nbextensions 이 부분은 실행이 되는데 jupyter contrib nbextension 이 부분에서 오류가 생기는 것 같습니다. ㅠㅠ
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. V3.1 실행 후 콘솔창에 뜨는 쿼리문이 다음과 같이 뜹니다. springboot version 3.2.1 이고 Hibernate5JakartaModule로 설정했습니다. application.properties 도 아래와 같이 설정했습니다. 그외 부분도 강사님 코드를 그대로 복붙해도 다음과 같이 물음표가 너무 많이 뜨는데 버전 문제인건가요?
따라하며-배우는-노드-리액트-쇼핑몰 > 쇼핑 카트 페이지 데이터 가져오기 강의를 수강중에 있습니다. 17:30 부근에 제품을 배열로 다시 재정리 해주는 걸 설명해주고 계시는데 split 후에 map을 하는 이유가 궁금합니다. 값을 map 처리하기 전후로 찍어보니 값이 동일하게 나오는데 map 처리를 해주는 이유가 따로 있나 싶어서 여쭤봅니다.
안녕하세요 강의 정말 잘 듣고 있습니다. 해당 강의를 듣는중 궁금한점이 생겨서 질문 드립니다. 제가 원래 java/spring을 공부하다가 이번에 프론트 엔드쪽에 관심이 생겨서 React를 학습중인데 ide에서는 .js 파일을 Import할때 뒤에 왜 자동으로 .js가 안붙도록 되어있나요? 저는 강사님과 다른 ide를 사용중인데도 여기서도 .js가 자동으로 붙지 않습니다. import React from "react"; import Header from "./components/Header.js"; import KeywordList from "./components/KeywordList.js"; import SearchForm from "./components/SearchForm.js"; import SearchResult from "./components/SearchResult.js"; import Tabs, { TabType } from "./components/Tabs.js"; import store from "./Store.js"; 제가 추측한건데 React를 import 하는 경우에는 react 파일이 typeScript로 되어있고 나머지 경우는 전부 javaScript로 되어있습니다. 따라서 기본이 .ts로 설정 되어 있어서 javascript파일은 별로로 명시해줘야 찾을 수 있게 되어 있다고 생각이 듭니다. 별로 의미없는 질문이지만 궁금해서 질문 드립니다. 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 강의에서(12:00부분) 참조값만 복사하고 인스턴스를 복사하는 것이 아니라는데, 결국 같은 인스턴스를 접근하게 되잖아요 그러면 위 뜻이 인스턴스가 동일해지는 것은 맞지만, 참조값을 복사하는 것이지 인스턴스를 복사하는 것이 아니라서 잘못 인지하지 말라는 뜻인가요? 아니면 인스턴스가 달라서 참조값만 복사한 것이기에 인스턴스를 복사하는 것이 아니라는 뜻인가요? Data dataA = new Data(); // 1.Data인스턴스 생성후 dataA에 참조값 넣음 dataA.value = 10; Data dataB = dataA; // 2.dataA 참조값을 복사하고 대입함 System.out.println("dataA.value = " + dataA.value); // 10 System.out.println("dataB.value = " + dataB.value); // 10 // 3.dataB는 dataA의 인스턴스에 동일하게 접근하게됨
서버 컴포넌트가 프론트 서버에서 미리 렌더링되는 것으로 알고 있었습니다. 이것이 맞을까요?? 클라이언트 컴포넌트랑 서버 컴포넌트의 렌더링 방식을 찾아봤음에도 여전히 헷갈리는데 시간적 여유가 되신다면 쉽게 알려주실 수 있을까요?? 클라이언트 컴포넌트 사이에 서버 컴포넌트를 넣으면 렌더링 동작이 어떻게 수행되는지 궁금합니다. 강좌에서는 PostArticle이라는 클라이언트 컴포넌트의 자식으로 서버컴포넌트를 넣는데, 공식문서에서는 클라이언트 컴포넌트가 DOM Tree의 끝에 오도록 하는 것을 권장하는 것으로 알고 있었는데 제가 잘못 알고 있던 것이었을까요??
[질문 내용] 안녕하세요!! 우선 좋은 강의 만들어주셔서 너무 감사합니다! 이번 강의도 정말 잘 들었습니다!! 저는 자바 입문, 실전 자바 기본편을 듣고 이번 스프링 입문 강의를 완강했습니다. 이전에는 자바에 대해 책으로 공부하고 강의를 통해 이해하는데 큰 어려움이 없었지만 스프링은 처음이라 많이 헤매는 느낌을 받습니다. 궁금한 점은 헤매는 느낌을 받는 이유는 자바에 대한 이해가 부족해서 인지 스프링에 대한 이해가 부족해서 인지 알고싶습니다. 또한 제 계획은 24년도 상반기에 나올 자바 중급,고급 강의를 듣고 스프링 완전정복 강의를 듣고 토이프로젝트를 통해 실력을 향상시키는 것이 목표입니다. 이 방향성이 괜찮은지 아니면 어떤 방향으로 나아가야하는지 조언 부탁드립니다.!! 처음 자바를 공부하고 너무나도 헷갈리고 어려운 순간들이 많았는데 김영한 선생님의 강의를 듣고 나름대로 발전한 것 같아서 항상 감사하고 있습니다. 양질의 강의를 제공해주셔서 감사합니다 !! 24년도 잘 부탁드립니다!!