묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
DataAccessException 타입으로 던졌는데, BadSqlGrammarException으로 잡을 수 있는 이유가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Java 기본 문법을 여쭤보는 것 같지만 궁금합니다ㅜㅜ. 어떻게 부모타입(DataAccessException)으로 throw했는데 자식타입(BadSqlGrammarException)으로 catch할 수 있는 건가요?이렇게 테스트를 해보았는데, 잡히더라구요. 그래서 catch문에서 자동으로 upcasting이 되는건가 싶어서 RuntimeException이 아닌 Checked Exception으로도 진행을 해보았습니다.하지만 컴파일 에러가 발생하더라구요ㅜㅜ. RuntimeException만 upcasting을 해주는 건지, 아니라면 어떻게 자식타입으로 catch할 수 있는건지 궁금합니다!
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
join과 join fetch 의 차이 ..
OrderQueryRepository 에 findAllByDto_flat 보면다 join 으로 되어있는데 join과 join fetch (페치 조인)의 차이점은 뭔가요 ..?join도 lazy 로 되어있는거 한번에 끌고오는 건 비슷한 거 같은데 .. ㅜ
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 개념이 잘 이해가 되지 않아서 질문입니다
세션 만들기//로그인 성공 처리 //세션이 있으면 있는 세션 반환, 없으면 신규 세션 생성 HttpSession session = request.getSession(); //세션 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 세션 지우기HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); } 세션 확인하기HttpSession session = request.getSession(false); if (session == null) { return "home"; }쿠키는 클라이언트 측에서 저장하고 세션은 서버측에서 저장한다고 알고 있는데요. request 로부터 getSession을 통해 얻는 것이 무엇인지가 궁금합니다.request.getSessin()을 통해 얻는다는 것은 사용자의 요청으로부터 얻은 Session이고 여기에 setAttribute 하는 것은 서버에 데이터를 저장하는게 아니라 사용자의 요청에 저장을 하게 되는 것 아닌가요 ?? (setAttribute가 사용자의 request와 서버 모두 저장하는 것인가요?) session은 cookie와 같다면 서버 내부적으로 어디에 저장돼서 어떻게 확인할 수 있는 건지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
9분 05초 author이랑 isbn
author이랑 isbn이 null로 나와있는데 싱글테이블에서 Album이랑 Movie에 관련된 컬럼은 안나오고 딱 Book이랑만 관련된 author이랑 isbn 만 null로 표시됐는데 이건 JPA가 Book인 걸 알아서 그것만 표시해주는건가요 ?? 어떻게 author이랑 isbn만 표시해주게 되는건지 궁금합니다 ..
-
해결됨스프링 핵심 원리 - 고급편
포인트컷 활용 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요.개인 토이 프로젝트에 생성과 관련된 트랜잭션이 발생할 때마다 로그를 남기는 기능을 aop를 적용 해서 만들어 보고 싶어서 새로운 어노테이션을 만들어서 구현을 했습니다. 그런데 이렇게 구현하면 aop의 장점인 본래 코드를 수정하지 않고 적용할 수 있다는 점을 놓치게 되는것 같아서 고민이 생겼습니다.새로운 어노테이션을 만들어서 적용하는 것과 관련된 메서드의 이름을 전부 통일( "ex) create~~()" ) 하는 것 중에 어떤 방법이 좀 더 좋은 방법일지 기준이 잘 안섭니다. 사진도 같이 첨부하겠습니다. 감사합니다.+) 혹시 스프링 시큐리티에 대한 강의가 계획에 있으신지 궁금합니다. 당장 계획이 없으시다면 공부하기 좋은 도서도 추천해주시면 감사하겠습니다.
-
미해결스프링 부트 - 핵심 원리와 활용
프로메테우스, 그라파나 설치 서버 위치
[질문 내용]강의에서는 프로메테우스와 그라파나를 개발용 PC 와 같은 localhost 에 설치하였는데,이것은 강의 교육용이기 때문에 localhost 에 설치한 것인가요?실제 운영시에는 프로메테우스 서버 또는 그라파나 서버를 별도로 운영하나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실무에서 모든 컨트롤러에는 이런 식의 메서드가 있는 건가요?
@ExceptionHandler public ErrorResult exHandler(Exception e) { return new ErrorResult("error", e.getMessage()); } 실무에서 웬만한 예외들은 다 처리를 해줄 텐데 예기치 못한 예외들을 위해 저런 식으로 Exception e를 파라미터로 받는 메서드를 작성해줄까요 ???
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
404 오류 화면 스프링 부트 제공
@RequestMapping 을 하지 않은 URL을 입력하면 [404 오류 화면 스프링 부트 제공] 화면 만 나오는데 이유가 무엇인가요?좀 더 포괄적인 [4xx 오류 화면 스프링 부트 제공] 이 나오는게 맞지 않나요 ?? 다른 이유 없이 스프링 측에서 저렇게 세팅했기 때문에 나오는 건가요 ?? 200과 300을 보냈을 때는 하얀 공간만 나오는데 2xx,3xx 상태코드들은 실패가 아니기 때문에 그런 것인가요? 맞다면 이 하얀 화면은 HTTP Status 500 – Internal Server Error(error/500.html이 없을 때 나오는 화면) 가 나오는 것처럼 스프링부트가 내부적으로 세팅해놓은 화면인 건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
세션 질문입니다.
세션 만들기//로그인 성공 처리 //세션이 있으면 있는 세션 반환, 없으면 신규 세션 생성 HttpSession session = request.getSession(); //세션 로그인 회원 정보 보관 session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 세션 지우기HttpSession session = request.getSession(false); if (session != null) { session.invalidate(); } 세션 확인하기HttpSession session = request.getSession(false); if (session == null) { return "home"; }세션 만들기에서는 session.setAttribute 로 정보를 저장도 했다가, 지우기 혹은 확인하기에서는 쿠키의 역할을 하는 것 같은데 session은 쿠키 + 쿠키저장소(SessionManager의 HashMap) 두 역할을 모두 하는 건가요 ?그게 아니라 session은 cookie와 같다면 서버 내부적으로 어디에 저장돼서 어떻게 확인할 수 있는 건지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@NotBlank 질문입니다
예를 들어 @NotBlankString nickName 이런 경우에nickName :"12 34 56" 이런 닉네임도 안 되는 건가요??아니면 nickName : " " << 이런 경우만 금지하는 건가요??" " 만 금지하는 것인지, 문자열 속에 " "를 금지하는 것인지 궁금합니다 ..
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
findCookie 에서 쿠키가 2개인 경우는 없나요 ?
아이디가 2개이고, 이 2개의 아이디로 모두 로그인을 하면서 쿠키를 발급 받아가지고 클라이언트(브라우저)에 SESSIN_COOKIE_NAME을 이름으로 갖는 쿠키가 2개인 경우는 없나요 ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@CookietgValue도 객체를 자동으로 생성해주나요 ?
HomeController의 homeLogin메서드의 파라미터 중 memberId에는 @ModelAttribute가 붙지 않았는데LoginController에서 오는 response의 Cookie를 자동으로 어떻게 받는 건가요 ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
GetMapping 에서 @ModelAttribute 사용 이유
영상 8:57 에서 @GetMapping("/add") 에서 파라미터로 @ModelAttribute를 받는 이유가 무엇인가요 ? PostMapping이 아니라 GetMapping일 때는 데이터가 넘어오지 않기 때문에 사용할 이유가 없는 것 아닌가요 ??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링 입문에 대하여 질문드립니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하십니까, 자주하는 질문 에서 학습방법을 봤는데코드를 쭉 따라하는식 방법이 적혀있었는데, 이렇게 따라만 해도 공부가 되는게 맞을까 혹시나 하는 마음에 따로 질문을 올리게 되었습니다.따로 국비학원 수료 없이 학교 졸업하자마자 취업했는데 백엔드 스프링을 사용한다해서 선생님 강의 커리큘럼을 따라갈려고합니다. 스프링을 배우는데 자바 기본 지식이 필요하다해서 자바의 정석 유튜브를 먼저 보고, 부족하지만 최대한 자바 기본 문법개념 같은걸 숙지한 상태에서 선생님 영상 시청하고있습니다. 선생님의 이론수업이 정말로 재밌고 스프링 입문하는데 좋은걸 알겠는데 이론설명뒤에 선생님이 치시는 코드가 무엇을 의미 해석이 안되고, 코드형식(?) 코드 구조 (문법?) 이게 정말 와닿지 않는 상태이다보니 ,영상을 보고 타이핑하니깐 공부 하는 느낌이 안들어서 걱정이 됩니다. 프로그래밍 능력, 자바기초실력이 부족해서 이런 느낌을 받는 거 같은데 회사 실무에 도움이 될까 걱정이 됩니다.처음 취직한 회사라서 최대한 적응하고 회사에 도움이 되는 개발자가 되어보고싶은데 어떠한 방식으로 공부를 해야할 지 조언이 가능할까요?(혹시 책이나 강의같은걸 추천해주시면 감사하겠습니다.)
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
등록화면에서 new Item() 넣는 이유
@GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item()); return "validation/v1/addForm"; }저는 item에 빈값을 만드는 이유는 등록화면 처음 들어갈때 input에 item을 빈값으로 두기위해(안하면 There was an unexpected error (type=Internal Server Error, status=500 이되니까)만들었다고 생각이 듭니다. 하지만 강의14:08 에서 등록화면에 model.addAttribute("item", new Item());빈값을 넘긴 이유 중 하나가 검증에 실패했을 때 item을 재사용할 수 있게 하기 위해서라고 말씀하셨는데굳이 따지자면 재사용을 할 수 있는 건이 때 item에 빈값을 넣어줘서가 아니라@PostMapping의@PostMapping("/add") public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes, Model model) { }@ModelAttribute Item item@ModelAttribute에서 item에 값을 넣어줘서 (물론 위에서 생성된 같은 item이기는 하지만)그 값이 재사용될 수 있는 거 아닌가요?? 정리하면우리가 검증이 실패해도 재사용 할 수 있는 건@GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item()); return "validation/v1/addForm"; }에서 new Item()때문이 아니라@PostMapping("/add") public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes, Model model) { }@ModelAttribute Item item 때문이 아닌가 라는 생각이 듭니다.답변해주시면 정말 감사하겠습니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
실무에서 어떻게 사용하는지 질문입니다.
package hello.itemservice.web.validation; import hello.itemservice.domain.item.Item; import hello.itemservice.domain.item.ItemRepository; import hello.itemservice.domain.item.SaveCheck; import hello.itemservice.domain.item.UpdateCheck; import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.mvc.support.RedirectAttributes; @Slf4j @Controller @RequestMapping("/validation/v3/items") @RequiredArgsConstructor public class ValidationItemControllerV3 { private final ItemRepository itemRepository; @GetMapping("/{itemId}") public String item(@PathVariable long itemId, Model model) { Item item = itemRepository.findById(itemId); model.addAttribute("item", item); return "validation/v3/item"; } @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item()); return "validation/v3/addForm"; } 클래스단의 리퀘스트 맵 마지막에 / 를 붙이는 것과 안 붙이는 것중 뭐가 정석인가요?클래스단에서@RequestMapping("/validation/v3/items/")이렇게 한다면 메소드에는 전부 /를 빼고 add ,get 만 사용하면 될텐데 뭐가 암묵적인 룰(?) 인 것일까요 ?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@NotNull과 @NotBlank 사용 차이
@NotBlank는 null + 공백을 허용하지 않고 @NotNull은 null만 허용하지 않으니 빈칸은 입력을 허용인 것이 맞나요? 그렇다면 Integer 타입에는 @NoutNull을 붙이셨는데, 여기에는 어차피 빈칸이 들어가면 안되기 때문에 @NotBlank를 사용 하는게 낫지 않나요?? 어떤 의도로 @NotNull은 사용하셨는지 궁금합니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
강의를 보다 헷갈려서 질문입니다.
공부하다가 갑자기 @ModelAttribute의 작동 원리가 헷갈려서 웹에서 itemName, price, quantity만 파라미터로 넘기고 찍어봤는데이렇게 나오는데요 그렇다면1. @ModelAttribute가 붙은 객체 생성2. 웹에서 넘어온 파라미터 중 @ModelAttribute가 붙은 객체에 주입할 수 있는 데이터 찾아서 주입 ( 없다면 null로 냅둠)3. @ModelAttribute가 붙은 객체만 Model에 추가 이렇게 되는 건가요 ?그럼 결국 Model에 자동적으로 추가 되는 건 @RequestParam이나 @ModelAttribute , @RequestBody 가 붙은 객체 or 변수들만이고, 웹에서 넘어오는 값들 중 저 애노테이션으로 붙지 않은 값들은 전부 폐기 되는 건가요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
필드 오류와 오브젝트 오류 관련
BindingResult.reject -> 오브젝트 오류BingdingResult.rejectValue -> 필드 오류이렇게 맞나요 ??그리고 파라미터로 넘겨줄 때 field가 @ModelAttribute로 받는 객체의 지역변수명을 뜻 하는 건가요 ? 오브젝트 오류는 종합적인 로직을 검증할 때 사용하고, 필드 오류는 사용자가 입력해서 넘어오는 파라미터(?) 에 문제가 있을 때 사용하는 거 같은데 자세하게 설명해주실 수 있을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
properties 파일 이름은 규칙인가요 >?
messages_##.properties ##에 들어가야 하는 단어는 영어면 en, 한국어면 kr과 같이 이름의 규칙이 정해져 있는 건가요 ? 그리고 ##에 아무것도 넣지 않는 messages.properties가 default로 선택되는 건가요 ?