inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

fetch 조인 일 대 다 관게

미해결

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

안녕하세요 갓영환님 강의 정말 잘듣고있습니다. 정말 좋은 강의 감사합니다! 제 궁금한 부분은 저는 fetch조인이 일 대 다 일때 데이터 뻥튀기가 일어나서 데이터 값이 중복되는 부분입니다. fetch조인의 특성인 연관관계 매핑된 객체를 함께 조회하는 기능 때문이라 생각하고 있는데.. 영한님 자료인 위 표를 예를 들면 Team 컬럼 팀A와 Members 컬렉션이 fetch조인될때 팀A와 연관되는 Member 테이블 로우가2개라서 한번 조인될때마다 fetch조인의 특성으로 Member 테이블에 FK외래키 연결 컬럼 모두 가져와서 팀A관련 정보가 2번 반복되는게 맞나요? 질문에 답변 기다리겠습니다 !

  • JPA
  • java
1일 3시간 공부 댓글 1 좋아요 3 조회수 1441

cascade와 mappedby의 관계에 대해 여쭤보고 싶습니다.

미해결

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

안녕하세요 제 이해가 짧아 어딘가 맥락을 놓친 것 같습니다만 그 부분을 스스로 찾기가 힘들어서 여쭤봅니다. @OneToMany(mappedBy = "order", cascade = cascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); 예시에 나온 위 소스를 보면 mappedBy가 걸린 곳에 (즉 연관관계의 주인이 아닌 쪽에) cascade가 걸려있습니다. 제가 이해하기론 mappedby는 읽기만 가능한데, cascade를 붙임으로써 arraylist에 들어있던 마치 업데이트도 가능해지는 것 같이 들려서 제가 헷갈리는 부분을 확인차 여쭤보고 싶습니다. mappedby가 쓰기도 가능해지는 건가요? 아니면 제가 어딘가 내용을 오해했나요?

  • spring-boot
  • spring
  • 웹앱
  • java
  • JPA
kim Youngho 댓글 3 좋아요 0 조회수 985

AccessDeniedHandler를 직접 구현하여 인가 예외 처리에 대한 질문입니다.

해결됨

스프링 시큐리티

안녕하세요 Spring Security ExceptionTranslationFilter 강의 09:00 부터 진행하는 내용을 듣고 질문사항이 생겨 글을 남깁니다. 인증/인가 예외 처리 필터인 ExceptionTranslationFilter 기능 중 AccessDeniedException(인가 처리 실패 예외)에 대해 예외를 처리할 수 있는 페이지를 설정하는 방법과, AccessDeniedHandler를 직접 구현해서 사용하는 방법이 있었는데요. accessDeniedHandler() 메소드를 사용하지 않고 accessDeniedPage() 메소드를 사용하여 URL을 지정하고, Controller와 HandlerMethod를 구현하였습니다. 이때 HandlerMethod의 인자로 Principal 객체, Model 객체 외 HttpServletRequest 객체를 넘겨 받아 AccessDeniedHandler를 직접 구현한 것과 마찬가지로 "로그 출력", "VIEW에서 인증된 사용자 정보와 함께 에러 메시지 출력"을 하였는데요. 이렇게만 본다면 AccessDeniedHandler를 직접 구현하는 것과 예외를 처리할 수 있는 페이지를 설정하여 HandlerMethod에서 처리하는 것의 차이가 없어 보였습니다. AccessDeniedHandler를 직접 구현하여 얻을 수 있는 추가적인 장점이 있을까요? 미리 답변 감사드립니다.

  • java
  • spring
Henu 댓글 1 좋아요 2 조회수 380

fetch join 할 때 쿼리에 대한 질문드립니다!

미해결

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

n+1 문제가 발생하는걸 위해 페치조인을 사용했는데 select o from Order o join fetch o.member join fetch o.delivery d 이렇게 사용할때 의문이 드는부분이 o.member는 그냥 적어주었는데 o.delivery 에서는 왜 d라고 별칭을 준것인지 궁금합니다 별칭이 있거나 없거나 유무에 따라 차이가 존재하나요?? 혹은 페치조인을 사용할 때 첫번째로 join하는 테이블은 별칭을 사용하지 않고 두번째 테이블부터 별칭 사용이 가능하다거나 하는 제약사항이 있는지 궁금합니다! 결론 : o.member는 별칭이 없고 o.delivery는 왜 별칭이 있는가

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

