inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

@BatchSize 와 컬렉션 페치조인 관련해서 질문이 있습니다.

미해결

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

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. . 안녕하세요. 김영한 강사님. 김영한님 강의를 열심히 수강하는 학생입니다. . 다름이 아니라 제가 "페치조인 2 - 한계" 챕터의 13분 부터 19분까지 진행되는 강의 내용중 이해가 안되는 부분이 있어서 이렇게 질문을 하려합니다. . 분명 강의 내용에서는 컬렉션을 페치조인 한 후 페이징 API를 사용할 수 없다고 하였습니다. . 그리고 이를 극복하기 위하여 @BatchSize를 이용하는 방법이 소개되는데, 이 방법이 어떤 면에서 해결에 도움이 되는지 모르겠습니다. . 컬렉션을 페치조인 한 후 페이징 API를 사용할 수 없는 이유는 1대다 조인으로 뻥튀기된 데이터들을 페이징API로 DB에서 잘라올 경우 JPA가 잘려진 데이터만 받기 때문에 이를 기반으로 잘못된 정보를 내보낼 수 있기 때문이었습니다. . 그리고 @BatchSize는 LazyLoadi ng 된 데이터들을 사용할때마다 가져오지 않고 한꺼번에 가져오는 역할을 담당하여 Lazyloading의 성능을 개선하는 역할을 하고 있습니다. . 이것만 놓고 보면 @BatchSize가 컬렉션 페치조인의 페이징과 어느 면에서 관련있는지 모르겠습니다. 한꺼번에 가져오는 기능은 데이터가 잘려들어오는 것과 관련이 없어 보이거든요. 혹시 제가 잘못알고 있는걸까요? 답변 부탁드립니다.

  • jpa
  • batchsize
  • java
  • JPA
  • 컬렉션페치조인
  • 페이징
danaldanalcom2 댓글 1 좋아요 3 조회수 872

charAt 을 사용하지 않고 배열로 바꿔 사용한점 빼고는 거의 동일한 코드같은데 실패합니다 ㅠㅠ

해결됨

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

한참동안 코드를 살펴봐도 어디가 잘못된 건지 모르겠네요 ㅜㅜ 테스트케이스에 올라온건 통과하는데 fail 이라 이해가 잘 되지 않습니다 ㅠㅠ 확인 한번 부탁드립니다 import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String source = sc.nextLine(); String target = sc.nextLine(); System.out.println(solution(source, target)); } private static int solution(String source, String target) { int answer = 0; HashMap<Character, Integer> t = new HashMap<>(); for(char c : target.toCharArray()){ t.put(c, t.getOrDefault(c, 0)+1); } HashMap<Character, Integer> s = new HashMap<>(); char[] sArr = source.toCharArray(); for(int i = 0; i < t.size()-1; i++){ s.put(sArr[i], s.getOrDefault(sArr[i], 0) +1); } int lt = 0; for(int rt = t.size()-1; rt < sArr.length; rt++){ s.put(sArr[rt], s.getOrDefault(sArr[rt], 0) +1); if(t.equals(s)) answer++; s.put(sArr[lt], s.get(sArr[lt])-1); if(s.get(sArr[lt]) == 0) s.remove(sArr[lt]); lt++; } return answer; } }

  • java
  • 코테 준비 같이 해요!
jaden 댓글 1 좋아요 0 조회수 209

변경된 테스트에서 MemberRepository를 주입받는 코드의 용도

미해결

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

