inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

Dto 반환 질문입니다

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

그 예전에 영한님께서 JSON으로 반환 할 때 쿼리를 통해서 얻은 값을 그대로 반환하지 말고 클래스로 묶어서 반환하라고 하셨던게 기억이 납니다. 쿼리를 통해서 얻은 결과가 예를들어 List<PersonDto> name : ~~~ age : ~~~ address: ~~ 이런식으로 되어 있을때 이 리스트를 그대로 반환하면 JSON 형식이 배열로 시작해서 그 후에 값을 수정 할 수 없다고 들었던거 같은데요!! 질문이 있습니다 저 List<PersonDto>를 감싸는 하나의 클래스를 만들때 예를 들어서 class PersonExmpleDto{ private ArrayList<PersonDto> persondto; ] 이런식으로 반환 할 때 클래스 이름을 어떻게 해야 할 지 모르겠습니다.... 쿼리를 통해서 얻은 List로 묶은 PersonDto를 하나의 클래스에서 반환하고자 할 때 클래스의 네이밍은 어떤식으로 하나요? class PersonListDto{ private ArrayList<PersonDto> persondto; } 이런식으로 하나요...??

  • spring
  • JPA
  • spring-boot
  • java
ariwarabbang 댓글 1 좋아요 0 조회수 454

조금 더 안전한 방법과 조금 더 개선한 방법의 차이

미해결

스프링과 JPA 기반 웹 애플리케이션 개발

안녕하십니까 강사님 ! 질문있습니다 :) 조금 더 개선한 방법 의 원리는 만약 인증이 들어왔을 때, Username 과 시리즈는 일치하지만 토큰이 일치하지 않으면 토큰이 해커에 의해 탈취되었다고 간주해서 모든 토큰을 삭제하는 원리인데, 조금 더 안전한 방법 도 Username 은 일치하지만 토큰이 다르면 똑같이 탈취되었다고 간주하고 모든 토큰을 삭제하면 동일하게 동작하지 않을까 하는 궁금증이 생겼습니다. 전자랑 후자 방법 둘다 해싱에 패스워드는 사용되지 않아서 복호화 된다고해도 계정이 탈취당하는 일이 없는데 굳이 시리즈를 이용하는 이유가 있을까요??

  • spring
  • spring-boot
  • thymeleaf
  • java
  • JPA
codren 댓글 1 좋아요 0 조회수 315

영한님 강의 아래 사용한 단축키에 대한 정보를 나타내는 자막? 같은건 어떻게 할 수 있나요?

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 영한님 강의 아래 사용한 단축키에 대한 정보를 나타내는 자막? 같은건 어떻게 할 수 있나요?

  • spring
  • spring-boot
  • java
  • MVC
댓글 1 좋아요 0 조회수 464

JPQL 에 대해서 질문이 있습니다 ..!

미해결

실전! 스프링 데이터 JPA

안녕하세요 영한님. 영한님의 강의를 한번씩 보고 개인적으로 공부를 하면서 연습을 해오고 있는데. 수업 예제는 아니지만 궁금한 점이 생겨서 검색을 해도 잘 나오지 않아 질문을 남기게 되었습니다. --------------------------------------------------- 상품을 대여하는 기능을 작성해 보기위해 만든 클래스 입니다. 연관관계는 단방향 매핑이 좋다 말씀하셔서 단방향으로 구성을 해봤습니다. 이 클래스에 있는 user는 빌리는 사람의 클래스입니다. product 클래스 안에 상품의 주인인 User클래스를 매핑해 주었습니다. User클래스에는 매핑된 테이블이 없습니다. 이렇게 작성이 되어있고 만약 자신이 대여를 신청한 상품을 조회하고 싶은 쿼리문을 작성하고 싶은데 이렇게 작성을 했었습니다. 하지만 https://www.inflearn.com/questions/15876 이 질문의 글에 fetch 조인에 대상이 되는 곳에는 where절을 사용하면 안된다 말씀을 해주신 것을 보고 다른 방법이 떠오르지가 않아서요 .. 혹시 더 좋은 방법이 있다면 어떠한 방식으로 해결해 나가면 좋을까요? 수업예제와 다른 주제로 질문을 드려 죄송합니다.

  • spring-boot
  • java
  • spring
  • JPA