DTO 질문

미해결

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

안녕하세요 질문이 2가지가 있습니다. 해당 클래스에서만 DTO가 쓰인다면 controller 클래스안에 DTO를 선언해도 되나요? DTO클래스 이름은 DTO를 붙일필요없이 ~request 또는 ~reponse라고 붙여도 될까요?

  • spring-boot
  • spring
  • JPA
  • java
빈센트 댓글 1 좋아요 4 조회수 263

질문 있습니다.

미해결

실전! Querydsl

안녕하세요 영한님. private BooleanExpression usernameEq(String userCond); 이 함수를만드셧는데, 이런 함수들은 어느 클래스에서 관리하는게 깔끔할까요??

  • java
  • JPA
오세진 댓글 1 좋아요 3 조회수 185

mappedBy를 사용한 경우

미해결

실전! 스프링 데이터 JPA

예제 도메인모델과 동작확인 강의에서 보다 질문드립니다. 13분08초쯤에 member 엔티티에 changeTeam부분을 보면, team.getMembers().add(this) 부분이 필요없는 거 아닌가요? 기초강좌에서 mappedBy를 사용하면 엔티티의 주인이 아니라고 배운것 같은데, 굳이 저렇게 추가를 해줘야 하는 이유가 있을까요?

  • java
  • spring
  • spring-boot
  • JPA
이호종 댓글 1 좋아요 0 조회수 257

default_batch_fetch_size 관련질문

해결됨

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

안녕하세요 선생님 최근 default_batch_fetch_size 관련 질문과 비슷한 상황이지만 조금 다릅니다. 현재 A 테이블과 B테이블이 one to many 로 연관관계가 있고 현재 A 테이블 기준으로 쿼리를 날린다음(테이블 B는 페치조인하지 않음) 서비스 단에서 (테이블 B)부분 lazy를 강제 초기화 해주고 있습니다. 제가 batchsize를 다르게 주면서 테스트를 해보았습니다. 1. 쿼리 결과물 : 180개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 1073개 default_batch_fetch_size=100 in 절에 나가는 batch size= 100, 50, 25, 5 총 4번 비정상 fetch size되로면 2번에 나가야함 2.쿼리 결과물 : 180개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 1073개 default_batch_fetch_size=80 in 절에 나가는 batch size= 80,80,20 총 3번 정상 3.쿼리 결과물 : 180개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 1073개 default_batch_fetch_size=500 in 절에 나가는 batch size= 125, 31, 15 ,9 총 4번 비정상 fetch size되로면 1번에 나가야함 4.쿼리 결과물 : 180개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 1073개 default_batch_fetch_size=180 in 절에 나가는 batch size= 180 총 1번 정상 5.쿼리 결과물 : 30개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 23개 default_batch_fetch_size=100 in 절에 나가는 batch size= 25, 5 총 2번 비정상 fetch size되로면 1번에 나가야함 6.쿼리 결과물 : 30개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 23개 default_batch_fetch_size=30 in 절에 나가는 batch size= 30 총 1번 정상 7.쿼리 결과물 : 30개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 23개 default_batch_fetch_size=20 in 절에 나가는 batch size= 20, 10 총 2번 정상 8.쿼리 결과물 : 30개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 23개 default_batch_fetch_size=500 in 절에 나가는 batch size= 15, 15 총 2번 비정상 fetch size되로면 1번에 나가야함 혹시 자체적으로 최적화 알고리즘이 적용되면서 이렇게 제각각 나가는건가요? 아니라면 혹시 저 in 절을 만드는 부분을 디버깅을 해볼려면 어떤 클래스를 찾아보면 될까요?

  • spring
  • spring-boot
  • java
  • JPA
asdkfur 댓글 2 좋아요 17 조회수 4892

오버라이드 단축키

미해결

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

오버라이드 단축키가 어케 되나요?? 구글에서 찾아보니 ctrl+o 하라는데 저런식으로 선택하는?? 화면은 안나오더라구요

  • JPA
  • java
