묻고 답해요
144만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
테스트 메서드 save()와 쓰기 지연 관련해서
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]ItemRepositoryTest를 실행하면 updateItem()는 update 쿼리가 실행되지 않지만 save()는 insert 쿼리가 로그로 보이더라고요. JPA PPT에 나와 있는 트랜잭션을 지원하는 쓰기 지연 - INSERT이 내용대로라면 save()를 해도 insert 쿼리가 안 보여야 할 것 같은데, 이건 관련 옵션을 켜야만 적용되는 건가요?쓰기 지연이 안 되는 것이 디폴트이고, 옵션을 켜면 save()도 updateItem()과 마찬가지로 insert 쿼리가 안 보이게 되는 건가요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
한 엔티티에 같은 JoinColumn name이 있을경우 어떻게 처리하는지 궁금합니다.
@ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private User createUser; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "user_id") private User lastModifyUser;DB 한 테이블에 글 등록 유저 정보와 마지막 수정 유저 정보를 넣도록 설계했는데 아래와 같이 안되면 이럴때는 보통 설계를 어떻게 하나요??Caused by: org.hibernate.MappingException: Column 'user_id' is duplicated in mapping for entity 'study.factory.domain.Order' (use '@Column(insertable=false, updatable=false)' when mapping multiple properties to the same column)
-
미해결스프링부트 시큐리티 & JWT 강의
password 비교를 하지 않았는데 어떻게 인증이 통과된 건가요?
안녕하세요!스프링 시큐리티 다양한 분들 강의를 봤는데 이렇게 핵심만 요약해서 알려주시는 강의는 없었던 것 같습니다. attemptAuthentication 에서 authRequestToken으로 loadUserByUsername 를 호출 후 password 를 비교하는 로직이 없는데 어떻게 successfulAuthentication 으로 넘어가는지 이해가 안됩니다. 어느 시점에 password 를 비교하는지 궁금합니다.
-
해결됨스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
frontcontroller 질문 있습니다.
안녕하세요서블릿은 멀티스레드 환경에서 동작하기 때문에 멤버 변수를 사용하면 동시성 문제가 생길 수 있다고 알고 있습니다.frontcontroller도 서블릿인데 멤버 변수를 사용한 것은 handlerMappingMap과 handlerAdapters가 서블릿 생성 시 한 번 초기화되고 이후에는 put과 같이 값을 쓰는 동작은 없고 get처럼 매핑 정보를 읽어오는 동작만 하기 때문인건가요??
-
미해결스프링 핵심 원리 - 기본편
스프링관련 로그가 뜨지않습니다
강의에서는 스프링관련 로그 (Bean)들이 뜨던데저는 뜨지않습니다 뭐가 잘못된 걸까요?? 물론 코드는 오류없이 동작합니다
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
members 화면 출력시 생기는 문제
코드 복붙하였고 3 jpa 4 가나다로 결과가 안나옵니다
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
안녕하세요 질문 답변 중에 궁금한 점이 있어 질문 드립니다.
https://www.inflearn.com/community/questions/302519/%EC%83%9D%EC%84%B1%EC%9E%90%EA%B0%80-%EB%A7%8C%EB%93%A4%EC%96%B4%EC%A7%80%EB%8A%94-%EC%8B%9C%EC%A0%90해당 질문 답변에서스프링 부트 로드시 서블릿들이 빈으로 등록된다고 하는데@ServletComponentScan을 사용하면 스프링 부트가 @WebServlet애노테이션이 붙은 서블릿을 자동으로 스캔하고 서블릿 컨테이너에 등록한다고 알고 있는데 스프링 빈으로도 등록되는 건가요??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
순수 JDBC 잘따라가다가 마지막에 잘안됩니다.
마지막에 회원가입이랑 회원목록 누르니 이렇게 나옵니다h2서버 켜진상태에서 spring1 spring2있는거 확인하고 나서run하였습니다 잘되다가 갑자기 2024-11-12T23:46:40.432+09:00 ERROR 13916 --- [hello-spring] [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: java.lang.IllegalStateException: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection] with root cause 가 나옵니다.그 밑에는org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-224] 라고 나옵니다. 코드 복붙하였으며 구글링했는데 잘 모르겠습니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
restful , MVC
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요! MVC 패턴에 대해서 공부를 하다가 궁금한 것이 있어서 질문드립니다 ! 제가 프로젝트를 했을 때는 주로 프론트와 백엔드 코드를 분리하여 프로젝트를 관리하였습니다. 이때는 지금 강의에서 하는 방식(MVC)과 다르게 RESTful 방식으로 진행을 하였습니다. 그렇다면 당연하게도, Model과 View는 프론트에서 관리를 하고, 들어오는 요청을 받는 Controller와 로직을 처리하는 Service, 데이터베이스와 관련된 로직을 처리하는Repository이 3가지로 패키지가 관리되고 있었습니다. 그렇다면 RESTful하게 개발하는 방식에는 과연 MVC 패턴이 적용되지 않는 것인가 ? 하는 궁금증이 생겨서 조사를 해보았어요 ! https://okky.kr/questions/1414743 여기서 제가 이해한 것을 짧게 정리를 해보자면,RESTful한 방식과 MVC는 별개의 것이 아니라는 것입니다.지금 강의에서 하는 방식의 model과 view는 물리적으로 화면에 나오기는 방식으로 이해할 수 있고, RESTful한 방식에서 VIEW는 JSON 데이터를 반환하는 것을 논리적인 개념으로 이해할 수 있다는 것으로 이해를 했습니다. 다시 위의 글에 적용을 해보자면Service, Repository 부분이 model,다시 값을 Controller부터 return(JSON 값)하는 것이 View라고 이해하면 맞을까요..?개념적으로service: ModelJSON반환타입: Viewcontroller: Controller 이렇게 딱 맞게 정의한다면... repository는 어디에 해당하는 것일까요..?혼란스럽습니다 ㅠㅠ
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
강의를 mvc1 까지 듣고 작은 프로잭트를 하는중인데 고민있습니다!
영한님의 강의를 듣고 작은 프로잭트를 하고 있는데 기본적인 내용을 바탕으로 검색해 가면서 하고 있습니다 하는 도중에 하는 김에 조금 이쁘게 만들기 위해서 프론트 쪽 코드는 AI한테 물어보면서 하고 있습니다 아직은 프론트엔드는 모르기때문에 대부분의 코드를 복사 해서 사용중인데 괜찮을까요 ..?
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
정적리소스의 클래스패스 질문
정적리소스에 대한 동작원리와클래스패스에 대한 개념이 많이 어렵게 느껴집니다.강사님께서 다른 강의에서 가르처주는 개념인지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강사님 폴더에서는 안보이는데 out 폴더가 보여요
강사님이랑 폴더 구조가 달라요!문제가 있을까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2파일 cmd,git bash에서 열려고 하는데 안됩니다.
H2 데이터베이스 설치 강의 3분 42초부터 안됩니다.일단 저는 최신 스프링 인텔리제이를 설치해 사용중이며자바는 따로 설치하지 않은 상황입니다.19년도 인텔맥에 윈도우10을 설치하여 공부중에 있습니다. cmd와 git bash로 시도중에 있습니다.각각 h2.bat 과 ./h2.sh 를 입력하는데 안되고 있습니다.
-
미해결실전! 스프링 데이터 JPA
entity 복제 방법
안녕하세요!이번에 jpa 엔티티를 복제할 일이 생겼습니다 제가 복제해야 할 엔티티는 자기참조도 하고, 1:n 관계의 조인도 되어있는 복잡한 엔티티 입니다 이런 경우 하나하나 deep copy 를 하려니 양방향 연관관계 등 로직이 너무 복잡해지는 부분이 존재하는 것 같습니다 그래서 찾아보니 entity 복제를 위해 여러가지 방법이 있다는 것을 알게되었습니다 https://www.baeldung.com/java-jpa-clone-entity요약해보면수동 복제 Cloneable 인터페이스 사용 BeanUtils 사용 ModelMapper 사용 detach() 메서드 사용 다양한 방법이 있는 것 같은데 현업에서는 주로 어떤 방식을 사용하나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
포스트맨에서 쿠키삭제에 대한 질문
제일 처음에 쿠키를 발행했습니다.그리고 응답과 헤더에는 쿠키가 남아있는 걸 확인했습니다. 이후, 포스트맨에서 쿠키를 발행하고 setMaxAge(0)을 이용해 없앴습니다.그런데 헤더에는 쿠키의 기록이 계속 저장되어 있는 상태로 유지되었습니다. 이후, 포스트맨을 이용한 쿠키 테스트를 진행하는데 있어서쿠키가 계속 헤더에 남아있는 채로 유지되길래 질문드립니다.(쿠키의 수명을 0으로 만든 이후에도 헤더에 쿠키가 계속 유지되는 사진)setMaxAge(0)을 하면 쿠키가 없어지는 게 정상맞나요?원래 없어져야하는데 포스트맨에서 자동으로 등록해주다보니 이렇게 된건가요?만약 맞다면, 쿠키가 소멸함에따라 헤더에서 쿠키 제거하는 방법이 없을까요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
모르는 것이 많은데, 이대로 진행해도 괜찮을까요?
안녕하세요. 저는 전공자고, 자바는 학교에서 배운 상태입니다.백엔드 공부하려고 김영한 선생님 로드맵 따라가고 있고, 현재 스프링 입문 강의까지 맞춘 상태입니다.스프링에 처음 접하는데 스프링 입문 강의를 듣고 기능적인 부분은 대충 이해를 하였는데, 문법적인 것들은 처음 접해서 어려움을 느끼고 있습니다. 혹시 스프링에 대해 따로 공부하고 로드맵을 진행해야 할까요? 아니면 따로 스프링 공부 없이 로드맵을 따라가도 괜찮을까요..?
-
미해결Practical Testing: 실용적인 테스트 가이드
정적 팩토리 메서드 사용과 toEntity 메서드에 대해 질문 있습니다.
우선 빌더를 활용해 내부에서 객체를 생성하고 외부에서 해당 객체를 생성하려면 정적 팩토리 메서드를 사용하거나 혹은 toEntity 같은 메서드를 만들어 사용하면 좋을거 같다 라는 생각이 들었습니다. 궁금한 점은 외부에서 객체를 생성할때 어떤 경우에는 정적 팩토리 메서드를 사용해서 생성하고 어떤 경우에는 toEntity 같은 메서드를 만들어서 사용하면 좋을지 궁금합니다.@Getter @NoArgsConstructor public class ProductCreateServiceRequest { private ProductType type; private ProductSellingStatus sellingStatus; private String name; private int price; @Builder private ProductCreateServiceRequest(ProductType type, ProductSellingStatus sellingStatus, String name, int price) { this.type = type; this.sellingStatus = sellingStatus; this.name = name; this.price = price; } public Product toEntity(String nextProductNumber) { return Product.builder() .productNumber(nextProductNumber) .type(type) .sellingStatus(sellingStatus) .name(name) .price(price) .build(); } }
-
미해결스프링 핵심 원리 - 기본편
@Autowired를 제거해도 의존 관계 주입이 가능한지
[질문 내용]질문 1.ComponentScan과 Autowired를 이용한 스프링 빈 등록 과정을 다음과 같이 이해해보았는데 틀린 내용이 있을까요? 특히 2,3,4 과정이 자세히 알고 싶습니다. @Component 애노테이션이 달린 클래스의 이름을 갖는 빈( 빈 껍데기 )을 등록빈으로 등록된 클래스의 생성자를 실행이 때 생성자의 매개변수가 적은 순서대로 실행 ( MemoryMemberRepository,RateDiscountPolicy -> MemberServiceImpl -> OrderServiceImpl )@Autowired 애노테이션이 달려있다면 생성자의 매개변수 클래스 타입을 확인한다. 해당 클래스 타입을 등록되어 있는 스프링 빈에서 가져온다.생성자를 실행하여 의존 관계 주입을 받은 인스턴스를 등록되어 있는 빈에 넣는다. 질문 2 .3~4 과정에서 @Autowired 애노테이션이 없다면 의존 관계 주입이 이루어지지 않을 것이라고 생각해서 MemberServiceImpl에 @Autowired를 제거해보았는데 MemoryMemberRepository 빈을 알아서 가져와서 의존관계 주입을 받게 되는데 어떻게 주입 받는 것인지 궁금합니다. Dependencies Diagram을 확인해보았더니 @Autowired를 통해서 주입 받는 orderServiceImplr과는 다르게 depends on 이라고 적혀있는데 MemoryMemberRepository가 @ComponentScan으로 빈으로 등록되어서 스프링이 자동으로 알맞은 의존 관계 주입을 해준 것인가요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
transacional이 빨간불이 떠요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) transacional어노테이션을 추가했는데 빨간불이 나오느데 어떻게 해야하나요?3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 핵심 원리 - 기본편
Bean등록 부분이 이해가 안됩니다.
첫번쨰로 수동으로 등록한다고 했을때 package hello.core.config; import hello.core.discount.DiscountPolicy; import hello.core.discount.impl.FixDiscountPolicy; import hello.core.discount.impl.RateDiscountPoilcy; import hello.core.member.repository.MemberReposotory; import hello.core.member.repository.impl.MemoryMemberRepository; import hello.core.member.service.MemberService; import hello.core.member.service.impl.MemberServiceImpl; import hello.core.order.service.OrderService; import hello.core.order.service.impl.OrderSerivceImpl; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class AppConfig { @Bean public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } @Bean public OrderService orderService() { return new OrderSerivceImpl(discountPolicy(), memberRepository()); } @Bean public MemberReposotory memberRepository() { return new MemoryMemberRepository(); } @Bean public DiscountPolicy discountPolicy() { return new RateDiscountPoilcy(); // 또는 RateDiscountPolicy()로 변경 가능 } } 이런식으로 @Configuration + @Bean으로 수동으로 등록하면 package hello.core.member.service.impl; import hello.core.member.domain.Member; import hello.core.member.repository.MemberReposotory; import hello.core.member.repository.impl.MemoryMemberRepository; import hello.core.member.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; //@Component public class MemberServiceImpl implements MemberService { // private final MemberReposotory memberReposotory = new MemoryMemberRepository(); private final MemberReposotory memberReposotory; public MemberServiceImpl(MemberReposotory memberReposotory) { this.memberReposotory = memberReposotory; } @Override public void join(Member member) { memberReposotory.save(member); } @Override public Member findMemer(Long memerId) { return memberReposotory.findById(memerId); } public MemberReposotory getMemberReposotory() { return memberReposotory; } }MemberSeriveImpl클래스에는 @Component를 안붙여도되는거죠? 두번째 질문은 제가 알기론 컴포넌트스켄을 사용안하고 Component만 클래스위에붙여도 자동적으로 빈으로 등록되는걸로아는데 꼭 ComponentScan을 적용해야만 Component가붙은 클래스들이 자동적으로 빈으로 등록되나요?