안녕하세요! 강의에서 기존 테스트를 통합 테스트로 변경하면서 생성자 주입 코드가 필드 주입 코드로 변경되었는데요 @Autowired MemberService memberService ; @Autowired MemberRepository memberRepository ; 필드 주입으로 변경한 후 MemberRepository를 Autowired 받는 부분은 주석 처리를 해도 테스트 코드가 정상적으로 수행되더라고요 @Autowired MemberService memberService ; // @Autowired MemberRepository memberRepository; 생각을 해보니 MemberService를 Autowired할 수 있다는 건 MemberService 빈이 이미 생성되어 있다는 거고 MemberService 빈이 생성되려면 MemberService 생성자의 매개변수로 받을 MemberRepository가 필요하기 때문에 MemberRepository 빈도 이미 생성되어 있다는 거고 결국 MemberRepository 빈을 전달하면서 MemberService 빈을 생성했기 때문에 이후부터는 필드 주입이든 생성자 주입이든 MemberService를 Autowired하기 위해 MemberRepository가 함께 쓰이지 않아도 될 것 같더라고요 혹시 아니라면 MemberRepository를 주입받는 코드의 용도가 따로 있는 건가요?

  • java
  • MVC
  • spring-boot
  • spring
이서우 댓글 4 좋아요 3 조회수 412

AfterEach와 BeforeEach

미해결

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

memberRepository의 clearStore() 함수를 매 테스트 이전마다 호출해주는 BeforeEach나 매번 테스트가 끝날 때마다 호출해주는 AfterEach나 현재 테스트가 다음 테스트에 영향을 안미치도록 한다는 점에서 동일하기 때문에 뭘 쓰든 상관이 없을거 같은데 현업에서는 어떤 경우에 AfterEach를 사용하고 어떤 경우에 BeforeEach를 사용하나요?? 테스트 마다 동적 할당(BeforeEach)하고 해제(AfterEach) 할 때 일까요..?

  • MVC
  • spring
hello 댓글 1 좋아요 2 조회수 315

DI 적용해보기!

미해결

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

안녕하세요! 수업 너무 재밌게 잘 듣고 있습니다. 수업 중에 FrontController에서 어댑터들을 DI로 적용할 수 있다고 하셔서, 좀 더 잘 이해하기 위해서 한번 해보려고 하였습니다! public FrontControllerServletV5(Map<String, Object> handlerMappingMap, List<MyHandlerAdapter> handlerAdapters) { initHandlerMappingMap(handlerMappingMap); initHandlerAdapters(handlerAdapters); } 코드를 돌리기 전에 생각해보니, 이런 식으로 파라메터를 입력받는 방법이 존재하지 않는다고 생각했습니다. V5에서 어떤 방식으로 DI를 구현하면 될까요?? 어떤 방식으로 접근해야할지 모르겠어서 질문드립니다! 감사합니다!!

  • MVC
  • spring
노지환 댓글 1 좋아요 2 조회수 496

연관관계 편의 메소드

미해결

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

강사님 항상 좋은 강의 감사합니다! 연관관계 편의 메소드에 내부에 set과 add , get이 각각 들어갈때가 다르길때 혹시 어떤 경우일때 set이고 get인지 알고 싶습니다. 제가 생각했을때는 1) member엔티티와 order 엔티티 간 setMember메소드에서 member는 다대일 중 '다'이므로 setMember 메서드를 만들어야 했던건가요? 2) 마찬가지로 그렇다면 order와 orderItem 사이에서 orderItem은 일대다 의 '일' 이므로 addOrderItem()메서드가 생성되었다 생각을 했는데 그렇게 따지니 setDelivery() 메서드가 이해가 가지 않습니다. 일대일의 관계로 '일'에 위치해 addDelivery()인가 싶기도 하였으나 그렇지 않더라고요 ㅠㅠ 3) setDelivery()메서드는 set으로 시작하는 setMember() 메서드와 같은 방식으로 작성하는 것인가 했는데 메서드 내부에서는 this . delivery = delivery ; // 배송지 설정 delivery.setOrder( this ) ; 이렇게 set메서드와 add메서드가 섞여있는 것 같은데 이해가 많이 부족한 것 같습니다.. 혹시 이에 관해서 답변해주실 수 있을까요?

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

@ModelAttribute가 한 개가 아닐 경우에는 어떻게 하나요?

해결됨

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