NickNamEE 댓글 3 좋아요 0 조회수 2091

아톰에디터에 색이 다른데요.

미해결

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

선생님 화면하고 print 라던가 sep 라던가 색이 제꺼 아톰 에디터와 다른데요. 제가 설치를 잘못한 건가요?

  • python
댓글 1 좋아요 0 조회수 396

파이썬 설치에서 체크가 안돼요.

미해결

마인크래프트 게임을 활용한 파이썬 프로그래밍 완벽 이해

파이썬 설치에서 Install launcher for all users (recommanded)에 체크가 안돼요.

  • python
슈류튠 댓글 2 좋아요 0 조회수 938

스테이징 서버가 무엇인가요?

해결됨

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

안녕하세요? 강의 듣다가 궁금해져서 질문합니다. 인터넷에서 검색해보니 스테이징 서버가 임시 서버로 해석이 된다고 하더라구요.ㅎㅎ 그러면 스테이징 서버를 만드는게, 실제로 운영하기 직전에 운영서버와 비슷하게 만들어서 테스트? 하는 건가요? 정확하게 잘 몰라서.. 대략 짐작으로 유추해보고 질문 올립니다. 감사합니다.

  • JPA
  • java
박용훈 댓글 2 좋아요 4 조회수 14419

RequestDTO ResponseDTO 관리

미해결

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

실무에서 사용할 때 질문입니다. RequestDTO ResponseDTO를 패키지와 클래스를 따로 만들어서 관리하나요? 아니면 보통 컨트롤러에 이너클래스로 만들어서 사용하나요

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

default_batch_fetch_size 옵션

해결됨

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

안녕하세요... 테스트 환경에서 <entry key="hibernate.default_batch_fetch_size" value="500" /> 이렇게 했는데 실제로는 15개씩으로 나눠지네요.... version 은 5.2.10 이네요... 본격적으로 플젝 들어가는데... 난감하네요... 강의 예제도 데이터 더 넣고 하면 15개씩만 적용되네요... 뭐가 문제가 있나요?

  • spring-boot
  • java
  • spring
  • JPA
달마다서쪽 댓글 5 좋아요 0 조회수 1162

유효성 검사 질문

미해결

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

안녕하세요 강사님 다름이 아니라 기존에 프로젝트에서 spring 프레임워크, jsp, 자바스크립트 + jquery 기반으로 실무에서 웹개발을 했는데 사실상 스프링을 사용하고 있다고 말하기 민망할 정도로 기능을 거의 사용하지 못했었습니다. 그래서 이부분도 새로 공부중입니다ㅠㅠ 강의를 듣다보니 @Vaild나 NotEmpty같은 어노테이션도 알게 되고 BindingResult 같은 클래스 패키지도 알게되면서 뭔가 새로태어나는 기분이 들고 있습니다. 이번 강의 끝에 유효성 검사부분을 배우면서 생각이 드는 것이 저는 보통 유효성 검사를 할 때 자바스크립트 jquery를 사용해서 클라이언트단에서 유효성 검사를 하고 중요한 데이터의 경우 백단에서 DB체크(?)를 한번 더 해주는 식으로 개발했었는데요 스프링+타임리프를 조합하니 클라이언트단에서도 UX조작이 가능한 것 같았습니다. 유효성 검사의 어노테이션들을 적절하게 사용한다면 더이상 클라이언트단에서 자바스크립트를 통해 유효성 검사 부분이 불필요하게 되는 건가 조심스럽게 여쭤봅니다.

  • spring
  • spring-boot
  • 웹앱
  • JPA
  • java
청율 댓글 1 좋아요 2 조회수 541

@Column의 insertable에 대해서 여쭙고 싶습니다.

미해결

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

안녕하세요 알찬 강의 잘 보고 있습니다. updateble이 false인 경우는 쉽게 생각해볼 수 있는데 insertable이 false인 경우는 어떤 경우를 상정해볼 수 있을까요?

  • JPA
  • java
kim Youngho 댓글 2 좋아요 2 조회수 2151

classloader를 실행하는 주체

해결됨

더 자바, 코드를 조작하는 다양한 방법

