묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
암호화 관련 질문
실무에서 설정 파일의 내용을 어떻게 관리하시는지 궁금하여 질문 드립니다. 제 생각엔 [ '평문' -> jasypt 암호화 -> keytool 암호화 ] 이 과정으로 서버에 설정 정보를 저장하는 것이 좋을 거 같은데, 사바사 일거 같지만.... 보통 이렇게 2번 암호화를 하는지 궁금하네요.
-
해결됨Spring Boot를 활용하여 채팅 플랫폼 만들어보기
STOMP에서 메세지를 전송하는 방법에 대해
WssControllerV1에서 @SendTo 어노테이션을 통해 구독중인 클라이언트들에게 메세지를 보낸다고 이해했는데,STOMP 문서를 읽어보니 SimpMessagingTemplate를 통해 메세지를 보내는 것 같았습니다.이 둘의 차이점과 @SendTo를 사용하신 이유를 알 수 있을까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
값 타입 컬렉션 대안 질문드립니다.
안녕하세요.강의에서, 값 타입 컬렉션일때는findMember.getAddressHistory().remove(new Address("old1", "street", "zipcode")); findMember.getAddressHistory().add(new Address("new1", "street", "zipcode"));이렇게 값을 삭제하고 추가하는 방식으로 값을 수정해줬었습니다. 1.AddressEntity entity = findMember.getAddressHistory().get(0); // entity.setAddress(new Address("newCity", "street", "zipcode")); addressEntity.getAddress().setCity("new1"); 엔티티로 변경하게되면 이렇게 수정해주면 될까요?그리고 위와같은 수정 방식에 대해서 entity.setAddress(new Address("newCity", "street", "zipcode")); 를 하든, addressEntity.getAddress().setCity("new1"); 를 하든 동일하게 update쿼리가 하나만 발생하는것을 확인했습니다. 근데 왜 addressEntity.getAddress().setCity("new1"); 를 해도 JPA가 변경감지를 통해 update쿼리를 발생시키는지 궁금합니다. 값 타입을 수정할때는findMember.setHomeAddress(new Address("newCity", a.getStreet(), a.getZipcode())); 이런식으로 새로운 인스턴스를 생성해서 기존 인스턴스를 교체해야한다고 하셨는데 왜 해당 부분에서는 통으로 새로운 인스턴스를 생성해서 교체하지않고 단순히 addressEntity.getAddress().setCity("new1"); 를 하면 update쿼리가 발생하는 이유가 무엇인가요? 그리고 값타입 컬렉션 대신에 이렇게 사용하는 이유가 기존 delete로 다 삭제하고 insert를 각각 해주는걸 단순히 update쿼리 하나로 해당 엔티티에 대해서만 수정하게 하기위해 인가요??감사합니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
다른 예외 처리 방식
강사님께서는 데이터를 먼저 읽고 없으면 예외를 발생시켰는데, 그렇게 하지 않고 일단 업데이트(혹은 삭제)를 시키고 나서 변경된 row의 개수가 0이면 예외를 발생시키는 방법으로 예외 처리를 해도 괜찮나요? 코드는 아래와 같습니다.if(jdbcTemplate.update(sql, request.getName(), request.getId()) == 0) { throw new IllegalArgumentException(); }}
-
미해결생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현
auditing
@EntityListeners(AuditingEntityListener.class) 저걸안쓰는이유가무엇인가요?저렇게 직접구현하는이유가
-
미해결생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현
전역에러처리질문
전역에러처리에서 궁금한게 errorCode라는게무엇일까요 httpStatus로 에러상태코드를알수있는데 에러코드가 따로필요한 이유와 그렇다면 강의에서처럼 구성할경우 enum으로 모든 httpstatus에 따라 에러코드를 enum으로 작성해줘야되는건가요?
-
해결됨RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기
컨슈머 서버 질문드립니다
안녕하세요 @RabbitListener(queues = LogRabbitMQConfig.ERROR_QUEUE) public void consumeError(String message) { System.out.println("[ERROR]를 받음 : " + message); } @RabbitListener(queues = LogRabbitMQConfig.WARN_QUEUE) public void consumeWarn(String message) { System.out.println("[WARN]를 받음 : " + message); } @RabbitListener(queues = LogRabbitMQConfig.INFO_QUEUE) public void consumeInfo(String message) { System.out.println("[INFO]를 받음 : " + message); } @RabbitListener(queues = LogRabbitMQConfig.ALL_LOG_QUEUE) public void consumeAllLog(String message) { System.out.println("[LOG]를 받음 : " + message); }위의 코드처럼 하나의 어플리케이션에서 여러개를 구독하고 있는데실제 현업에서도 하나의 어플리케이션에서 여러개의 메세지를 구독하여 각각 서비스를 처리하나요? 예를들면 문자메세지를 발송하는 외부업체에 api를 쏘는 리스너가있고슬랙api를 통해 error 정보를 쏘는 리스너가있고등등 .. 다양한 리스너를 하나의 애플리케이션 서버에서 처리하는지 궁금합니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
값 타입 컬렉션 대안에 대해 질문드립니다.
@Entitypublic class Member{ ...@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)@JoinColumn(name = "MEMBER_ID")private List<AddressEntity> addressHistory = new ArrayList<>(); ...}강의에서 위와 같이 값타입 컬렉션을 사용하지않고, 일대다 연관관계를 위한 엔티티를 만들어서 사용하라고 하셨는데요.그 부분에 대해서 설명을 못 들은 부분이 있어서 질문드립니다. 1. 다대일 양방향 연관관계를 사용해서 해도 될거같은데, 다대일 양방향 연관관계를 사용하지않고 굳이 일대다 단방향 연관관계를 사용한 이유가 무엇인가요?? 단순히 AddressEntity에서 Member에 대해서 조회할 일이 없고 Member에서만 AddressEntity에 대해서 조회할 일이 있으므로 그런것일까요?2. cascade와 orphanRemoval을 사용하셨는데, 그 이유가 무엇이고 사용하지않으면 안되는 이유도 같이 궁금합니다ㅠㅠ
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
강의 콘텐츠 업데이트 일정
안녕하세요. 수강평들을 살펴보니 올해 상반기 중으로 강의를 업데이트 할 계획이라고 하신 것을 봤습니다. 상반기중에 업데이트 완료될 지, 그리고 업데이트 될 거라면 업데이트 예정 일정 정도를 대략적으로 알 수 있을까요?
-
미해결Practical Testing: 실용적인 테스트 가이드
계층 관련 질문이 있습니다.
위 강의에서는 Response 부분을 service 레이어에 response 패키지 안에 관리를 하고 있습니다.개인적인 생각으로는 요청을 받는 부분은 최상단 Presentation Layer 이고 궁극적으로 어떠한 결과를 return 해주는 것 또한 Presentation Layer 이라고 생각합니다. 그렇기에 requestDto 는 controller 쪽에 있는게 맞고 responseDto 또한 controller 쪽에 있어야 하는게 맞지 않을까 하는 생각이 듭니다!혹시 위 부분 어떻게 생각하시는지 궁금합니다.
-
해결됨Practical Testing: 실용적인 테스트 가이드
'코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다
우빈님 안녕하세요! '코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다 ㅎㅎ저도 그동안 실무에서 자바를 쓰면서 테스트에서 given 절의 test fixture는 빌더로 만들어서 사용하고, 프로덕션에서는 팩토리 메서드로 객체를 생성해왔습니다. (물론 이 강의를 보고나서부터입니다 ㅎㅎ) 그런데 코틀린을 쓰다보니까 롬복을 거의 쓸 일이 없는 것 같더라고요.private constructor & 팩토리 메서드를 코틀린에서 쓰다 보니까 팩토리 메서드로만 객체를 생성해야해서 테스트에서 '맥락을 이해하는데 허들이 하나 더' 생기는 꼴이 되고 있어 조금 고민입니다.. 그렇다고 테스트 전용 팩토리 메서드 같은 것을 만들자니 프로덕션에 테스트 관련된 소스가 바로 생기는 것은 영 석연치 않더라고요.그래서 지금은 일단 생성자를 public으로 열어두고, 팩토리 메서드가 있는 도메인 객체를 만들 때는 무조건 팩토리 메서드만 쓴다. 그리고 테스트에서는 테스트 용이성을 위해 생성자로 객체를 생성하는 것을 허용하는 것으로 해보려고 합니다. 혹시 위 같은 상황에서 우빈님은 어떤 기준으로 쓰고 계신지 궁금합니다..!바쁘실텐데도 시간 내어 확인해주셔서 감사합니다 :)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 편의 메서드 위치
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요~! 궁금한 부분이 있습니다양방향일 경우에는 연관관계 편의메서드를 작성하는게 좋다고 말씀주셨는데 그렇다면 연관관계 메서드를 주인엔티티 선언하는 이유가 있을까요?아니면 상황에 따라 바뀌는걸까요? 기준이 있는지 궁금합니다~!
-
해결됨Spring Boot와 React로 배우는 초간단 REST API 게시판 만들기
Spring Boot , Java 설치시 버전
spring 설정시 스크린샷과 같이 Spring Boot 3.4.3 버전, JAVA 23 버전이 나타나질 않습니다.참고로 저는 동영상 수업을 따라 설치 중이었습니다.
-
미해결실전! 스프링 데이터 JPA
강의 10:25 질문
안녕하세요, 강의 10:25에서 다루신 내용에 대해 질문드립니다. 영속성 컨텍스트에 1차 캐싱된 멤버 객체들이 남아있는 상태에서 벌크 업데이트를 하면 DB를 바로 통하므로 영속성 컨텍스트와 디비의 상태가 달라 예상치 못한 에러를 겪을 수 있다는 내용입니다. 궁금한점은, Spring Data JPA에서 메소드로 정의한 벌크 연산이 결국은 @Query 어노테이션에 JPQL로 작성했으니, JPQL 실행 전 flush 처리가 되는게 아닌건가요? 그렇다면 말씀하신 에러가 없을 거 같은데...궁금합니다!
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
조회기능시 backend 통신 실패
백앤드 cors 설정하고, 화면에서 호출하면 쿼리는 찍히는거 확인되는데, front로 값이 못들어오고 화면 콘솔에는 cors 오류가 뜨네요 ㅜ1) 백엔드 쿼리가 찍혔다면 백앤드쪽 cors 설정 된거 아닌가요?2) 클라이언트로 값이 못들어오고 있습니다. front에서 별도 cors설정이 있어야하는지 문의드려요 gpt한테 물어봐서 withCredentials 설정은 했습니다. 스크린샷 첨부합니다
-
미해결실전! Querydsl
OpenFeign/QueryDSL 관련 정보 공유
Spring Data 조직에서도 OpenFeign/QueryDSL를 공식적으로 지원(Support)한다고 합니다. 현재 공식QueryDSL 최신 버전인 5.1.0에서 아래와 같은 문제가 있습니다.CVE-2024–49203 이슈(CVSS 3.1기준 9.8 높은 심각도)Kotlin KSP 지원관련기타 문제(Issues)등등 공식 QueryDSL에서는 유지보수가 전혀 안되고 있기 때문에 혹시나 궁금하신 분들을 위해 정보 공유 드립니다.1번, 2번관련 내용은 OpenFeign/QueryDSL 에서 모두 패치완료된 내용입니다.KSP - 6.9버전 이상, CVE-2024–49203 6.10.1버전 이상 Spring 공식 홈페이지 OpenFeign/QueryDSL 관련 내용https://docs.spring.io/spring-data/jpa/reference/repositories/core-extensions.html Spring Git OpenFeign/QueryDSL 관련 내용https://github.com/spring-projects/spring-data-jpa/pull/3859 OpenFeign/QueryDSLhttps://github.com/OpenFeign/querydsl
-
미해결Practical Testing: 실용적인 테스트 가이드
혹시 update 로직은 어떻게 테스트하나요? (@Setter?)
강의에선 update 로직이 없어서 테스트할 필요는 없는 것 같은데, 필요한 경우에 엔티티에 @Setter 추가해놓고 테스트 하면 될까요?setter 사용을 지양하라는 글이 많은데, 현업에서는 어떤식으로 테스트하나요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
Missing constructor for type 'OrderQueryDto'
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.실행시 다음과 같은 오류가 발생하는데 ... 정확히 왜 오류가 나는지 이해가 되지 않습니다. ㅠ
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
안녕하세요 강의 포스트맨 요청 데이터 공유받을수 있을까요?
강의 도중에 포스트맨 구글 로그인 하니 데이터가 사라졌습니다혹시 갖고계시면 공유좀 받을수 있을까요?
-
해결됨실전! 스프링 데이터 JPA
단건 update 질문
안녕하세요.단건 update관련 질문이 있습니다.update +연산update Member m set m.stock = m.stock + 1 where m.id = :id 이런식으로 해야하는 연산은 어떻게 처리하나요?벌크작업은 아니지만 개수를 증가시킬 때 할당으로 쓰면 덮어씌워질 수 있느니 + 1 로 처리하는 경우도 있는 것으로 아는데, 이런 경우는 영속성 컨텍스트에 반영이 안되는걸로 알고 있습니다.객체를 기반으로 업데이트 하는 경우 m.stock = n으로 할당이 되어서 이런 경우는 객체지향관점에서 어떻게 처리하고 설계하시는지 궁금합니다.업데이트 전 조회업데이트 전에 findOne 조회를 하시던데, 전 업데이트할 때 요청받은값만 덮어쓰면 되고 그게 더 안전할때도 있다고 생각이 듭니다.이런 경우에는 어떻게 처리하시는지 궁금합니다. 또한, 객체를 기반으로 업데이트하기에는 요청받은 데이터가 객체랑 필드가 정확히 매핑될것 같지 않아서 결국 update문 하나만 요청하는 방식으로 처리해야 할 것 같은데 어떻게 처리하시는지 궁금합니다.감사합니다.