콘트롤러에 @ModelAttribute Item item, BindingResult bindingResult 이렇게 연속적으로 매개변수를 설정해줘야 한다. bindingResult에 넣어주게 되는 Error 객체들이 @ModelAttribute의 필드들과 자동 맵핑되기 때문이다, 라고 이해했습니다. 그럼 두개의 ModelAttribute가 들어가는 경우 addItem ( @ModelAttribute Item item1, BindingResult bindingResult1, @ModelAttribute Item item2, BindingResult bindingResult2 ) 이렇게 설정해줘야 하는지요? 어라 그럼 템플릿에서 errors객체는 BindingResult bindingResult1, BindingResult bindingResult2 이 둘중에 뭐가 되는거지... 같은 의문이 들어서 질문드려봅니다.

  • MVC
  • spring
컴퓨터공부하자 댓글 1 좋아요 14 조회수 786

postgres 관련 공간 쿼리 가능 여부 질문입니다.

미해결

실전! Querydsl

안녕하세요. 저는 주로 postgresql 을 사용하는데 공간 데이터 관련 postgis 공간 함수나 postgres의 with recursive 같은 구문을 사용해야 할 일들이 있는데 이런것들도 querydsl 을 사용하면 쓸 수 있을까요? 아니면 이런 것들은 네이티브 쿼리나 jdbc 템플릿, 마이바티스 등등.. 어떤걸 사용하는게 좋을지 궁금합니다.

  • JPA
  • java
opensesame 댓글 2 좋아요 0 조회수 1221

localhost 오류

미해결

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

안녕하세요 선생님 지금까지 실행은 잘 되다가 크롬에서 http://localhost:8080 이 안되서 어제 application.properties 에 server.port = 8082 로 변경하여 잘나왔었는데 또 무언가를 잘 못건드렸는지 사이트에 연결할 수 없음 localhost 에서 연결을 거부했습니다. 다음 방법을 시도해 보세요. 연결 확인 프록시 및 방화벽 확인 ERR_CONNECTION_REFUSED 이렇게 나옵니다. 포트 번호를 다른것으로 바꿔도 위와 같이 나오는데 이유가 무엇인가요??

  • spring
  • spring-boot
  • java
  • MVC
jangyerin0509 댓글 16 좋아요 0 조회수 12400

select 조회 성능 관련 질문

미해결

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

1. 일반 db에서 select * from 보다 select 칼럼명 from 보통 후자의 방법으로 원하는 칼럼들만 부르는 게 성능 면에서 더 뛰어난 게 아닌지 궁금합니다. 2. 복잡한 테이블에서 전체 칼럼의 갯수가 20~30개가 넘어가면 fetch join 방식보다 DTO로 직접 조회하시는 방법을 쓰시는지 궁금합니다. (fetch join으로 해도 성능이 원하는 만큼 안 나올때 DTO로 직접 조회 하시는건가요?) 3. JPA 관점에서 복잡한 테이블이나, 컬렉션 조회는 강좌에서처럼 최적화를 할 수 있지만. 일반 테이블 jpa에서는 보통 전체 엔티티를 불러올 수 밖에 없던데 1)전체 엔티티를 조회했을 때와 2)원하는 칼럼들만 조회했을 때의 성능차이가 미비한지 궁금합니다. 4. spring data jpa에서 Projections로 원하는 칼럼만 조회할 수 있던데 실무에서는 엔티티가 한 개이면서도 단순할 때 성능을 위해 많이 사용하시는지 궁금합니다.

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

아무리 해도 연결이 안되네요ㅠㅠ

미해결

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

Database "C:/Users/NOTE/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 윈도우 쓰고 있습니다. 비슷한 문제 있으신 분들이 올려준 질문 글이랑 답변도 보고 따라해보는데 계속 이 오류가 떠서 연결이 안됩니다.. 이거 때문에 진도를 못나가고 있네요.. 어떻게 해야할까요ㅠㅠ

  • spring
  • spring-boot
  • java
  • MVC
DOES 댓글 2 좋아요 0 조회수 446

@WebServlet의 name을 지정해 줬는데 언제 사용하나요?

미해결

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