classloader 시스템에서 일어나는 로딩 과정, 링크과정, 초기화 과정은 interpreter에 의해 수행되는 건가요? java 프로그램을 실행하게 되면 최초에 인터프리터가 바이트코드를 읽어 들이고 클래스로더시스템의 각 과정들을 수행하며 데이터들을 메모리 영역에 쌓아둔다고 보면 될까요?

  • java
  • JPA
  • spring
inflearn1212 댓글 1 좋아요 0 조회수 231

검색어 랭킹과 비슷하게 다른 문제를 만들어 보았습니다.

해결됨

남박사의 파이썬 기초부터 실전 100% 활용

다음에서 날씨 정보를 크롤링 해와서 프린트 해주는 예제 입니다. import requests from bs4 import BeautifulSoup import time def time_function(f): def wrapper(*args,**kwargs): start_time = time.time() result = f(*args,**kwargs) end_time = time.time() -start_time print("{} {} time {}".format(f.__name__,args[1],end_time)) return wrapper @time_function def r_find_all(url , parser): r = requests.get(url) if r.ok : bs = BeautifulSoup(r.text,parser) #print(bs) lists = bs.select(".list_weather > li") for li in lists : areaName = li.find("span" ,{"class": "txt_part"}).get_text() temper = li.find("span" ,{"class": "txt_temper"}).get_text() status = li.find("strong").get_text() print("지역 : {} | 날씨 : {} | 온도 : {}".format(areaName,status,temper)) @time_function def r_select(url,parser): r = requests.get(url) if r.ok : bs = BeautifulSoup(r.text,parser) lists = bs.select(".list_weather > li") for li in lists : areaName = li.find("span" ,{"class": "txt_part"}).get_text() temper = li.find("span" ,{"class": "txt_temper"}).get_text() status = li.find("strong").get_text() print("지역 : {} | 날씨 : {} | 온도 : {}".format(areaName,status,temper)) #naver가 이제 바뀌었기 때문에 다음의 날씨 정보로 가져오자 print("다음에서 가져온 날씨 정보") r_find_all("https://www.daum.net","html.parser") r_select("https://www.daum.net" , "lxml")

  • python
  • 웹-크롤링
최재영 댓글 1 좋아요 1 조회수 302

fetch join vs join

해결됨

실전! Querydsl

안녕하세요 선생님 오랫만에 질문 다시 올립니다.이번강의도 정말 잘 듣고 있습니다. 아래와 같이 2가지의 다른 방식으로 queyrdsl를 사용하면 나가는 쿼리는 동일합니다. 하지만 jpa 에서 처리하는 방식이 다른거죠? fetch join을 사용하면 LAZY까지 초기화 해서 한 객체를 만들어주고 다른 방식은 그냥 다른 두 객체로써 가지고 오는거죠? Member findMember = queryFactory .selectFrom(member) .join(member.team,team).fetchJoin() .where(member.username.eq("member1")) .fetchOne(); Tuple findMember2 = queryFactory .select(member,team) .from(member) .join(member.team,team) .where(member.username.eq("member1")) .fetchOne(); select member0_.member_id as member_i1_1_0_, team1_.team_id as team_id1_2_1_, member0_.age as age2_1_0_, member0_.team_id as team_id4_1_0_, member0_.username as username3_1_0_, team1_.name as name2_2_1_ from member member0_ inner join team team1_ on member0_.team_id=team1_.team_id where member0_.username=? select member0_.member_id as member_i1_1_0_, team1_.team_id as team_id1_2_1_, member0_.age as age2_1_0_, member0_.team_id as team_id4_1_0_, member0_.username as username3_1_0_, team1_.name as name2_2_1_ from member member0_ inner join team team1_ on member0_.team_id=team1_.team_id where member0_.username=?

  • JPA
  • java
asdkfur 댓글 2 좋아요 3 조회수 1191

소리가 작아요..

미해결

자바 프로그래밍 입문 강좌 (renew ver.) - 초보부터 개발자 취업까지!!

랩탑기준 스피커 출력 최대로 했는데도 잘 안들리네요

  • java
그리텐 댓글 0 좋아요 4 조회수 156

인기 태그

인프런 TOP Writers

주간 인기글