묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
트랜잭션 ReadOnly 컨트롤 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]Transaction을 어노테이션으로 설정하는 방법 중에 궁금한 점이 있습니다.트랜잭션으로 선언하지 않은 메소드에서 트랜잭션로 선언한 내부 메서드를 불러오는 경우 AOP를 통하지 않기 때문에 @Transactional이 적용되지 않는다는 것은 이해하였습니다. 그리고 이 문제를 해결하기 위해 Class를 분리하여 주입해주는 방법으로 Proxy 클래스에서 메서드를 가져오는 것도 확인하였습니다.확인을 위해 테스트를 작성하던 중 ReadOnly관련해서 질문이 생겼는데요.트랜잭션을 ReadOnly를 True로 선언한 첫 번째 메서드에서 ReadOnly를 False로 선언한 두번째 메서드를 부룬뒤, 트랜잭션 매니저의 isCurrentTransactionReadOnly가 True에서 False로 변경되지 않을까 하였는데요.생각과는 달리 변경되지 않는 것을 확인하였습니다.이런 경우에는 첫번째 트랜잭션으로 이미 감싸져 있는 상태이기 때문에 두번째 트랜잭션이 무시된 것일까요?그리고 TransactionSynchronizationManager.setCurrentTransactionReadOnly 메서드를 통해 ReadOnly의 속성을 변경할 수 있는 것을 확인하였는데, 실무에서 이렇게 TransactionSynchronizationManager를 통해 속성을 변경하여 사용하는 경우가 있을까요?readOnly로 하여 많은 데이터를 가져온 후, 결과를 입력하는 경우에 데이터를 readonly로 가져오는 것이 빠르기도 하고 전체 프로세스를 같은 트랜잭션을 사용해 조금 유용하지 않을까 하여 질문드립니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
form-start과녈ㄴ하여 여쭙습니다.,
안녕하세요.Form start를 처음 시작하는데 있어 어려움이 있어서 여쭙습니다.강의 목차 상에서 소스코드 다운mvc2_source_v20210624\__MACOSX\mvc2\form-start 해당 경로 파일에서build,gradle 파일이 아닌가요여러차례 오픈해보았는데 하기와 같은 화면만 조회되고 프로그램이 실행되지 않아서 여쭙습니다.. ㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
tipp) css 적용 안되시는분들
boot strap 사이트에서 css js 폴더 복붙했는데 안되시면 (버젼 문제일수 있다고 해요) 해결 방법은 다음과 같습니다. 방법:강의 자료에서 코드 다운 받고 아래 폴더에서css jss 폴더 찾으신다음 그대로 static 에 복붙하고reload disk 한번 해주시면 될거에요 ex)jpashop-v20210728\src\main\resources\static
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
datasource를 썼을 때 jdbc 인터페이스는 어느 위치에 들어가나요?
"jdbc인터페이스"를 쓰면 아래와 같이 연결이 되고애플리캐이션로직jdbc인터페이스mysql드라이버mysqlDB "datasource"를 쓰면 아래와 같이 연결이 되는데애프릴캐이션로직Datasource커넥션풀DBdatasource를 썼을 때 jdbc 인터페이스는 어느 위치에 들어가게 되나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
label, page, button등에 대한 질문이 있습니다.
label이라고 해주는 기준이나,page라고 해주는 기준이나,button의 기준을 모르겠습니다.단순 명시상인건지, button이면 button.save라고 해줘야 하는지요?또한 label.item.itemName처럼 .[온점]을 두 번이나 찍었는데, 이 .찍는 기준이 어떻게될까요?ㅠ
-
미해결스프링 기반 REST API 개발
maven으로 생성한 docs파일(index.html)에서의 not found 오류 질문
안녕하세요. 백기선님 강의 덕분에 성장 중입니다. 강의 항상 감사합니다. 다름이 아니라, 인텔리제이의 maven 메뉴에 있는 package로 생성된 index.html 에 있는 내용들이not found operator:: 라면서 오류가 납니다.pom.xml, test에 있는 createEvent(), EventController 에서 틀린 부분이 있는지 찾아봤는데도 분명 소스는 같은데 왜 틀리는지 잘 모르겠습니다.제가 아직 not found operator:: 이 부분이 무슨 뜻인지 몰라서일까요...테스트는 일단 잘 돌아갑니다(?)현재 사용 중인 버전은아파치 메이븐 3.8.1 (약 2018년 버전으로 예상)스프링 부트 2.6.13입니다. 도와주시면 감사드리겠습니다🙇♂️소스는 링크로 걸어놓겠습니다. (pom.xml 외 다른 소스들은 실습 중이라 달라질 수 있습니다)EventControllerhttps://github.com/intrager/Spring-STUDY2/blob/main/restfulHan/src/main/java/me/brucehan/restfulhan/events/EventController.java RestDocsConfigurationhttps://github.com/intrager/Spring-STUDY2/blob/main/restfulHan/src/test/java/me/brucehan/restfulhan/common/RestDocsConfiguration.java EventControllerTestshttps://github.com/intrager/Spring-STUDY2/blob/main/restfulHan/src/test/java/me/brucehan/restfulhan/events/EventControllerTests.java pom.xmlhttps://github.com/intrager/Spring-STUDY2/blob/main/restfulHan/pom.xml index.adochttps://github.com/intrager/Spring-STUDY2/blob/main/restfulHan/src/main/asciidoc/index.adoc
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티나 임베디드 타입 개발
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 자료에 JPA 스펙상 엔티티나 임베디드타입은 자바 기본 생성자를 public 또는 protected로 설정해야 한다고 나와있습니다. 그리고 protected로 설정하는 것을 추천해주셨는데요. 쉽게 말해서 모든 엔티티나 임베디드타입을 개발할때 @NoArgumentConstructor를 넣어주면 괜찮을까요?
-
해결됨스프링 핵심 원리 - 기본편
getBeansOfType 자동완성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]스프링 빈 조회 - 상속관계에서 코딩 따라하는 중에,getBeansOfType 을 치고 안에 ~.class 를 입력하면 Map<String, ~> ... 와 같은 부분이 자동 입력되는 것을 보았습니다. 하지만 제가 동일하게 작업하면 아무리해도 자동입력이 되지 않아 계속 일일이 손으로 코딩하고 있습니다. 혹시 방법이 있는건지 알고싶습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
memberRepository과 itemRepository의 차이
관련질문을 봐도 이해가 안가 질문드립니다.itemRepository.getid를 하는데 어떻게 null값이 들어있을 수 있는지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
service와 entity 서비스 로직 질문
addStock함수가 entity안에 있어 응집력이 좋아진다는 설명은 이해가 되었습니다. 그런데 어쩔때는 entity에 있어야 되고 어쩔때는 service에 작성해야하는지 그에 대한 기준을 잘 모르겠습니다.
-
미해결스프링 핵심 원리 - 기본편
면접에서 DI가 뭐냐고 물어보면 어떻게 대답하죠?
어떤 클래스가 인터페이스에 의존하고 있을 때 어떤 구현객체를 주입할지는 오직 외부의 설정에서 결정되는 것을 의미합니다. 라고 대답하면 될까요 ㅠㅠ?코드로는 이해가 어느 정도 된 거 같은데 말로 설명하려 하니 어렵네요 ....
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
강사님 스프링 데이터 JPA에 대해 질문있습니다.
안녕하세요 강사님 항상 강의 잘 보고 복습하고 있습니다.다름이 아니고 책 463p중에 find() VS JPQL이라는 목차가 있습니다.그리고 이번 회차에서 설명하진 스프링 데이터 JPA를 듣고, 궁금한점이 생겨서 질문드립니다.책 545p중 '스프링 데이터 JPA는 메소드이름을 분석해서 JPQL 생성하고 실행한다' 라고 하셨으니 그럼 JpaRepository를 상속받은 Repository에 만든 모든 메소드는 먼저 영속성컨텍스트를 확인하지 않고 DB의 sql를 보낸 뒤 결과값을 영속성컨텍스트에 존재하는지 비교하는게 맞나요?스프링데이터 JPA의 사용을 적극 권장한다는 문구도 책에 있어서, 그렇다면 강사님은 따로 em을 필드선언후 find하는 경우는 없으신가요? 있다면 em하고 Repository도 동시에 필드생성해서 사용하는 상황은 어떤경우일까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
memberrepository와 memorymemberrepository의 관계
두 파일 사이의 관계가 잘 이해가지 않습니다.MemberRepository 에 interface만 생성한 후 구체적인 함수는 MemoryMemberRepository 에 구현하는 건가요?왜 같은 내용을 다른 파일에 저장하는지 잘 모르겠습니다.
-
미해결스프링 시큐리티 OAuth2
restfual api 개발할때
안녕하세요 선생님. 지금가지 선생님의 강의를 바탕으로 oauth 를 사용하는 프로젝트를 구축하는데 있어 궁금점이 생겨 질문드립니다.소셜로그인 인증 챕터 부분에서는 전형적인 session 인증 방식인데 restful api 서버 개발시에는 어떻게 설정해야할까요? 대안으로 찾아본바 successHandler 를 커스텀하게 설정하여 jwt 로 암호화해서 서버 api로 리다이렉트 시 쿼리파라미터에 jwt를 넣어 프론트에게 jwt 를 전달하는데 이 방식이 맞나요?또한 강의에서 restfual api 에 대해 다루신다면 어느 챕터에서 확인할 수 있을까요?
-
미해결스프링 핵심 원리 - 기본편
solid 면접에서 질문 받으면 어떻게 대답해야 하나요
solid 면접에서 질문 받으면 어떻게 대답해야 하나요?저의 언어로 정제하고 싶은데 알랑말랑 어렵네요 다른 분이 설명하신거 참고해서 나름대로 해석해 봤는데 이렇게 말해도 괜찮을까요? *SOLIDSRP: 단일 책임 원칙(single responsibility principle)한 클래스는 하나의 책임만 가져야 한다. 변경이 있을 때 파급 효과가 적으면 단일 책임 원칙을 잘 ᄄᆞ른 것SRP원리를 적용하면 책임 영역이 확실해지기 때문에 한 책임의변경에서 다른 책임의 변경으로의 연쇄작용에서 자유로울 수 있습니다. OCP: 개방-폐쇄 원칙(Open/closed principle)소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 새로운 변경사항이 발생했을 때 객체를 직접 수정하지 않고도변경사항을 적용할 수 있도록 설계해야함을 말합니다 DI, IoC가 필요합니다. LSP: 리스코프 치환 원칙(Liksov substitution principle)객체는 프로그램의 정확성을 깨지 않으면서 하위 타입의 인스턴스로 바꿀수 있어야 한다. 클라이언트는 인터페이스 구현객체의 내부를 모르기 때문에 믿고 쓰기 위해선 인터페이스를 구현한 객체가 인터페이스의 사용 의도에 맞게 구현해야 된다는 것을 의미합니다. ISP: 인터페이스 분리 원칙(Interface segregation principle)특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다 특정 클래스에서 다 쓰지 않는 다양한 추상메서드가 들어간 커다란 인터페이스 보 다는 인터페이스를 특정 클라이언트에 맞게 구체적이게 쪼개는 것을 의미합니다. DIP: 의존관계 역전 원칙(Dependency inversion principle) 프로그래머는 추상화에 의존해야지 구체화에 의존하면 안된다. 클라이언트가 구현객체에 의존하는 것이 아닌클라이언트와 구현객체 사이에 인터페이스를 두고 클라이언트와 구현객체가인터페이스에 의존하여 구현객체를 변경해도 클라이언트에 변경이 없음을 의미합 니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
테스트 시 테이블 생성 방법
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]테스트시 테이블 초기 생성 질문드립니다.강의에서는 테스트 테이블 세팅을 위해 /test/resources/schema.sql 파일을 생성하고 내부에 DDL을 작성하여서 테이블을 생성해주었는데요.이 방법은 엔티티가 많아질 수록 DDL이 많아져서 관리하기에 어려움이 있을 것 같다는 생각이 듭니다.그래서 test의 application.properties 내부에 spring.jpa.hibernate.ddl-auto=create 설정을 주어 테이블 생성과 validation을 위임하는 것이 좋지 않을까 하는 생각이 있는데, 어떻게 생각하시는지 궁금합니다.
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
구조 관련 질문 드립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]서비스가 스프링 데이터 JPA 와 Querydsl 둘 다 쓸때 repository 인터페이스에 의존하고 싶으면 앞에서 설명해주신 어뎁터를 하나 중간에 넣어서 그 어뎁터가 repository를 implements하면서 안에서 스프링 데이터 jpa와 querydsl을 쓰면 되는건가요??
-
해결됨스프링 핵심 원리 - 기본편
영한님 로드맵 jpa 강의 질문드립니다
현재 영한님의 스프링 완전 정복 로드맵을 따라 학습하고 있는데요.JPA 로드맵도 동시에 학습하려 하고 있습니다.JPA 로드맵 학습 전에 스프링 로드맵을 듣고 학습해야 좋을까요? 아니면 충분히 들을 수 있을만한 내용일까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
변경 감지가 일어나는 시점에 대하여 궁금한 점이 있습니다.
안녕하세요, 언제나 질 좋은 강의 잘 듣고 있습니다. JPA 영속성 컨텍스트에서 변경 감지가 일어나는 시점에 대해서 궁금한 점이 있습니다.영한님께서 강의 10분 45초 즈음에, "트랜잭션이 커밋되는 시점에 JPA가 변경 감지를 실행한다." 라고 언급을 해주셨습니다. 제가 의문이 드는 지점은,영속성 컨텍스트 안에서의 변경 감지영속성 컨텍스트 flush트랜잭션 커밋이 3개가 발생하는 시점입니다. flush가 발생하면, 영속성 컨텍스트의 쓰기 지연 sql 저장소의 쿼리문들이 비워지고, db에 전송된다. 이 때 1차 캐시는 비워지지 않고, 트랜잭션이 커밋되는 시점에서 db에 전송된 쿼리문들이 커밋됨과 동시에 1차 캐시의 스냅샷과 현재 엔티티 상태와의 변경 감지가 일어난다. ---> 이것이 현재 제가 기본적으로 알고 있는 지식입니다. 제 질문은 다음과 같습니다.그런데, 변경 감지라는 것이 결국 update 쿼리문을 날리기 위함인데, 저는 flush 이전에 변경 감지가 발생하여 쓰기 지연 sql 저장소에 update 쿼리문이 저장되는 것이 순서에 맞지 않나? 라는 생각이 듭니다.또한 커밋되는 순간 변경 감지가 일어난다면, 트랜잭션 종료 바로 직전에 update 쿼리문이 날라가는 것이 맞을까요? 즉, (커밋으로 인한 flush가 아닌) 임의의 flush 호출 상황에서는 변경 감지로 인한 쿼리문이 전송되지 않는 것인가요? 질문 이외에도, 제 이해에 틀린 점이 있다면 알려주시면 감사하겠습니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
컨트롤러 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]컨트롤러에 관한 내용인데요,어떠한 요청이 들어왔을때스프링빈에 등록되어있는 컨트롤러가 있다면, 거기에 맵핑이 된다고 하였는데요, 컨트롤러의 위치나 그런거 상관없이 같은 패키지 안에 있는 모든 컨트롤러를 확인하는건가요? 그럼 소스코드가 방대해질때, 해당 요청이 적절한 컨트롤러와 매핑이 되어있는지 확인하는데 내부적으로 시간이 오래 걸리는점은 없을까요? 알아서 해쉬가 되어있나..?