댓글 1 좋아요 0 조회수 303

리다이렉트 관련해서 질문드립니다.

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 강의 잘 듣고 있습니다. HTTP 강의에서 3xx 리다이렉션에서도 HTTP 메서드가 변경되는 경우와 유지되는 경우가 존재하는것으로 학습했습니다. "redirect: ~"처럼 문자열 형식으로 리턴하는 경우, GET방식으로 메서드 변경되는 것이 기본값인건가요? 만약 리다이렉트 시에도 메서드를 유지하고 싶은 경우 spring MVC에서 어떻게 구현하는지 궁금합니다! 감사합니다.

  • 리다이렉트
  • spring
  • redirect
  • PRG
  • MVC
dongjoo 댓글 1 좋아요 0 조회수 308

session이 null이 될 수 있나요

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

위에서 로그인이 된 상태면 세션 값이 있을 텐데 null 체크를 왜 하는건가요? (제 생각에는 세션 시간이 만료되면 저렇게 구현 할 수 있을거 같긴해요. 이 강의에서는 그런 코드는 없구요)

  • spring
  • MVC
우디 댓글 2 좋아요 0 조회수 2925

traceIdHolder.remove()와 traceIdHolder.set(null)의 차이가 있나요?

해결됨

스프링 핵심 원리 - 고급편

안녕하세요 강의 잘 보고 있습니다. traceIdHolder.remove()와 traceIdHolder.set(null)의 차이점이 궁금합니다. 실험해보니까 set(null)로 해도 잘 동작합니다만 아무래도 remove()라는 함수가 따로 있는 이유가 있을 것 같아서요.

  • spring
  • 디자인-패턴
컴퓨터공부하자 댓글 1 좋아요 0 조회수 446

프로젝트

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요 좋은 강의 너무 진짜 감사드립니다 마무리를 하면서 야생형코스에서 프로젝트를 해보는것이 좋다고 말씀하셨는데 해보는 범위는 프론트부터 백엔드(디비)까지 다 포함해서 말씀하신건지와 추천해주실만한 프로젝트가 있을까요?

  • 프로젝트
  • oop
  • spring
조소영 댓글 1 좋아요 1 조회수 382

JPA 개발 관련 질문입니다

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

19:00 시간에 보고 궁금한게 있습니다. JPA 실행해서 나온 sql 스크립트를 보고 수정할 부분이 있으면 수정해서 ddl 을 직접 작성하신다고 하셨는데, 수정된 ddl 에 맞게 JPA 에서도 코드를 수정해야하는걸까요? 아래 방식으로 개발이 진행되는 것이 맞는지 궁금하네요 JPA 코드작성 -> DDL 스크립트 확인 및 수정 -> DDL 직접 작성하여 DB에 반영 -> 수정된 ddl에 맞게 다시 JPA 코드 수정 -> 애플리케이션 실행 (뭔가 질문이 이상한 것 같기도한데; 이해가 어려운 부분은 편하게 말씀 부탁드립니다)

  • 웹앱
  • java
  • spring
  • JPA
  • spring-boot
댓글 1 좋아요 0 조회수 199

@Transactional(readOnly=true) 설정에 대한 질문입니다.

