묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
포폴 데이터모델링, jpa설계하다가 질문 !!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요?? 김영한님 JPA강의 덕에 포폴 순항하고 있습니다. 항상 좋은 강의 감사한 마음을 가지고 있습니다. 파이팅하세요 !!궁금한점을.... 간단하게 설명하려고 노력하겠습니다 !!예를들어서 블로그 포스팅 domain을 아래와 같이 만들었습니다...id: ~~~~content: ~~~~tags: ~~~ (일대다 관계)comments: ~~~(일대다 관계)그런데 !!! 여기서 궁금한점 !!제 생각으로는...아 그냥 편하게 포스팅한번에 끌고와서(tags, comments) 응답해주고 싶은뎅...그런데 영한님께서는 이 강의에서 일대다 관계를 두번이상하면 안된다고 하셔서...ㄷㄷ;;;;그래서, 오랜 고민끝에 포스팅 (id,content,tags)를 응답해주고 comments는 다대일 방법으로 응답을 해줬거든요??.... (이게 옳은방법일까...ㄷㄷ;;)그러니까 요청을 두번 보내는거에요..포스팅 한번... 포스팅에 연관관계있는 comments 한번..저의 이러한 판단과 설계과 괜찮은 걸까요??질문드리고 싶습니다 !! (잘 이해하셨을라나...ㄷㄷ;ㅠㅠ)
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
일대 다 관계 조회 질문입니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 영한님! 평소에 영한님 강의를 들으면서 개발 공부 열심히 하고 있는 개발자입니다. 일대다 연관관계에 대해서 궁금한 점이 있어서 여쭤봅니다. 일대다를 페치 조인하면 데이터가 뻥튀기 되어서 먼저 toOne 연관관계인 것들만 페치 조인으로 가져오고 그 다음에 @BatchSize를 사용하든 in 쿼리를 사용해서 페이징을 유지하면서 일대 다를 성능 최적화 시키면서 가지고 올 수 있다는 것은 이해를 했습니다! 그런데 궁금한 점이 생겨서 질문드립니다. 예를 들어 회원 리스트 조회 API에, member와 member_account 테이블이 있고, 한개의 멤버에 여러 개의 멤버 account가 있을 수 있는 일대 다 형식입니다 member를 기준으로 페이징을 하고 싶은데, 조회 API 검색 조건에 member와 member_account테이블을 동시에 봐야되는 요구사항이 있어서 쿼리에 member와 member_account를 join 하고 where절에 해당 테이블을 사용할 수 뿐이 없으면,이런 상황에서는 데이터가 뻥튀기 되고 member를 기준으로 페이징이 안될 것 같은데 이거는 기술적으로 해결 방법은 없고 기획적으로 접근 방법을 달리 해야되는지 궁금해서 여쭤봅니다. 긴 글 읽어주셔서 감사합니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대다, 다대다 Entity 설계 관련 질문드립니다.
안녕하세요, 선생님. 강의를 듣고 이제 첫 실전에 jpa를 사용하는데 Entity 설계 과정에 어려움이 있어서 질문드립니다. 다름이 아니라 제가 스프링 시큐리와 같이 회원과 권한의 테이블을 설계하려고 해서 조사를 해보니 https://github.com/zidol/springsecurity_jwt_mysql/blob/main/src/main/java/co/kr/nakdong/entity/author/User.java https://github.com/zidol/springsecurity_jwt_mysql/blob/main/src/main/java/co/kr/nakdong/entity/author/Authority.java 와 같은 구조 혹은 @ManyToMany(cascade=CascadeType.ALL) @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id")) private Set<Role> roles; 다대다 구조를 많이 사용하더라구요.. 위 코드의 User 와 Authority는 일대다 구조인데 강의때 배울때 연관관계 주인 설정이나 fetch 타입 설정이 다르고 일대다는 권장 하지 않으셔서 조금 혼동이 오더라구요.. 지 양하라는 말씀을 그대로 쓰는코드들도 꽤 있더라구요. 그래서 최대한 강의때 배운데로 해보려고 아래 스샷처럼 변경 해보았습니다. 위 ERD 이미지 처럼 Entity를 변경해보았습니다.(테이블명은 작업중이라 안맞습니다.) 로그인 시 User객체를 조회 하여 불러오는데 test 코드에서 UserRepository를 통해서 User를 불러오면 데이터를 잘 조회 합니다. 제가 로그인을 UsernamePasswordAuthenticationFilter를 상속받아 attemptAuthentication메소드를 재구현했는데 리턴하는 부분에서 could not initialize proxy - no Session 에러가발생하네요.. @SneakyThrows@Overridepublic Authentication attemptAuthentication( HttpServletRequest request, HttpServletResponse response) throws AuthenticationException{ UserLoginDto userLogin = objectMapper.readValue(request.getInputStream(), UserLoginDto.class); String requestURI = request.getRequestURI(); if(userLogin.getRefreshToken() == null) { UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken( userLogin.getUsername(), userLogin.getPassword(), null ); // 에러 발생부분 return authenticationManager.authenticate(token);} 제가 뭘 잘못하고 있는지, 어떤걸 참고해야 하는지 알려주시면 알될까요?? 감사합니다. 좋은 하루되세요