묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
스프링 MVC 어댑터의 활용
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]스프링 MVC에 대해서 공부하다가 문득 궁금한 것이 생겼습니다. 스프링 MVC의 구조 중에 어댑터 패턴을 이용해 다양한 컨트롤러를 호환해서 핸들러를 반환한다고 했는데, 솔직하게 어떤 기능은 하는지 알겠으나 감이 잘 오지 않습니다.실무에서 어댑터를 어떻게 활용하는지에 대해서 궁금증이 생겼습니다. 사실 이미 버전이 다른 컨트롤러를 어댑터를 통해서 핸들러를 찾아서 호출하는 것을 예제로 공부해 보았지만, 저에게는 조금 보충이 필요하다는 생각이 들어서 한번 질문 남겨봅니다.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
선생님 리액트로 만들어서 사용할 때 ModelAttribute 사용법이 궁금합니다
제가 리액트 공부를 전에 해서 같이 사용해서 테스트 해보려고 하는데 ModelAttribute 개념에 대해 아직 제대로 숙달이 되지 않아, 만약에 리액트에서 사용하려면 어떻게 해야하는지 감이 안잡혀서 그래서 인터넷을 찾아서 하는중인데.. @GetMapping(value = "/add", produces = MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8") @ResponseBody public Map<String, String> getRegions(){ Map<String, String> regions = new LinkedHashMap<>(); //순서가 보장이 안됨 regions.put("SEOUL", "서울"); regions.put("BUSAN", "부산"); regions.put("JUJE", "제주"); return regions; } @GetMapping(value = "") @ResponseBody public List<DeliveryCode> deliveryCodes(){ List<DeliveryCode> deliveryCodes = new ArrayList<>(); deliveryCodes.add(new DeliveryCode("FAST", "빠른 배송")); deliveryCodes.add(new DeliveryCode("NORMAL", "일반 배송")); deliveryCodes.add(new DeliveryCode("SLOW", "느린 배송")); return deliveryCodes; } 이런 식으로 하고 있습니다. ModelAttribute 리액트에서 어떻게 사용할 수 있을까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
스프링 데이터 JPA 질문입니다
스프링 데이터 JPA의 질문이 기본적인 CRUD를 지원해서 구현체를 안 만들어줘도 되는 것 아니었나요 ??JpaItemRepositoryV2를 만들면 이 부분이 깨지는 것 아닌지 궁금합니다.
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
PersistenceException은 런타임 예외이지 않나요 ?
PersistenceException이 RuntimeException을 상속 받았던데 이러면 service 계층에서 처리 할 의무가 없으니 DataAcessException으로 변환하지 않아도 JPA예외에 의존하는 것이 아니지 않나요 ?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
쓰기 지연 질문입니다
JPA를 사용하지 않으면 데이터베이스에 바로 SQL을 을 보내지만, 커밋을 할 때 저장을하고, 롤백을 하면 내용을 원래대로 복구하던 것을JPA를 사용하면 커밋을 할 때 까지 SQL을 보내지 않기 때문에 롤백이란 기능이 사라졌다고 생각하면 되는 것일까요?그렇다면 원래는 커밋을 하지 않아도 내부에선 반영이 되기 때문에 테스트를 할 수 있었는데 이런 경우는 어떻게 되는 것인가요 ? (테스트코드에서 @Transactional같은 경우 )
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
질문입니다!
https://drive.google.com/file/d/1txo4odVUdZBk8BnrLM0yAo5LKhBSpdR5/view?usp=sharing MemberServiceV4Test 가 실패했다고 나오는데 MemberRepositoryV4_2로 주입해주면 잘 되는 걸로 봐서 MemberRepositoryV5가 문제가 있는 것 같은데 아무리 찾아도 모르겠습니다 ㅠㅠ
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
Service는 특정 기술에 의존하면 안된다고 하셨는데
Spring 기술은 예외인가요 ??
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
MemberServiceV1 @RequiredArgsConstructor 질문입니다
@RequiredArgsConstructor이 애노테이션은 final이 붙은 변수의 생성자를 자동으로 생성해주고, 생성자가 하나만 있다면 @AutoWired를 생략할 수 있다고 알고 있습니다.private final MemberRepositoryV1 memberRepository;근데 여기서, MemberRepositoryV1가 Bean으로 등록되지 않았는데 어떻게 자동으로 주입을 받을 수 있는 것이죠?
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
Connection, pstmt 질문입니다
public void aaa() throws SQLException { String sql = "delete from member where member_id =?"; String memberId = "!"; try { Connection con = getConnection(); PreparedStatement pstmt = null; pstmt = con.prepareStatement(sql); } catch (Exception e) { } }이렇게 try 문 안에서 한번에 받지 않고Connection con = null; PreparedStatement pstmt = null;이렇게 null로 외부에서 선언을 하는 것은 finally 문 안에 close 메서드에 파라미터로 넘겨주기 위함이 맞나요 ?
-
미해결스프링 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만 표시해주게 되는건지 궁금합니다 ..
-
미해결스프링 부트 - 핵심 원리와 활용
프로메테우스, 그라파나 설치 서버 위치
[질문 내용]강의에서는 프로메테우스와 그라파나를 개발용 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를 자동으로 어떻게 받는 건가요 ?