묻고 답해요
137만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결
entity 칼럼 매핑 오류
안녕하세요.legacy시스템을 querydsl로 바꾸는 작업을 하고 있는데요.몇몇 칼럼에서 아래와 같은 에러가 일어나 변환 작업에 어려움을 겪고 있습니다.@Column(name = "a_b_c")private String abc;위의 entity a_b_c칼럼을 repository 단위 테스트할 경우 m1_0.a_b_c 칼럼명을 잘가지고 오는데 스프링에서 서블릿을 올려서 테스트 할 경우 아래와 같이 에러가 납니다.jakarta.servlet.ServletException: Handler dispatch failed: java.lang.NoSuchFieldError: abc at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1096) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) Caused by: java.lang.NoSuchFieldError: abc at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) 칼럼명을 변경하면 해결이 가능하지만 레거시 시스템이므로 칼럼명 변경은 불가능합니다.관련 내용에 대해 아시는분 이 있으시면 답글 부탁드립니다.
-
미해결EDA 기반 Microservice 구현 (with Hexagonal, DDD)
Entity와 VO에 대해..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.도메인모델을 만들때 Entity와 VO는 단순히 불변성을 가지고 구분하는 것인지요?그리고 JPA에서의 Entity와는 다른 개념인지 궁금합니다.감사합니다.
-
미해결스프링 부트 - 핵심 원리와 활용
한 레포에서 여러 프로젝트를 구성 할때, DB 엔티티(entity) 공유 방법이 궁금합니다.
안녕하세요, 프로젝트 폴더&파일 구조에 대해 문의드리고자 글을 남기게 되었습니다.1개 레포지토리에2개(A, B) 프로젝트가 있습니다각각 스프링부트 프로젝트 입니다A 는 API Rest 서버 이고B 는 크론 서비스로 구성된 서버 입니다A와 B 간 통신은 없습니다A 에서 요청을 받으면, DB 에 요청을 저장하고B 가 주기적으로 DB 를 탐색하여 미 처리된 요청을 실제 수행하고자 합니다예를 들어, 메일 발송 또는 영수증 (pdf) 생성 요청을 A 서버가 받아서 DB 에 저장하면,해당 테이블을 B 가 주기적으로 확인하여 작업을 실제 수행하고자 합니다.B 서비스에서 db 엔티티를 어떻게 이용하는게 좋은 구성인지 궁금합니다.제가 생각해본 바는 3가지 입니다1. entity 만 독립된 레포로 구성하고, submodule 로 각각 참조하도록한다.- 1개 레포 쓰려고 구성했는데 entity 만 독립 레포로 분리한다는 점이 불편하게 다가옵니다, 그리고 submodule 구성 자체도 거부감이 들었습니다2. A 에 주로 entity 를 작성하고, 필요한 부분만 B 에 일부 복사하여 사용한다.- 구성하기는 편하지만 관리가 잘 될까, 변경점을 잘 따라갈 수 있을까 걱정됩니다3. 프로젝트 A 와 B 를 합치고, 실행을 각각한다.Repo|___ A|___ src / main / kotlin / com / test / api / entity|___ src / main / kotlin / com / test / api / service|___ src / main / kotlin / com / test / cron / service- api 서버와 cron 서버 jar 자체를 분리하고 싶엇는데, 제가 찾아본 바로는 gradle 관련 포럼에서 이렇게 구성하는 것을 비추천 한다는 글들을 보았습니다, 구체적으로 찾아보진 못한 상태입니다*현재구성)Repo|___ A|___ src / main / kotlin / com / test / api / entity|___ src / main / kotlin / com / test / api / service| ...|___ B|___ src / main / kotlin / com / test / cron / service위와 같은 환경에서 권장되는 방법이 어떤 것인지 궁금합니다.읽어주셔서 감사합니다!
-
해결됨실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
도메인 객체를 data class로 작성하지 않은 이유가 따로 있을까요?
java의 코드를 그대로 옮기기 위해서 class로 진행을 하신건지 아니면 data class로 하면 안 되는 이유가 있는지요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
DTO 사용 문의
안녕하세요 좋은 강의 감사드립니다. 한가지 여쭤볼게 있어서요강의에서는 DTO를 따로 정의안하고 엔티티로 모두 사용한것으로 보여지는데 실무에서도 DTO와 엔티티를 구분안하고 해도 되는 걸까요?찾아보니 엔티티는 setter를 사용안하는것을 권장하고DTO의 setter를 구현해서 대부분 기능적 처리하고 마지막으로 DB저장할때 엔티티를 사용하는 것 같아서요
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
안녕하세요. Entity 필드 구성과 응답 DTO에 대해 질문 드립니다.
안녕하세요 김영한 강사님. 항상 좋은 강의와 친절한 답변 너무 감사드립니다.강의를 듣고 게시판 구현 프로젝트 진행 중 두 가지 고민이 생겨 질문 드립니다.첫 번째 질문은전체 게시글 리스트를 반환할 때, 게시글 리스트에 댓글 개수와 태그 이름 등을 함께 API 응답으로 반환해야 하는 상황입니다. 이때,엔티티의 필드에 comment_count, tag_name 형식으로 적어줘야 할 지, 아니면comment와 tag 테이블에 쿼리를 날려 가져와서 응답 DTO 필드에 적어줘야 할 지 고민하고 있는 상황입니다.1번 방식으로 하면 무언가 불필요한 필드가 테이블에 포함되는 것 같고, 2번 방식은 추가 쿼리가 많이 나갈 것 같아 망설여집니다.보통 이런 경우 어떤 방식으로 처리는 게 좋은 지 궁금합니다!두 번째 질문은응답 DTO에 클라이언트가 필요로 하지 않는 데이터가 포함되어 있어도 되는지 궁금합니다.예를 들어, title과 content를 필드로 가지는 DTO를, title만을 필요로 하는 요청에 반환해도 괜찮은 지, 아니면 응답 마다 DTO 각각 따로 생성해야 하는지 궁금합니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테이블 생성 안됨
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 강의 잘 듣고있습니다. 강의 중 문제가 발생하여 질문드립니다. Entity 만들고 실행하면 테이블이 생성되어야하는데 H2에 테이블이 생성되지 않고 있습니다. 테이블 생성 쿼리도 콘솔에 안뜨고요... 비슷한 문제가 다른분들도 많아서 관련글 찾아봤는데 대부분 yml 위치를 test파일에 넣었거나 띄어쓰기 문제이더군요... 그런데 전 두가지 모두 정상적인 상황입니다. 도무지 테이블이 왜 생성이 안되는지 모르겠습니다 .... 도와주세요.....
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA 사용시 DB 설계 관련 질문입니다!
안녕하세요 강사님. 보통의 프로젝트를 할 경우 DB 테이블 설계를 먼저 하는것으로 알고있는데요. JPA를 사용할 시에 테이블을 먼저 설계하고 그에 맞춰 엔티티를 작성하는지, 또는 먼저 엔티티를 중심으로 설계하는지 궁금합니다! 감사합니다.
-
미해결실전! Querydsl
entity와 DTO의 join
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 영한님 jpa 로드맵을 수강하고 사이드프로젝트를 진행중인데요. 제목과 같이 entity 와 dto를 join할수 있는지 궁금합니다. 구체적으로 설명해보자면 우선 1. open api를 통해서 List<T> 를 DTO로 받아서(ex, 상품 list) 사용자가 상품을 좋아요 누른 데이터를 DB에 저장해두었습니다.(member idx 와 상품 idx 저장) open api 에서 받은 데이터는 따로 DB에 저장하지 않고 호출시마다 DTO로 응답하는데요. 2. 여기서 당연하게도 open api에서 받은 list에는 사용자의 좋아요가 담겨 있지 않기때문에 DB에서 사용자가 좋아요 누른 상품 list를 조회 후에 open api 에서 받은 list 를 돌며 좋아요 데이터를 추가해주고 있습니다. 혹시 2번처럼 진행하지않고 DB에서 사용자 좋아요 누른 상품(entity)을 open api 에서 받은 데이터(DTO)와 join 하는 방법은 없을까요? 설명이 부족하다면 말씀 부탁드립니다 ! 감사합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강사님께서 사용하시는 ERD 그리기 툴이 있을까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 일부 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 스프링 부트와 JPA 활용 강의를 듣고 토이프로젝트를 진행하려고 하는데, entity relation diagram을 간단하게 그릴 툴이 뭐가 있을까 싶어서 질문 남깁니다. Draw.io나 erdcloud 등의 사이트를 봤지만 초심자가 무턱대고 접하기엔 생각보다 벽이 있어서, 강사님께서 직접 사용하시는 툴은 어떤 것인지 궁금해 질문합니다.
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
common entity 상속 시 컬럼 순서 문제
안녕하세요 typeorm 강의에서 쓰신 common entity를 상속하는 코드를 사용하면 위와 같이 컬럼 순서가 나오는데 이렇게 되면 가독성이 안좋아서 컬럼 순서를 바꿔보려 했습니다. 검색해보니 엔티티를 상속했을때 컬럼 순서를 바꿀수 없다고 합니다. https://www.mrlatte.net/code/2020/11/03/typeorm-entity-inheritance.html 실무에서는 어떻게 사용하시는지 궁금합니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA 엔티티 이름 Groups 테이블 생성
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용] Group은 데이터베이스 예약어이기 때문에 엔티티 이름을 Groups로 하여 설계하였습니다. 하지만 ddl create으로 설정하고 실행한 결과, Groups 테이블만 생성이 되지 않았습니다. Caused by: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'groups (id)' at line 4 혹시 제가 잘못 이해하고 있는 부분이 있을까요? 알려주시면 정말 감사하겠습니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
테이블 생성되는 이름..
//클래스 @Table(name = "Members")@Entity public class Member { //application.yml ddl-auto: update 로 사용했을때.. mssql에서는 테이블이 members, h2에서는 MEMBERS 로 테이블이 생성이 됩니다.대소문자가 서로 다르게 나오는데.. 이걸 제어할 방법하는 설정이 있을까요? 어느 dbms에서든 Members 로 생성이 되게..
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 편의 메서드 사용 목적 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] 안녕하세요. 강의 정말 너무 잘 듣고 있습니다! ㅠㅠ JPA 무지한이던 제게 정말 큰 도움이 됐습니다. 강의를 다 듣고 복습중인데, 연관관계 편의 메서드 관련해서 궁금한 게 있어서 질문드립니다. public void setMember(Member member){ this.member = member; member.getOrders( ).add(this); } 를 통해 Order 엔티티에 member 정보를 넣어줌과 동시에 Member 엔티티에 order 정보를 넣어주는데요, 두 엔티티 모두에 값을 셋팅해주기 위함인 건 알겠는데, 실제로 어떤 상황에서 쓰이는지 잘 모르겠습니다. 위와 같이 연관관계 편의 메서드를 통해 Member의 order에 값을 넣어주면, service 등에서 order.setMember(member); 를 해주었을 때, 별도의 Member 객체를 생성해서 setOrders()를 해주지 않아도, member.getOrders(); 를 통해 해당 멤버에 저장된 order 정보들을 가져올 수 있다는 것까지는 알겠는데, 실제로 이게 어떤 상황에서 쓰이는 건지 잘 모르겠습니다. DB의 member 테이블에서는 order 관련 정보를 안갖고 있는데(그래서 변경감지로 Member 테이블을 업데이트 해주는 것도 아닐텐데), Member 엔티티 order 정보를 넣는 게 왜 필요한지 설명 부탁드립니다. 감사합니다
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
[User MicroService - 회원가입] 레이어별 다른 클래스 사용이유
VO나 Entity 클래스 하나만 생성해서 데이터를 주고 받을 수 있는데, modelmapper 라이브러리를 사용하면서까지 RequestUser, UserDto, UserEntity 클래스를 사용하는 이유가 무엇인가요?
-
미해결자바 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);} 제가 뭘 잘못하고 있는지, 어떤걸 참고해야 하는지 알려주시면 알될까요?? 감사합니다. 좋은 하루되세요
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
JPA 매핑에 대해 궁금한게 있습니다.
보통 클래스 1개당 Entity 도 1개가 일반적인 상황인데 Mongo DB 같은경우 한 개의 Collection에 모든 Data 를 담으면 오히려 DB 역할이 퇴색되기 때문에 여러 Collection(Table)으로 나누곤 하는데요. 그러면 같은 Class 형태에 이름이 다른 경우는 어떻게 할 수 있을 까요? @Entity(name = "A")public class TestA { @Id private Long id; private String data;} @Entity(name = "B")public class TestA { @Id private Long id; private String data;} ... @Entity(name = "Z")public class TestA { @Id private Long id; private String data;} 위와 같이 A~Z 까지 테이블이 모두 동일한데 한개의 class 로 관리하고 싶습니다. only read 로만 사용할 건데 방법이 없을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
하나의 Repository에서 2개 이상의 서로 다른 유형의 엔터티를 반환해도 되나요?
안녕하세요. 좋은 강의 덕분에 업무에 많은 도움이 되고 있습니다. 감사합니다. ^^ 다름이아니라, 강의 예제에 나온 repository에서는 보통 한 종류의 엔터티를 반환하는데요. 예를 들면 OrderRepository 에서는 반환값이 Order, List<Order> ItemRepository에서는 Item, List<Item>을 반환합니다. 하지만 OrderRepository에서 Item, List<Item>을 반환하는 경우는 없더군요. 그런데 여러 테이블간에 조인을 거쳐 최종 조회되는 엔터티가 해당 Repository의 엔터티가 아닌 경우, 이럴 때는 어떻게 하는 게 좋을까요? 예를 들면 엔터티 간의 관계가 아래와 같을 때 Order : OrderItem = 1 : N Item : OrderItem = 1 : N Item : ItemCategory = 1 : N Category : ItemCategory = 1 : N Order Id = 100인 Item의 List<Category>를 조회하고자 하는 경우 OrderRepository에서 각 엔터티들의 조인을 거쳐 List<Category>를 반환하는 게 좋을까요? 아니면 각각의 Repository에서 필요한 엔터티를 반환받아 최종적으로 List<Category>를 찾는 것이 좋은가요? 아니면 제 3의 별도의 Repository를 만드는 것이 좋을까요? 여러개의 테이블을 조인하여 한 번의 쿼리로 데이터를 조회하는 것이 더 성능상 이점이 있을 것 같은데요 반면 Repository에서 서로 다른 유형의 엔터티를 반환해도 유지보수에 문제가 없을지 걱정이 듭니다. 김영한님의 조언 부탁드립니다.