해결됨

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요, 최근 부하테스트를 진행하며 성능개선을 해보려하고 있습니다. 그 중 단순 DB 조회 API에 대해 테스트를 진행하고 있는데, 스레드 덤프를 확인한 결과 SessionImpl.doFlush()가 호출되는 것을 보고 트랜잭션이 끝나는 시점에 자동으로 flush가 호출되는 것을 발견했고, 때문에 readOnly 설정이란 것을 찾아서 설정하고 다시 테스트를 진행했습니다. 반복해서 테스트를 진행해 봤는데, readOnly를 설정하지 않았을때가 TPS가 높게 측정이 됩니다. 왜 그런지 알 수 있을까요.. 그림은 순서대로 readOnly를 설정하지 않았을 때와 설정했을 때 입니다. 테스트 대상 API의 코드는 아래 링크의 getMovieList() 입니다. https://github.com/hapHollys/booook/blob/main/src/main/kotlin/com/haphollys/booook/presentation/controller/MovieController.kt

  • java
  • JPA
  • spring-boot
  • spring
galid 댓글 2 좋아요 0 조회수 479

필드 주입의 문제점에 대해 궁금한게있습니다.

미해결

스프링 핵심 원리 - 기본편

20:20 정도부터 나오는 필드주입에서 궁금한점이 있습니다. 김영한님 말씀중에선 강의예제중, @Autowired private MemberRepository memberRepository ; @Autowired private DiscountPolicy discountPolicy ; 위처럼 필드주입을 하게되면 memberRepository 나 discountPolicy 의 값을 변경할수없고 테스트코드에서 순수한 자바로 테스트할수있는 방법이 없다고 하셨습니다. 그런데 제 생각으로는 그렇게 생각하면 기본방법인 생성자 주입도 결국 생성되고나면 변경할수없고 순수한 자바로 테스트할수있는 방법이 없는것 같다고 생각이 되었습니다. 왜냐면 둘다 현재 수동설정이 아닌 어노테이션을 통한 자동설정으로 이루어지고있으므로 무얼 넣어줄지는 해당 구현체의 어노테이션을 추가,삭제해주지않는이상 바꿀수 없다고 생각했기 때문입니다. 이부분에대해서 설명주시면 감사하겠습니다!

  • oop
  • spring
메모장 댓글 1 좋아요 1 조회수 612

스레드 로컬과 request 스코프

해결됨

스프링 핵심 원리 - 고급편

이번 강의도 잘 듣고 있습니다! 스레드 로컬 사용한 것과 Configuration에서 ThreadLocalLogTrace 을 request 스코프로 설정한 방법 모두 스레드 동시성 문제 해결한다는 점에서 같은 효과일 것 같은데 두 방식을 비교했을때 스레드 로컬의 장점이 무엇인지 궁금합니다!

  • spring
  • 디자인-패턴
hello 댓글 1 좋아요 1 조회수 478

싱글톤컨테이너의 싱글톤 방식에 대해 질문있습니다!

미해결

스프링 핵심 원리 - 기본편

싱글톤 컨테이너의 방식에 궁금한점이 있어 질문드립니다 스프링 컨테이너를 통해 수많은 회원들의 요청이 들어와도 같은 빈객체를 주게된다고 들었습니다. 그렇다면 똑같은 객체를 사용하게되면 모든 회원들이 처음 등록된 빈의 같은 회원정보를 사용하게되어 내 회원정보가 이상하다거나 계산내역이 기존사람의것이 되는등등 문제가 발생되는것이 아닌가요?

  • spring
  • oop
메모장 댓글 1 좋아요 0 조회수 282

@RequiredArgsConstructor , @Primary 질문있습니다

미해결

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요 영한님 항상 좋은강의 감사합니다 다름이아니라 질문이있는데 @Component를 FixDisCountPolicy와 RateDisCountPolicy 둘다 주어졌을때 오류가 발생하는데 이때 OrderServiceImpl에는 @RequiredArgsConstructor를 붙이고 DiscountPolicy중 우선순위를 가질것에 @Primary를 붙이는 즉 @RequiredArgsConstructor, @Primary 두가지만 사용하면 코드의 수정없이 가장 효율적이라고 생각되는데 제 생각이 맞는지 궁금합니다

  • 질문
  • oop
  • spring
