묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
api 에 대해 질문이 있습니다.
안녕하세요 영한님 며칠 비 내렸더니 선선한 요즘이네요 ㅎㅎ API에 대해 궁금한 점이 있어 질문 드립니다. 이 강의 이후에도 api 에 대해 계속해서 다루게 되는데, 어떤 형식의 데이터를 가지고 있는지 api의 기준 같은 것이 실무에서 프로젝트 별로 딱 정해져있는건가요? 결과를 필요로 하는 개발자가 이런 데이터가 나오게끔해서 만들어주세요~ 하면 이제 그것에 맞춰 개발을 하게 되는 것인지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
메서드를 만들어서 사용할때는
Item쪽에서 change() 메서드를 만들어야하나요 ? 만약 만들게된다면 service에서는 파라미터값으로 Id값을 안넘겨주고 findeOne만 실행하게 되는데 Item class에서는 값을 셋팅할때 book에대한 Author는 수정을 어떻게하나요?? Item에 존재하는 필드로 넘겨받은 값들은 수정할 수 있는데 Book에 있는 Author는 수정을 못하는데 어떻게 하면 되나요?
-
해결됨[개정판 2023-11-27] Spring Boot 3.x 를 이용한 RESTful Web Services 개발
SOAP도 아니고 REST도 아닌 HTTP API는 뭐라고 하나요?
안녕하세요. SOAP도 아니고 REST도 아닌 HTTP API는 뭐라고 하나요? 특별히 부르는 명칭이 있나요? 아니면 그냥 일반 웹 API? HTTP API?라고 부르나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
onetoone에서 lazy관련해서 질문드립니다~!
안녕하세요, 고퀄리티 강의 감사합니다 영한님. onetoone과 lazy에 관련해서 궁금한점이 있어 질문 남깁니다. ※ table구조 - member (1) - (1) phone (onetoone) - fk는 phone에 member_id로 존재하는 형태 - member에 phone_id소유 X 1. 위 테이블 구조일때 jpa입장에서 onetoone에서는 proxy객체를 생성할 수 없기때문에 lazy로 설정해도 쿼리가 나간다는 부분에대해 이해했습니다. 2. 그런데 모든 연관관계는 lazy로 설정해야된다고 말씀하셨는데 onetoone을 lazy로 설정해버리면 복수건을 find했을때 바로 N+1이 발생하는것 같습니다. onetoone일 경우 lazy로 어떻게 동작하게 할 수 있는지 궁금합니다~! 불가능하다면 이런 경우 어떻게 해결할 수 있는지도 말씀해주시면 감사하겠습니다~!
-
미해결실전! 스프링 데이터 JPA
마지막 부분 질문드립니다.
안녕하세요 !! 마지막 부분 궁금한 점이 생겨서 질문드립니다. 벌크를 사용하면 db에 바로 때려버린다고 하셨는데, //given ~~~~~ 5개 //when int resultCount=memberRepository.bulkAgePlus(20); em.flush(); em.clear(); 이 상황에서 먼저 벌크연산을 통해 db 값을 수정을 하고, flush와 clear 연산을 하게되는데, 이 상황에서의 flush 연산의 동작이 궁금합니다. 책에 따르면, 변경 감지가 동작해서 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷과 비교해서 수정된 엔티티를 찾는다. 수정된 엔티티는 수정 쿼리를 만들어 쓰기 지연 SQL 저장소에 등록한다. 이 쿼리를 db에 전송한다. 라고 나와 있습니다. 먼저, save를 하는 과정에서 persist 한 member들 중 20이 넘는 것들은 member3 20member4 21member5 40 이 있습니다. persist 이후 bulk연산으로 db에 바로 값을 변경시키고, flush에 들어서게 되면 스냅샷 자체는 20,21,40 으로 되어있고 영속성컨텍스트에 따로 값을 변경하지 않았으니 수정된 엔티티를 찾지 못하고, 수정쿼리를 만들어서 지연 SQL 저장소에 등록하지도 않았을 것이고, 이곳에 등록된 것이 없으니 db에 전송하는 쿼리문도 없기 때문에 bulk 연산으로 수정된 값이 남게 되는 것인가요 ? 그렇다면 이 부분에서 flush는 스냅샷과의 비교를 했을 뿐 변경된 엔티티를 감지하지 못하였기 때문에 사실상 비교의 역할만 했다고 볼 수 있는건가요? 제가 이해한게 맞나 궁금합니다!! 긴 질문 읽어주셔서 감사합니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
안녕하세요 ModelMapper 질문이 있습니다.
현재 강의 수강하면서 개인적으로 프로젝트를 하나 만들어보면서 함께 적용도 해보면서 공부하고 있는데요. 웹이 아닌 API만 구현 중 입니다. 1. 제가 공부하기로는 API개발에서도 Entity를 리턴해주면 않되고 DTO로 만들어서 사용자에게 내보내줘야 한다고 알고 있는데 이때에도 ModelMapper와 같은 라이브러리를 이용해서 DTO to Entity와 Entity to DTO로 사용해야 하는건가요 ? 2. 모든 Response에서 DTO로 만들어서 리턴을 해주는지 궁금합니다. 모든 요청마다 DTO를 만들어서 리턴해주기에는 번거롭고 DTO가 많아질 것 같습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 편의 메서드
안녕하세요, 영한님 강의에선 위처럼 하셨는데 궁금한게 생겨 질문드립니다. 1. 위 대신에 아래처럼 Member 엔티티에 연관관계 메서드를 해도 되나요? public void addOrders(Order order){ this.orders.add(order); order.setMember(this);} 2. 연관관계의 주인에 편의 메서드를 하는게 좋은건가요? 3. 둘다 작성하면 안되나요? 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
v3 질문드립니다.
안녕하세요~~ 제가 이해를 잘 못하고 있는 것 같아서 질문드립니다. 이번 강의에서 정리를 하면서, 엔티티 조회와 DTO 직접 조회로 크게 분류하셨는데, 저는 v3를 DTO List를 Return 하니깐 DTO 직접 조회에 속하는데 이 녀석은 batch_fetch_size 의 도움 또한 받는데, 그렇다면 둘 중 어느 곳에 속하는지 아리송 했는데 PDF정리하신 것을 보니 엔티티 쪽이라고 하셨습니다. 1. 여기서 말하는 DTO 직접 조회란, 엔티티의 다른 필요없는 컬럼을 보여주지 않기 위해서 OrderDto의 형태로 리턴해주는 것이 아니라, 따로 패키지를 만들정도의 DTO 를 칭하는 것인가요 ?? 정확한 구분이 어떤 기준으로 나뉘는지가 너무 헷갈립니다. 알 것 같으면서도 눈앞에서 놓치는 듯한 느낌이네요.. 2. 이번 최적화하는 과정에서의 코드에서 stream() 이용법 등 익숙치 않아서 이해하는데 어려움을 많이 느꼈던 것 같습니다. stream().map ~~ 은 괜찮았는데 리스트를 forEach(o-> ~~ 이런식으로 활용하는 부분이요. 혹시 이것과 관련되어서 어떤 키워드로 찾아서 공부를 해야하는지 알고 싶습니다. java8 stream 으로 공부하면 될까요 ? 이번 강의도 굉장히 도움이 많이되고 감사했습니다!!
-
미해결스프링 시큐리티
동시 세션 제어 - 동일 브라우저에서 로그아웃이 정책 미적용
안녕하세요. 강좌를 유익하게 잘 보고 있습니다. 동시 세션 제어 부분에서 해당 Security 2.3.1 버전을 사용하고 있는데 "maxSessionsPreventsLogin(true)" 상태에서 아래와 같은 동작 시 "Maximum sessions of 1 for this principal exceeded" 오류 발생으로 제대로 동작을 하지 않고 있습니다. login --> logout --> 재 login 해당 이슈를 검색을 해보니 "https://stackoverflow.com/questions/41429778/spring-security-logout-and-maximum-sessions" 에서 해결점을 찾을 수 있었지만. securityRegistry 가 Bean으로 노출되지 않는 상태라서 그렇다는데.. 이부분이 이해가 가지 않아서요 버그 인지 실제 스프링 정책인 것인지 , 아니면 스프링에서 유도(?) 하는 코딩 방식이 있는 것인지 궁금합니다. 행복한 날 되세요
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트에 관해서 말씀해주셔서 질문 드립니다.
안녕하세요. 수업 잘 듣고 있습니다. 강의에서 테스트에 관해서 말씀해 주셔서 질문 하나 남깁니다. 번외에 질문이라... 답을 주실지 모르겠지만 실제 현업에서 개발중에 테스트의 Fixture 가 많아지면서 점점 관리에 어려움을 느끼고 있는데 혹여 이런 것에 관리는 어떻게 하면 좋을지 노하우가 있을까요...? 그리고 앞으로의 수업도 기대하고 있습니다. 제대로 익혀서 실무에 적용해 보는것을 목표로 하고 있습니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
update에서 form태그 질문드립니다.
updateItemForm.html에서 form태그에 action 속성이 없는데 어케 포스트매핑으로 갈 수 있나요??? ㅠㅠ 초보라 죄송합니당
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계 편의 메소드에 궁금한 것이 있어 질문드립니다.
안녕하세요. 우선 양질의 컨텐츠 항상 잘보고 있습니다. 우연히 수강한 jpa 토크온세미나를 시작으로 이렇게 프로젝트 강의까지 오게되었습니다. 많이 배웠습니다. 정말 감사합니다. 다른게 아니라 엔티티 클래스 구현까지 강의를 수강 도중 연관관계 편의 메소드에서 궁금한 것이 있어 글 남겼습니다. 1. 현재 member의 소속 여부에 대한 처리 이를 테면 "Order" 엔티티 클래스에서, member가 orders에 현재 속하고 있는지 확인하고 만약 그렇다면 해당 Orders에서 member를 제거 후 변경된 member를 추가해야하는 것은 아닌지. public void setMember(Member member){ /* if(this.member.getOrders() != null){ this.member.getOrders().remove(this); } */ this.member = member; member.getOrders().add(this); } 그렇지 않으면 특이사항 이겠지만, Order의 member를 변경할 때 member.orders에서 문제가 생기지 않은가 싶어서 주석 부분을 패스하신 이유가 궁금합니다. 더하여 만약 Order의 Member처럼 현업에서 이렇게 변경 소지가 없는 필드 변수를 final 처리하는지가 개인적으로 궁금합니다. 2. 편의 메소드 위치 두번째로 편의 메소드를 어떤 객체가 갖는 것이 옳은가에 대한 고민이 듭니다. 저는 외래키의 주인이 되는, 이를 테면 Member와 Order의 경우 Order에 위치하는 것으로 생각했는데, Order와 OrderItem의 경우 order를 외래키로 주인이 되는 OrderItem이 아닌 Order에서 orderItem.setOrder을 호출하니 어떤 쪽에서 set를 갖는 것이 옳은가 정하기가 어렵습니다. public void addOrderItem(OrderItem orderItem){ orderItems.add(orderItem); orderItem.setOrder(this); } 혹시 현업에서는 이와 같은 상황에서 어느쪽이 '주' 가 된다를 정하는 규칙, 또는 다른 팀원을 위해서 표시하는 방법이 있는지 궁금합니다. ps. 더 좋은 질문을 가져오도록 노력하겠습니다. 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
설계 순서가 궁금합니다.
이 강의에서는 로직을 먼저 짜고 웹 계층을 개발하면서 미리 짜두었던 로직들을 이용해서 금방 끝났습니다. 이렇게 하면 정말 편리할 것 같지만, 한편으로는 페이지가 완성되어 있지 않는 상태로 로직을 짜려니 굉장히 어려울 것 같다는 생갂 또한 듭니다. 매개변수를 어떤 것을 넘겨줘야할지도 혼란스러울 것 같구요. 모든 것을 다 설계한 다음에 로직부터 짜는 것이 보통 일반적인가요 ?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderItem 과 Item의 관계
Order와 Member나 OrderItem이나 Order 는 다대1 관계인데, Member은 order의 list를 가지고 있고 order 또한 orderitems의 list를 가지고 있습니다. 그런데 item은 왜 orderitem의 list를 따로 @OneToMany를 안해주는지가 궁금합니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Member와 Item에 저장 할 때 다른 이유가 있나요?
Member 저장 ==========> public void save(Member member) { em.persist(member);} Item 저장 ==========> public void save(Item item) { if (item.getId() == null) { em.persist(item); } else { em.merge(item); }} 위와 같이 Member/Item 저장 방식이 다른 이유가 있나요? 답변 부탁드립니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문과 주문상품에만 생성 메서드가 있는 이유는 뭔가요?
다른 엔티티들과 달리, 주문과 주문상품은 상태값 외에는 바뀔일이 없기 때문에 생성 메서드를 사용한게 맞는지 궁금합니다. (사실 이 부분도 의문입니다. 다른 엔티티들에도 유지보수를 위해 생성 메서드를 사용하는게 맞지 않을까 싶습니다.) 예제에서 주문과 주문상품에서도 @Setter를 사용하고 있기에 언제든 값이 변경될 수 있는 점 때문에 제가 생각한게 틀린건지 맞는건지 잘 모르겠습니다.
-
해결됨실전! 스프링 데이터 JPA
복합키 맵핑에 대해 질문드립니다
안녕하세요 권영한님 강의 너무 재미있게 잘 보고 있습니다! 😁 복합키 맵핑을 찾아보니 여러방법들이 있더라구요~ 영한님은 복합키 맵핑을 어떤 방법을 사용하시는지 질문 남깁니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
merge 와 dirty check 질문
안녕하세요. 변경감지와 병합 챕터를 보고 질문드립니다. 말씀하신 내용중에 "merge 는 모든 필드를 업데이트하고, dirty check 는 변경된 부분만 업데이트하기때문에 dirty check 를 사용하는게 좋다" 라는 내용이 있는데요. 그래서 테스트를 좀 해봤는데 dirty check 로 update 쿼리가 날아가는 경우에도 모든 필드에 대한 update 쿼리가 날아가더라고요. 결국 실행되는 쿼리 자체는 merge 와 dirty check 가 동일한거같은데요. 그래서 제가 정리한건 "merge 보다 dirty check" 라기보다는 "기존 엔티티를 수정(update) 할때는 신규 객체를 만드는게 아니라 기존 엔티티를 찾아와서 하자" 인데, 이렇게 이해해도 될까요? + 조금 더 찾아보니까 하이버네이트에서 @DynamicUpdate 애노테이션을 지원하고있는데 이 애노테이션은 실무에서 적극적으로 사용하는지도 궁금합니다. 감사합니다.
-
미해결스프링 시큐리티
강의 PPT 관련 질문
안녕하세요~ 강의 잘 듣고 있는 사람입니다. 강의를 듣다보니 HTTP Basic 부분의 강의가 PPT 에는 나와있는 것 같은데, 강의에는 건너뛰고 Form 인증 부분부터 나오더라구요~! 굳이 할 필요가 없어서 생략하신 걸까요? 좋은 강의 만들어주셔서 감사합니다!
-
미해결실전! 스프링 데이터 JPA
Unable to access lob stream 오류가 발생합니다.
다음과 같이 AccountRepository 인터페이스를 생성해 사용하는데, findByNickname 메소드에 대해 Unable to access lob stream 오류가 발생합니다. 검색해보니 맨 위 사진과 같이 Repository에 @Transactional을 추가하라는데, Clob이나 Blob이 포함된 엔티티는 해당 어노테이션을 반드시 사용해야 하는 것인가요? 혹시 맞다면 왜 그런건가요?