inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

프록시를 이용한 연관관계 설정 시 잘못된 id값을 받았을 경우에 대해 질문드립니다!

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

단순히 연관관계 설정을 위해 엔티티를 사용하는 경우, 프록시로 조회(em.getReference || Data JPA의 경우 getById()) 형태로 조회한다고 알고 있습니다. 연관관계 설정을 위해 필요한 값은 id뿐인데, 굳이 엔티티의 다른 필드 정보까지 조회하기 위한 쿼리를 날리지 않는 편이 좋으니까요. 이 점과 관련해서 동료들과 이야기를 나누던 중 얘기가 나왔었는데, - 위와 같은 방식으로 연관관계를 맺을 경우 id값이 잘못된 값일 때 문제가 발생한다. 는 이야기를 들었습니다. 제 생각에는 정확한 id값 전달의 경우 id값을 전송하는 쪽의 책임이고, 그런 일이 나올 경우에 대비하는 것에 비해 프록시를 이용해서 조회 쿼리를 한 번 절약하는 이득이 더 크다고 생각했습니다. 하지만 방어적 코드를 작성하는 편이 좋다라는 측면에서 동료들의 말에도 일리가 있어서 고민이 되었습니다. 현업에서도 프록시를 이용해 연관관계를 맺는 방식을 사용하실 것 같은데, 위 경우에 대해 어떤 방식으로 별도의 처리를 해주시는지, 이 문제에 대해 어떻게 생각하시는지 궁금합니다.

  • 프록시
  • JPA
  • 연관관계
  • java
이한빈 댓글 1 좋아요 0 조회수 244

안녕하세요 강의 잘듣고있는데 질문이있어요

미해결

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

< script th:inline ="javascript" > [# th:each="user, userStat : ${users}"] var user[[${userStat.count}]] = [[${user}]]; [/] </ script > 이부분에서 마지막에 [/] 은 왜적어준건가요? 혹시 몰라서 삭제하고 실행해봤더니 오류가 나더라고요. 꼮있어야하는부분인가요 그렇다면 이유는 무었인가요?

  • spring
  • MVC
성문 댓글 2 좋아요 1 조회수 468

postgresql 쿼리를 dsl 에서 사용시 질문 드립니다.

해결됨

실전! Querydsl

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] postgresql 쿼리문을 dsl 을 통해 사용하려 합니다. group by 를 사용하여 해당 기준에 따른 특정 컬럼의 데이터를 array_agg를 통해 받아오려면 어떻게 해야할까요?

  • postgresql
  • java
  • JPA
janhoy 댓글 1 좋아요 0 조회수 1012

[H2 DB] jpashop 접근 방법

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요. H2 ~/test DB는 접속이 가능하나, ~/jpahop으로 접근이 전혀 안되어 문의글 남깁니다. 사실, 문의글을 남기기 전, 구글링과 인프런 질의글 통해서 작업도 진행해보았지만 실패했습니다. 서포터즈분께서 2개의 링크를 추천해주셨고 해당 내용도 사실 이미 봤던 내용이지만 놓친 것이 있을지 몰라 따라해보았습니다만 또 실패했습니다. ㅠ.. 그래서 결국 재 문의를 남깁니다. 저의 핵심 은 ~/test 로는 로그인이 가능 하나, ~/jpashop으로 접근하게 되면 아래와 같이 오류가 발생 합니다. 강의보니까 persistence.xml에 아래와 같이 설정하고 나서 H2 접속해서 해당 url로 연결하면 jpashop DB로 접속하던데 저는 계속 에러가 발생하네요. <property name ="javax.persistence.jdbc.url" value ="jdbc:h2:tcp://localhost/~/jpashop" /> 이 사진은 서포터즈 분께서 남겨주신 링크 적용한 pom.xml 입니다. 결국 이 방법도 통하지 않았습니다..

  • java
  • JPA
Adol 댓글 2 좋아요 1 조회수 1887

테스트 실행시 오류

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 테스트 실행시 위와같은 오류가 발생했습니다..

  • MVC
  • spring
댓글 1 좋아요 0 조회수 260

validation

미해결

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

2분45초쯤에 itemName이 나온 과정이 스프링 부트가 LocalValidatorFactoryBean을 Validator에 등록한후 컨트롤러에 @Validated를 타고 FieldError를 생성후 BindingResult에 담겨진 객체의 필드명을 에러코드메시지 파라미터에 넘겨줘서 itemName 공백x 라고 표시가 된건가요?

  • spring
  • MVC