@WebServlet (name = "requestParamServlet" , urlPatterns = "/request-param" ) requestParamServlet 은 언제 사용되어 지나요?

  • spring
  • MVC
지현명 댓글 1 좋아요 5 조회수 462

질문드립니다.

미해결

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

강의중에 궁금한게 생겨서 질문남깁니다. 현재 3년동안 개발을 하면서 ConcurrentHashMap을 사용하지 않고 모든코드를 HashMap으로 처리하였습니다. 물론 실제 고객들이 사용하는 서비스개발 회사가 아니라 주로 금융권 SI프로젝트들 중에서도 고객내부직원들이 쓰는 업무를 주로 개발해서 트래픽이 많이 몰리진 않았거든요. 제가 경험했던 프로젝트들이 여러개의 쓰레드가 접근하지 않아서 HashMap으로도 무리없이 프로젝트가 진행되었던 걸로 생각하면 될까요?? 반대로 트래픽이 몰리는 서비스개발회사에서는 ConcurrentHashMap을 사용하면 되는건가요??

  • MVC
  • spring
김은재 댓글 2 좋아요 6 조회수 904

스태틱 클래스 이런식으로 만들어도 되나요?

해결됨

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

미리 사용할 정보들 미리 저장해둔다는건 맨날 생각만 해보고 해보진 않아서 강의듣고 억지로 만들어 보았습니다. 이런식으로 만들어도 문제가 없을까요? 작동은 잘되는거 같습니다. @Data @AllArgsConstructor public class DeliveryCode { private String code ; private String displayName ; public static class DeliveryCodes{ private static List<DeliveryCode> deliveryCodes = new ArrayList<>() ; static { deliveryCodes .add( new DeliveryCode( "FAST" , " 빠른 배송 " )) ; deliveryCodes .add( new DeliveryCode( "NORMAL" , " 일반 배송 " )) ; deliveryCodes .add( new DeliveryCode( "SLOW" , " 느린 배송 " )) ; } public static List<DeliveryCode> getDeliveryCodes () { return deliveryCodes ; } } }

  • spring
  • MVC
oooo4124 댓글 1 좋아요 1 조회수 248

체크여부에 관계 없이 value값이 항상 true로 되어 있는 이유가 궁금합니다.

미해결

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

로그를 찍어보니까 체크를 해제하면 false로 들어오는게 보이는데 페이지 소스를 보면 value가 항상 true로 되어 있더라구요. <input type="checkbox" id="open" class="form-check-input" disabled name="open" value="true" /> html상에서 checked가 있느냐 없느냐에 따라 체크 여부를 렌더링하는 것까지는 이해했는데 true라는 값이 어디에서 나오는 것인지 궁금합니다. (1) 체크가 되면 open: true 전송 (2) 체크가 안되면 open값 자체가 전송이 안되니 value가 true여도 문제없음 이기 때문에 서버에 있는 value값을 무시하고 value="true"를 디폴트값으로 렌더링하면서 서버상의 true, false값은 checked 태그로만 확인하는 건가요??

  • MVC
  • spring
모기물림 댓글 1 좋아요 4 조회수 1413

잘 와닿지가 않습니다ㅠㅠ

미해결

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

결국에는 Team엔티티의 Members 컬렉션을 수정했는데 쿼리는 Member에 관한 쿼리가 나가서 헷갈리기 때문에 연관관계를 정확하게 잡고 주인 쪽에서만 등록 및 수정이 가능하게 해주는건가요??

  • java
  • JPA
원석나 댓글 2 좋아요 1 조회수 510

item.getOpen()이 안되는 경우

미해결

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

