묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OrderQueryRepository를 따로 만드는 이유
controller가 repository를 참조하게 되어서라고 하셨는데 ㅌ제가 배경지식이 없어 ㅠㅠ잘 이해가 가지 않습니다.. 조금더 구체적으로 설명 가능할까요?왜 controller가 repository를 참조하게 되는지 이해가 되지 않습니다.OrderQueryRepository를 따로 떼어내면 1번의 문제가 왜 해결되는지요?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
findById에서 select 할때 for update해야 하는건 아닌지 궁금합니다
안녕하세요 ! 너무나 바쁘신줄 알지만 제가 틀리게 이해하고 있는지도 모르겠는데 너무 궁금해서 질문남깁니다.MemberServiceV2의 bizLogic에서 findById를 호출할때 그냥 select하게 되어있는거 같은데 이렇게 되면 락을 획득하는게 아니라서 update를 호출 하기 전에 다른 커넥션? 에서 수정을 위해 select 또는 그사이에 update를 해버리면 현재의 커넥션?(쓰레드?)엉뚱한 값을 update 하게 될 수 있지 않을까요 ? 예를 들어 두개의 커넥션에서 동시에 findById를 호출하고 bizLogic을 수행한다면 하나의 row 에 대해 한쪽에서는 더하기를 다른쪽에서는빼기를 실행해도 최초의 값에서 더하기 혹은 빼기 둘중 하나만을 실행한 결과가 update되지 않을까 하는 생각입니다.제가 글로 설명을 잘 못하겠는데... 멀티쓰레드에서 동기화 문제와 비슷한 문제가 발생하는건 아닐지 생각이 듭니다.혹시 제가 제대로 이해못하고 멍청한 질문을 하는거라면 정말 죄송합니다 ㅠㅠ 바쁘신 와중에 긴글 읽어주셔서 감사합니다그리고 강의 정말 잘보고있습니다 !!!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
fail() 예외를 try -catch로 잡아도 에러 발생
예외를 try -catch로 잡아도 에러 발생하는데이런 경우에는 어떻게 해야할까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 부트가 errorPage 자동으로 등록할 때 질문입니다.
스프링부트가 제공하는 기능 중 errorPage를 자동으로 등록해주고 /error 라는 경로로 기본 오류 페이지를 설정한다는 부분에서 이해가 되지 않는 것이 있습니다.이 때 /error라는 경로는 URL 경로를 의미하는 것인가요 아니면 에러 페이지가 있는 파일 경로를 의미하는 것인가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
20분경에
컨트롤러에서 엔티티를 생성하지 않고update 서비스를 만들어서변경할 값만 dto를 만들던지, 파라미터를 전달하여 서비스에서update를 하셨는데saveItem을 사용하면 merge가 돼서save를 사용하지 않고 update를 만들어서 변경감지를 사용한다는것까진 이해가 됐는데요update를 만들때 왜 꼭 dto를 만들거나 변경할 파라미터만 넘기는건지는 잘 이해가 되지 않습니다.좀 더 명확하게 지정하여 유지보수성을 증가시키기 위함뿐인건가요? 그 외에 merge가 실행됐을때 같은 오류가 생기는건 아닌거죠??그렇게 웹사이트를 만들다보면 dto가 엄청 많이 만들어질거 같은데 그게 맞는건가요?저도 모르게 편의성을 위해 객체 자체를 넘길거 같아서 정확한 이유를 알기 위해 질문드립니다~
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문과 상품(물품)의 관계
"주문" -"상품(물품)" 에서"주문"입장에서 1개의 주문에 여러가지 상품이 있을 수 있으니까 1:N 의 관계고 "상품"입장에선 1개의 상품이 여러가지 주문에 들어갈 수 있으니까 1:N, 서로 1:N 관계니까 다대다 관계 맞나요 ?근데 다대다 관계는 잘 사용하지 않으므로 "주문상품" 이라는 엔티티를 추가함으로서 "주문" - "주문상품" 1: N, "주문상품" - "상품(물품)" N:1 관계로 만들었다는건가요 ?
-
미해결스프링 핵심 원리 - 기본편
의존관계 주입 타이밍과 setUrl() 불러오는 타이밍
안녕하세요. NetworkConfig에서 객체를 생성한 후 setUrl()이 불리는데 의존관계 주입과 setUrl()을 부르는 타이밍? 순서를 알수 있을까요? 무조건 setUrl()을 부른뒤에 의존관계가 주입되나요?
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]
db properties에서 오류입니다
<property name="locations" value="/WEB-INF/mybatis/db.properties"></property>name에서 이런 오류가 뜹니다 Set locations of properties files to be loaded.Can point to classic properties files or to XML files that follow JDK 1.5's properties XML format.Note: Properties defined in later files will override properties defined earlier files, in case ofoverlapping keys. Hence, make sure that the most specific files are the last ones in the given list oflocations. 이 강의에서 다른 분도 같은 오류 질문 올리셨던데 답변이 되어있지 않네요 ㅠㅠㅠ혹시 이 부분 해결 안되면 나프2탄의 스프링 부분 안듣고 바로 스프1탄으로 넘어가도 되나요?그러면 이해하기 어려울까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
@Embeddable 클라스는 보통 마스터 테이블로 쓰이는건가요?
지속적인 추적이,,필요하지 않을땐 @Embeddable 쓰인다고 하는데 테이블의 대부분 데이터는 고정이고 가끔 한두개의 칼럼만 변경될떄 @Embeddable 쓰나요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요.. 이때까지 강의 듣다 고민이 있어 질문드려봅니다..
안녕하세요, 지금까지 jpa 강의를 들으면서 api 개발 고급 파트에 오니 나중에 뒤에 가면 갈수록 직접 api를 만들어 봐야, 언제 이걸 쓰는지 직접 상황을 맞닥뜨려봐야 진짜 공부가 되고 체득이 될것 같이 느껴집니다.제가 정확히 잘 몰라서 그런데 api를 실무에서 사용하는것이 다른 프론트나 어플 또는 다른 프로젝트(같은 프로젝트 안에서라도) 끼리 api를 통해서 데이터를 주고 받는 용도로 사용되는 것으로 알고있습니다.그런데 개인적으로 학습하고 만들어 보는데 있어서, api를 적극 활용할 수 있는 프로젝트나 다른 방법이 어떤게 있을지 궁금합니다. 답변자님은 api 학습을 어떻게 하셨는지.. 어떤 방법이 효과적이였는지 궁금합니다.또한 api를 현재 내보내는 방식을 강의에서 다루고 있는데, 다른 외부 api를 가져와 사용하는 방법에 대해서는 어떻게 사용하며 어떤 것을 학습해야 하는지 궁금합니다.조금 과한 질문일수도 있으나, 다소 막막해서 여쭤봅니다..항상 감사합니다.
-
해결됨스프링 DB 2편 - 데이터 접근 활용 기술
질문입니다!
강의에서는 Jparepository를 상속받는 ItemRepositoryV2 와 ItemQueryRepository 2개를 만들어서 ItemService에서 두 개의 리포지토리를 이용했는데요 이걸 하나로 만들 수는 없나요? (JpaRepository를 상속 받고 거기 안에서 QueryDSL을 사용 하면 안되나요?) 만약 가능한데 나누신거라면 나눈 이유가 궁금합니다 QItem은 무엇인가요 ? 아니면 @Entity가 붙은 클래스앞에 Q를 붙여서 엔티티마다 생성되는건가요 ? 엔티티들의 컨테이너라서 QItem.item 이렇게 사용 하는 것인지 헷갈립니다 ( A 클래스에 @Entity, B클래스에 @Entity가 붙어있다면 QA, QB 가 생성되는 것인가요? 아니면 QItem.A , QItem.b 이렇게 사용하게 되는 것인가요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
커밋 순서를 바꾸면 안 되나요?
log.info("외부 트랜잭션 커밋"); txManager.commit(outer); log.info("내부 트랜잭션 커밋"); txManager.commit(inner); 논리 트랜잭션들이 모두 커밋돼야 물리 트랜잭션이 커밋돼야합니다. 그런데, 위처럼 순서를 바꿔서 진행해봤는데 외부 트랜잭션 커밋 로그 이후 바로 내부 트랜잭션 커밋 로그가 나오지 않고 데이터베이스에 접근하는것 같은 로그가 나옵니다. 내부 - 외부 순서대로 커밋해야 정상적으로 작동하는건가요? 감사합니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
Qitem이 무엇인가요 ?
@Entity 가 붙어있는 클래스(엔티티) 를 인식하고 QueryDSL 에서 알아서 만들어주는 객체인가요 ?save, update, findById 메쏘드에서는 item을 사용하였는데 findAll에서만 Qitem을 사용한 이유도 궁금합니다따로 설정을 하지 않았는데 Qitem을 item 다루듯이 사용할 수 있는게 이해가 잘 가지 않아 질문 남기게 되었습니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
main 패키지 클래스 내부에 run버튼이 생기지 않습니다
원래 메소드 옆에 run 버튼이 떠야 하는데 뜨지 않아서 오류가 생긴 것 같습니다. 구글링 후 add configuration - main 추가를 했지만 그래도 run 버튼이 생기지 않습니다.. 이것 때문에 자잘하게 오류가 뜨는데 어떻게 고칠 수 있을까요??(main 패키지 설정을 Mark Directory As -> Source Root 로도 해봤지만 아무 변화가 없었습니다)
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 설정 변경
pdf(43/64) 코드를 복붙하면 사진 처럼 빨간색 부분이 에러가 뜹니다 이부분은 제거 하면 되나요??
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
JpaItemRepositoryV2 질문입니다
ItemService는 ItemRepository에 의존하고 있기 때문에 JpaItemRepositor2를 쓰면 소스를 다시 작성해야하기 때문에 새로운 구현체를 만들어야하므로 V2를 만들었다고 알고 있는데요 그러면 결국 JpaitemRepositoryV2 구현체를 만들 때 똑같이 소스를 작성해야돼서 조삼모사 아닌가요?? 어떤 장점이 있는지가 궁금합니다
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
AOP 예외 변환의 장점이 무엇인가요 ?
@Repository를 사용하면 예외 변환 AOP의 적용 대상이 된다는데이게 되면 장점이 무엇인가요 ??JPA예외가 스프링 예외로 바뀌면 뭐가 좋은 것인지 모르겠습니다 ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
SOLID는 서로 독립적이지 않은 것 같은데 맞나요?
강의는 현재 "관심사의 분리" 수강하고 있습니다.그전에, 여태까지 만들었던 주문과 할인 도메인이 OCP와 DIP를 어기고 있다는 것을 배웠습니다.그런데, OCP와 DIP를 어기지 않게 수정하는 것이코드 중 private final DiscountPolicy discountPolicy = new RateDiscountPolicy();를 사용하지 않고 AppConfig를 사용하는 것이더군요. 여기서 제가 궁금한 것은,객체지향 설계의 5가지 원칙이 S, O, L, I, D 라고 5가지나 나와 있는데저 코드 한 줄이 O, D를 동시에 어기는 것이 이상하다는 것입니다. (어쩌면 S, L, I 중에서 더 어기고 있는 것이 있을 수도 있고요)분명 서로 다르니까 5가지로 분리를 해놨을텐데, 문제 원인도, 해결 방법도 서로 동시에 공유하고 있습니다.구글에서 SOLID의 설명, 예시를 다 찾아봐도 문제 원인을 공유하는 경우가 많았습니다. OCP를 고쳤더니 DIP가 고쳐진다고 하면서로 해결 방법을 공유하고 있는 부분이 있다고 하면SOLID가 아니고 SOLI가 되어야 하지 않나... 생각합니다.확장에는 열려 있으나 변경에는 닫혀 있어야 하도록 유도하는 방법이, 의존 관계 역전을 막아 주기도 한다면 굳이 왜 서로 분류를 해놓은 건지 궁금해요. 이건 마치...강아지를 산책시키는 일 A와 유산소운동을 하는 일 B를 계획했는데A를 하니까 유산소운동이 되어서평생 B를 못하는 느낌입니다. 혹시 OCP는 지키는데 DIP는 어기는 코드가 있을까요? (혹은 그 반대)
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
RDB는 어떻게 공부하는 것이 좋은가요 ?
강의 막판에 RDB도 공부를 해야된다고 말씀하셨는데 영한님 로드맵에는 RDB에 관련된 강의가 없어서요혹시 추천하시는 책이나 강의가 있을까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
지연 로딩을 하면 좋은 점이 있나요 ?
객체가 실제 사용될 때 로딩 하는 것이 지연 로딩이라고 강의에서 말씀하셨는데요 Team team = member.getTeam();String teamName = team.getName();에서 만약 team.getName()을 사용하지 않는다면 Team team = member.getTeam(); 이라는 소스가 필요 없는 것이므로 그냥 삭제하면 되지 않나요 ?? 지연 로딩의 장점이 무엇인지 궁금합니다.