alrnr3521 댓글 1 좋아요 2 조회수 362

Long, long 타입 질문드립니다.!

미해결

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

안녕하세요 강의중 질문이 있어 문의드립니다. Member 클래스에서는 Long 클래스타입으로 사용되고 MemberRepository 클래스에서는 long 프리미티브타입으로 사용되는데 이것이 각 클래스의 어떠한 특성,성질 때문에 이렇게 사용되는 것인가요?? public class Member { private Long id ; // 생략 } public class MemberRepository { private static long sequence = 0L ; //생략 }

  • spring
  • MVC
chjh2425 댓글 1 좋아요 0 조회수 277

hello.html에서 ${data} 빨간줄

미해결

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

안녕하세요. 강의 정말 잘 듣고있습니다! 다름이 아니라 아..마..도? devtools dependency를 추가해주고 난 다음 발생한 것 같은데 hello.html에서 ${data} 빨간줄이 그어져 있네요. 마우스로 갖다 대보니 cannot resolve 'data'라는 문구가 뜨지만 실행 시키면 콘솔 창에 별다른 오류도 없고 devtools 등 전부 정상 작동 합니다. 어떤 것 때문에 그런것일까요??

  • spring
  • JPA
  • 웹앱
  • java
  • spring-boot
김동현 댓글 1 좋아요 0 조회수 427

OrderService에서 itemService ItemRepository를 주입하는 것에 대해서 질문이 있습니다.

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 김영한 멘토님 덕분에 스프링에 대해서 쉽게 공부할 수 있어서 항상 감사함을 느끼고 있습니다. 멘토님의 강의를 복습하던 중 궁금한 것이 생겨서 질문 남깁니다. 제가 의구심을 가지는 코드 부분은 다음과 같습니다. @Service @Transactional(readOnly = true) @RequiredArgsConstructor public class OrderService { private final MemberRepository memberRepository; private final OrderRepository orderRepository; private final ItemRepository itemRepository; /** 주문 */ @Transactional public Long order(Long memberId, Long itemId, int count) { //엔티티 조회 Member member = memberRepository.findOne(memberId); Item item = itemRepository.findOne(itemId); .... } .... } @Service @Transactional(readOnly = true) @RequiredArgsConstructor public class ItemService { private final ItemRepository itemRepository; .... public Item findOne(Long itemId) { return itemRepository.findOne(itemId); } } @Repository @RequiredArgsConstructor public class ItemRepository { .... public Item findOne(Long id) { return em.find(Item.class, id); } } 여기서 제가 궁금한 점은 OrderService에서 ItemService 대신 itemRepository를 주입한 이유가 궁금합니다! 물론, 둘 다 실행은 동일하게 되지만, itemRepository를 ItemService에서만 접근하게 하고, 타 클래스에서 item에 관한 로직은 무조건 ItemService으로만 접근하는 식으로 해야 item에 관련된 로직들이 응집도가 높아지고, 모듈 간 결합도가 낮아지지 않을까요?? 멘토님의 의견이 궁급합니다!

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

bindingReault.addError rejectedValue 값에 item.getPrice() 는 어떻게 전달되는건가요?

미해결

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

화면에서 qqq와 같은 문자열이 전달될 경우, bindingReault.addError 프로퍼티에 rejectedValue에 item.getPrice()를 넘기는데, qqq는 숫자가 아니여서 item 객체에 저장이 안되어 있는데 어떻게 넘어갈 수 있는 걸까요? log를 찍어보면, item.getPrice()=null 인데요. @PostMapping ( "/add" ) public String addItemV2 ( @ModelAttribute Item item , BindingResult bindingResult , RedirectAttributes redirectAttributes , Model model) { // 검증 처리 if (!StringUtils. hasText (item.getItemName())) { bindingResult.addError( new FieldError( "item" , "itemName" , item.getItemName() , false, null, null, " 상품 이름은 필수 입니다 ." )) ; } log .info( "item.getPrice()={}" , item.getPrice()) ; if (item.getPrice() == null || item.getPrice() < 1000 || item.getPrice() > 1000000 ) { bindingResult.addError( new FieldError( "item" , "price" , item.getPrice() , false, null, null, " 가격은 1,000 원 ~ 1,000,000 원 까지 허용합니다 ." )) ; }

  • spring
  • MVC
나인바틀스 댓글 1 좋아요 1 조회수 452

문제 출제의도 질문

해결됨

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

안녕하세요 강사님 강의를 보다 궁금한 점이 생겨서 글을 남깁니다. 저는 해당 문제를 먼저 풀면서 (해쉬)라는 키워드를 놓치고 문제를 풀게 되었습니다. 그래서 방식을 char 두개의 배열을 모두 정렬시키고 배열을 순회하며 같은 인덱스의 문자열이 같은지 비교해서 하나라도 일치 하지 않다면 NO를 리턴하고, 전부가 같다면 YES를 리턴하는 함수를 만들어서 문제를 풀었습니다. 여기서 질문은 정렬이 들어가면서 시간 복잡도가 nlogn으로 늘어나긴 했지만 시간 제한 안에는 문제가 풀렸습니다. 그런데 해당 문제가 코테에 나오게 된다면 문제 출제 의도를 무조건 '해쉬'로만 봐야 할까요 ? 채점자에 따라 다르겠지만 통상적으로 어떤 시선으로 바라보게 되는지가 궁금합니다.

  • java
  • 코테 준비 같이 해요!
밤의멜로디 댓글 1 좋아요 0 조회수 314

로그아웃 처리 시 Post 를 쓰는 이유가 있을까요 ??

해결됨

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

안녕하세요. 제가 이번 챕터를 복습할 겸 스스로 구현을 해보면서, logout 부분을 Get 방식으로 처리를 했습니다. (수업 코드에 의존하지 않고 스스로 하다보니 조금 다르게 구현됐습니다 ㅎㅎ;;) 실행을 했는데, 쿠키가 잘 삭제되고, 로그아웃 처리가 잘 진행되길래, 잘 복습했구나 싶어서 확인 차 수업 코드와 비교를 했는데, 수업 코드는 Post 방식으로 로그아웃을 처리를 했더라구요. 먼가 다른 부분이 있을까? 싶어서 이래저래 실험을 해봤는데, 저는 별 다른 차이점을 찾지 못했습니다. 그리고, 구글링을 좀 해봤는데, 너무 추상적인 부분이 많아서 이해가 잘 가지 않습니다 ㅠ 로그아웃을 Post와 Get 으로 처리하는 것에 대한 차이가 무엇이 있는지 알 수 있을까요 ? 감사합니다.

  • mvc
  • MVC
  • spring
딱구 댓글 1 좋아요 0 조회수 4275

멀티쓰레드 환경관련 몇 가지 질문드립니다.

미해결

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

ConcurrentHashMap 이야기를 해주실 때 좀 궁금해서 찾아보며 몇 가지 궁금증이 생겨서 질문드립니다. 1.일반적으로 HashMap은 멀티쓰레드환경에서 사용하면 안 된다고 하는데, 이것은 '전역변수일 때만' 적용되는 개념이 맞나요? 예를들어 웹개발시 비지니스 로직 메소드(itemSave 등) 에서 new HashMap 등으로 선언 후 값을 넣어 mybatis insert 등을 한다고 할 때, 그냥 HashMap을 사용하잖아요? 이 때는 멀티쓰레드 환경이더라도, 메소드 호출시 스택에 쌓이고 인스턴스가 따로 생성(new HashMap)되니 동시성접근관련 고민을 할 필요가 없는건거죠? 2.store 전역변수를 멀티쓰레드 환경에서 ConcurrentHashMap으로 선언해야한다는 것은 쓰레드들이 동시 접근시 안의 value값을 덮어쓰거나 바꾸거나 등등 동시적 작업으로 원치않는 결과를 반환할 수 있기 때문인거죠? 감사합니다.

  • spring
  • MVC
goro 댓글 1 좋아요 2 조회수 467

th:errors

미해결

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

<div> <label for ="itemName" th :text ="#{label.item.itemName}" > 상품명 </label> <input type ="text" id ="itemName" th :field ="*{itemName}" th :errorclass ="field-error" class ="form-control" placeholder =" 이름을 입력하세요 " > <div class ="field-error" th :errors ="*{itemName}" > 상품명 오류 </div> </div> 여기에서 궁금한게 th :field ="*{itemName}"이거는 모델에 담긴 item의 itemName이고 th :errors ="*{ itemName }" 이거는 바인딩리절트에 담긴 에러 item의 itemName이라고 보면 되나요? 그리고 필드네임이 맞춰져있어서 쓸 수 있다는 강사님의 말이 th:field와 th:errors의 변수이름이 같다는 걸 의미하는건가요?

  • MVC
  • spring
alrnr3521 댓글 1 좋아요 6 조회수 948

Hibernate 질문

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] JpaMemberRepository 만들고 SpringConfig 업데이트 해서 통합 테스트 돌려보면 강의 영상에 나온 것처럼 콘솔창에 'Hibername: insert into member(id, name) values(null, ?)'라는 SQL문이 뜬다고 하셨는데 저는 'Hibernate: insert into member (id, name) values (default, ?)'라고 뜹니다. 코드는 강의랑 똑같이 작성했고 여러 번 확인해서 코드 문제는 아닌 거 같은데 혹시 다른 이유가 있을까요? 답변 감사합니다.

  • spring
  • spring-boot
  • MVC
  • java
두이 댓글 1 좋아요 1 조회수 298

thymeleaf에서 자바스크립트 인라인을 사용할 때 질문있습니다.

미해결

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

html 내에서 <script th:inline="javascript"></script> 태그를 이용하는 것이 아니라, 자바스크립트 파일을 static 에 있는 외부로 분리하는 경우에 어떻게 하면 변수를 사용할 수 있나요? 예를 들어 static에 js라는 경로를 만들고 그 안에 test.js라는 외부 자바스크립트 파일을 html 내에서 사용하는 경우에 <script th:inline="javascript" th:src="@{/js/test.js}"></script>와 같이 할 수 있습니다. 그런데 이 경우에 앞에서 사용한 변수인 var username = [[${user.username}]]; var age = [[${user.age}]]; 등등을 사용할 수가 없습니다. 어떻게 하면 이 문제를 해결할 수 있나요?

  • thymeleaf
  • MVC
  • spring
Taejun Kim 댓글 1 좋아요 2 조회수 5020

영속성 컨텍스트 관련 질문

해결됨

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

안녕하세요! 영한님 먼저 양질의 강의를 제공해주셔서 감사의 말씀 드립니다. 갑자기 영속성 컨텍스트에 대한 개념이 헷갈려서 질문드립니다. 😭 만약에 order테이블에서 member의 id가 동일한 경우 ordersV2()를 사용하면 쿼리가 총 4번 나가는데 이때 영속성 컨텍스트에서 관리되어(1차 캐시에서 조회하기 때문으로 이해했습니다.) 기존에 있는 것을 가져온다고 말씀하셨습니다. 그런데 @Transactional 안에서 DB를 조회해야 영속성 컨텍스트에서 관리되는 것 아닌가요? 🤔 감사합니다.

  • jpa
  • java
  • JPA
  • spring
  • spring-boot
개발하는쿼카 댓글 1 좋아요 8 조회수 304

팩토리 메소드 패턴이 커맨드 패턴을 이용해서 만든 패턴이라고 볼 수 있을까요?

해결됨

코딩으로 학습하는 GoF의 디자인 패턴

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 기선님, 항상 강의 잘듣고 있습니다. 다름이 아니고 커맨드 패턴 코드를 보다보니 팩토리 메소드 패턴에서 봤던 코드와 유사한 느낌이 들었는데 혹시 팩토리 메소드 패턴이 커맨드 패턴을 사용해서 만들었다고 볼 수 있을까요??

  • java
  • 디자인-패턴
정권호 댓글 1 좋아요 0 조회수 235

toString과 String,valueOf

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

public String solution(String str) { String answer; char[] s = str.toCharArray(); int lt = 0, rt = s.length - 1; while (lt < rt) { if (!Character.isAlphabetic(s[lt])) lt++; else if (!Character.isAlphabetic(s[rt])) rt--; else { char tmp = s[lt]; s[lt] = s[rt]; s[rt] = tmp; lt++; rt--; } } answer = String.valueOf(s); //answer=s.toString(); return answer; } 위의 코드에서 answer = String.valueOf(s)와 주석처리한 answer=s.toString이 어떤 차이점이 있을까요?? 두 코드 다 s를 스트링으로 바꿔서 answer에 넣어주는거라 생각했는데 주석처리한 코드로 제출하면 오답이라도 나오네요

  • java
  • 코테 준비 같이 해요!
댓글 3 좋아요 0 조회수 573

인기 태그

인프런 TOP Writers

주간 인기글