댓글 1 좋아요 0 조회수 358

파일 이름 인코딩 관련해서 질문 드립니다.

미해결

[NarP Series] MVC 프레임워크는 내 손에 [나프2탄]

MemberFrontController 에서 맨 처음 request.setCharacterEncoding("UTF-8"); 이렇게 넘어오는 데이터를 utf-8로 인코딩 해주는 거는 POJO에서 하는 filename = URLEncoder.encode(filename, "UTF-8"); 이거 랑 별개인 건가요? 궁금해서 질문 드립니다.

  • MVC
  • spring
  • ajax
  • pojo
댓글 1 좋아요 0 조회수 285

jpa 여러개 repository findById

미해결

실전! 스프링 데이터 JPA

안녕하세요... 토이프로젝트를 하다가 궁금한것이 있어서 문의드립니다... 제가 원하는건 결론적으로 이렇습니다. if(){ Test1Repository.findById(Long Id); }else if(){ Test2Repository.findById(Long Id); } else { Test3Repository.findById(Long Id); } 이런식으로 계속 분기처리하기보단 레포지토리를 하나의 값으로 findById를 할수 있는지가 궁금합니다..

  • jpa
  • java
  • spring-boot
  • spring
  • JPA
오개발 댓글 1 좋아요 0 조회수 1092

객체 vs map

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