혹시 저와 같은 문제를 겪으실 분들을 위해 제가 잠깐동안 삽질한 경험을 남깁니다. 강의를 쭉 듣던 도중에 로그를 찍는데 item.getOpen()이 안되는 상황을 겪었습니다. 그런데 item.setOpen()은 됐거든요. 찾아보니까 문제는 Item 클래스에서 open을 primitive타입인 boolean으로 선언했기 때문이었습니다. 롬복으로 게터세터를 적용할 경우 primitive boolean의 게터명명규칙이 getSomething이 아니라 isSomething입니다. 따라서 item.isOpen()을 입력해야 에러가 없습니다. 그럼 어떻게 영한님은 isOpen이 아니라 getOpen이 되었는가? 다시 잘 살펴보니 boolean이 아니라 참조형인 Boolean을 사용하셨습니다....ㅜ null값 때문인 것 같습니다. 참조형이니까 롬복이 getOpen을 생성합니다. 생각없이 따라치다가 이런 일을 겪네요. 집중해서 열심히 듣겠습니다. 혹시 이 글을 보게된 여러분 화이팅..

  • MVC
  • spring
모기물림 댓글 5 좋아요 36 조회수 810

연관관계 편의 메소드 질문입니다.

미해결

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

어떤 엔티티 클래스에 작성해야하나요? Order에 ManyToOne으로 묶여있는 member OneToMany로 묶여있는 OrderItems 둘다 작성이 돼 있어서 어떤 규칙으로 어떤 엔티티 클래스에 작성해야 하는지 궁금합니다.,

  • java
  • JPA
  • 웹앱
  • spring
  • spring-boot
ariwarabbang 댓글 1 좋아요 2 조회수 173

연관관계 편의메서드 .

미해결

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

안녕하세요 JPA 활용 1편을보고 넘어왔습니다.. 1)질문 그렇나 현재 아직 이해못한점이 연관관계 편의메서드를 사용하면 어느면서에서 이점이 발생하는지 잘모르겠습니다.. 양방향관계시 연관관계메서드 에서 public void setTeam (Team team){ this . team = team ; team.getMembers().add( this ) ; } team.getMembers().add(this); 이부분이 team 엔티티에서도 Member의 값을 가질수있도록 하는것으로 보여집니다만 team.getMembers().add(this); 이부분이없어도 Team team = em.find(Team.class, teamA.getId()); System.out.println("연관관계"+team.getMembers()); team.getMembers() 를해도 값이 잘 보여집니다.. 어느면에서 편의가 발생하는지 감이잘 안잡힙니다 ㅠ.. 2)질문 일대 다 관계에서 페치조인 쿼리로 페이징을하면 데이터 뻥튀기 때문에 위험하다고 하셨습니다. 그래서 직접 확인을해보고있는데욥 Team teamA = new Team(); teamA.setName("팀A"); em.persist(teamA); Member member1 = new Member(); member1.setUsername("회원1"); member1.setAge(10); member1.setTeam(teamA); em.persist(member1); Member member7 = new Member(); member7.setUsername("회원7"); member7.setAge(10); member7.setTeam(teamA); em.persist(member7); String query = "select t from Team t join fetch t.members"; List<Team> result = em.createQuery(query,Team.class) .setFirstResult(0) .setMaxResults(1) .getResultList(); for (Team team : result) { System.out.println("팀이름 = " + team.getName()); for (Member member : team.getMembers()){ System.out.println("------------> member = " + member); } } 결과 딱이렇게 나왔는데 이것이 뻥튀기가 된결과인가요? 어느부분에서 위험한것인지 잘 모르겠습니다 .. (제생각으로는 0번인덱스 페이지에 팀의값 1개가 잘 출력됫다고 생각되거든요 아니라면 팀에 맴버의 값을 1개만 출력해야하는데 두개가 출력이되어서 문제인건가요?)

  • jpa
  • JPA
  • 질문
  • java
더콰니 댓글 2 좋아요 2 조회수 507

th:action

미해결

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

이 부분을 생략안하고 사용하면 상품등록 버튼을 클릭하면 500에러가 나오는데, 왜 그런지 알 수 있을까요? 그림의 빨간색박스 부분도 th:action을 생략했을 때와, 생략하지 않았을 때 동일합니다.ㅠㅠ

  • spring
  • MVC
김정훈 댓글 1 좋아요 0 조회수 540

인기 태그

인프런 TOP Writers

주간 인기글