안녕하세요 항상 좋은 강의 감사합니다. 결국에는 ItemSaveForm가 ItemUpdateForm 을 분리하라는 것을 잘 이해했습니다. 그런데 궁금한 점이 있습니다. 실무에서는 이런 객체들(dto)을 사용하지 않고 map하나로 사용하는 경우가 있습니다. 이런 경우에는 @Validated 를 어떻게 적용할 수 있나요? 추가질문) 객체 vs map에서는 결국 객체가 맞을까요? 그럼 그 이유는요? 객체 vs map 에 대한 글을 예전부터 궁금해서 많이 찾아봤었습니다. map은 작업, 유지보수적인 면에서 상대적으로 많이 수월한 장점이 있다고 느꼈고(현직에서 senior 분들과 그렇게 작업하고 있습니다.( @RequestBody Map<String, Object> params, ...) 로 모든 것을 컨트롤러에서 받습니다. 그렇다면 왜 객체를 써야하며 장단점, map은 왜 지양해야 하는지 궁금합니다. 감사합니다.

  • spring
  • MVC
highjune 댓글 1 좋아요 3 조회수 555

URI 구조 질문

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요 영한님 야생형코스를 듣고 토이프로젝트를 하던 도중 URI를 어떤 식으로 정해야 할지 감이 안잡혀서 활용1편에 있는 컨트롤러들의 URI를 참고하는 도중 궁금한점이 생겨서 여쭈어보게 되었습니다. MemberController와 ItemController의 등록과 관련된 URI에서는 /members/new , /items/new와 같이 복수단어를 사용하였지만 OrderController에서는 /order와 같이 URI가 단수로 되어있었습니다. HTTP 강의 중 비슷한 내용이 있던게 기억나서 찾아보았더니 HTTP 메서드 부분에서는 "계층 구조상 상위를 컬렉션으로 보고 복수단어 사용 권장(member -> members)" 이라고 설명해 주셨지만 혹시나 order의 경우 다른 뜻이 있으셔서 URI를 단수로 작성한건지 궁금해서 여쭈어 보게 되었습니다!

  • java
  • 웹앱
  • spring
  • JPA
  • spring-boot
현루석이 댓글 1 좋아요 3 조회수 256

컴포넌트 스캔 관련 질문

미해결

스프링 핵심 원리 - 기본편

@Component 를 붙인 것들은 모두 @ComponentScan의 자동 빈 등록의 대상이 됩니다. 그런데 basePackageClasses 의 범위가 있다면 해당 패키지 내부에서만 빈 등록 대상을 찾게됩니다. 1. @SpringBootApplication 에는 이미 @ComponentScan이 있습니다. 해당 부트의 basePackageClass 를 변경하지 않는 한 임의의 Configration 내부에 Bin 을 쓰든 Component 안에 Bin을 주입하든 사실상 이미 부트가 모든 Component 를 관리하고 있어서 위 시점에서는 수동 주입한다는 개념이 없는것이 맞는건가요. 2. 위 질문과 비슷한 질문인데요.. 제가 임의의 스프링부트에 Aconfig 와 Bconfig 를 만들었다고합시다. 그리고 동일하게 컴포넌트 스캔을 이용하여 각각 다른 패키지를 basePackageClass 를 지정했다고 한다면 이게 어떤 의미가 있는걸까요? @SpringBootApplication 에는 디펄트로 하위 모든 컴포넌트를 찾아서 자동등록을 하는데..

  • oop
  • spring
ShinS 댓글 1 좋아요 0 조회수 307

Mockito 를 사용하여 테스트할 때, 테스트 요구사항의 반영 질문

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

이번 강의의 1분 30초 쯤, 현재 작성하는 테스트 방법이 그다지 좋은 방법은 아니다라는 말을 들었습니다. 그래서 좋은 테스트 방법은 무엇인지 찾아보게 되었고 돌아돌아 Mockito 같은 테스트 프레임워크를 알게되었습니다. 좋은건 일단 맛은 봐야하는 성격이라, 강의를 듣다말고 Mockito 를 사용하여 단위 테스트 하는 방법 알아보는 길로 한참 새버렸습니다 ㅎㅎㅎ Mockito 를 사용해서 OrderService 의 주문 성공에 대한 테스트 코드를 작성해보았습니다. 근데 영한 선생님이 강의에서 작성할 때의 assertEquals 이나 그런 요구사항들에 대해선 테스트를 못해서 제가 테스트 코드 작성을 잘못한건가 하는 생각이 들었습니다. 코드는 다음과 같이 간단하게 작성했습니다. @ExtendWith(MockitoExtension.class) class OrderServiceTest { @Mock MemberRepository memberRepository; @Mock ItemRepository itemRepository; @Mock OrderRepository orderRepository; @InjectMocks OrderService orderService; @Test @DisplayName("주문 성공") void order() { Member member = new Member( 1L, "irostub", new Address("seoul", "street", "10000"), new ArrayList<>()); Item item = new Book( 1L, "itemName", 15000, 2021, new ArrayList<>(), "5pg", "isbn5100"); //given given(memberRepository.findOne(anyLong())) .willReturn(member); given(itemRepository.findOne(anyLong())) .willReturn(item); //when orderService.order(1L, 1L, 100); //then ArgumentCaptor<Order> captor = ArgumentCaptor.forClass(Order.class); then(orderRepository).should(times(1)).save(captor.capture()); } } 코드는 위와 같습니다. 뭔가 많이 허전합니다. 강의에서 처럼 assertEqual()에 인자로 넣을 객체를 받아올 방법이 없어서 , orderRepository.save(...) 는 void를 반환하고 orderService.order(...) 은 Long 을 반환하지만 영속성 컨텍스트도 없으므로 null 을 반환합니다. 그래서 결국 테스트 한 것이라곤, Mock 을 통해 적당한 맴버, 상품을 정해놓고 orderService.order(...) 메서드를 실행중에 orderRepository.save(...) 을 잘 호출했는가? 뿐입니다. 이렇게 하는게 맞는걸까요..? (테스트에 대한 강의가 아님에도 이런 질문을 하는게 죄송스러울 따름입니다..ㅠㅠ 근데 어디다 물어볼 곳도 없어서 심란한 마음에 글을 씁니다)

  • 테스트
  • mockito
  • 웹앱
  • JPA
  • spring
  • java
  • spring-boot
irostub 댓글 2 좋아요 0 조회수 694

인기 태그

인프런 TOP Writers

주간 인기글