묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! Querydsl
현재 2:30 부분에 ...
현재 강의의 2:30부분에 fetchResults를 사용하려고 보니 decprecated 되어있는데 fetchResult대신에 쓸수있는 것이 혹시 있나요?? 설명에는 fetch()를 대신 사용하라는데 그런건가요?
-
미해결실전! Querydsl
Entity Manager 의존관계 주입
안녕하세요! 강의 마지막 부분에 나온 EntityManager, JPaQueryFactory 생성자 주입 관련하여 궁금한 게 생겨서 질의드립니다. Lombok 의 @RequiredArgsConstructor 를 사용해서 EntityManager 와 JPAQueryFactory 를 생성자 주입하면 좋다. 라고 이야기하셨던 부분과 관련된 질의입니다. 이떄 JPAQueryFactory 객체를 빈으로 등록해놓은 뒤에 @RequiredArgsConstructor 를 사용하셨고 이는, EntityManager 는 빈으로 등록되어 있단 뜻인데 애플리케이션 로딩 시점에 EntityManager 도 자동 등록되나요?그렇다면 자동 등록되게 해둔 이유는 무엇인지도 궁금합니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강의에서 43초 부분에 @GetMapping관련하여 질문이 있습니다.
제일 처음 hellospring으로 간단히 코드를 만들었을때 @GetMapping("hello")를 하면 localhost:8080/hello를 치면 그 코드가 실행되는 걸로 기억을 하는데그럼 여기서도 혹시@GetMapping("/members/new")이렇게 해도 되고@GetMapping("members/new")이렇게 입력해도 결과값은 같게 나오나요? 그리고 지금 이 강의에서MemberController와 MemberService둘다 스프링빈에 등록되어 있어서 MemberController생성자에 MemberService를 쓸 수 있는것이 맞나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA시 테이블 자동생성 및 마이바티스와의 혼용
JPA에서 엔티티를 설정해주면 자동으로 디비에 테이블을 생성해줍니다. 강의내용중에 생성되는 테이블 ddl을 그대로 안쓰고 정제해서 쓰신다고 하셨는데,그말은 jpa로 Auto로 생성되는걸 막아놓고, 디비에서 직접 create를 하신다는 말씀이신가요?? 그리고 혹시 jpa와 mybatis를 같이 사용 할 수 있나요? 서칭해보면 가능하다고 하는데, jpa사용법은 나름 숙지된 상태인데팀플젝으로 마이바티스를 사용하고 싶은 상황입니다.같이사용하기 어려울까요? spring: jpa: hibernate: ddl-auto: update
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
timeTraceAop만들고 SpringApplication 실행하는데 걸린 시간이 안나오네요..
결과창이 이렇게 뜨는데 아무리 고쳐봐도 안되네요.. *************************** APPLICATION FAILED TO START *************************** Description: The bean 'timeTraceAop', defined in class path resource [com/example/hellospring/Service/SpringConfig.class], could not be registered. A bean with that name has already been defined in file [C:\Users\zzang\Downloads\java\hello-spring\build\classes\java\main\com\example\hellospring\aop\TimeTraceAop.class] and overriding is disabled. Action: Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
DTO 와 Form_2
안녕하세요! 영한님! 영한님께서 올려주신 여러가지 강의를 보고 코드를 작성하다가,제가 예전에 질문하고 피드백 주셨던 부분이 생각나서 질문드리려고 합니다. https://www.inflearn.com/questions/125911 예전 질문의 내용은 이렇습니다! 이때는 의문이 들었던점이 정확히 정리가 안되어 더 질문드리지 못하고 넘어갔었습니다.이제 좀 정리가 되어서 재질문 드리려고합니다. Book 과 같은 Entity는 하나의 도메인에서 사용되는게 아니라 광범위하게 사용되고,현재 패키지를 어떻게 나눌지 감이 잘 안잡힙니다. 따라서 현재(Book) Entity => example.xxx.model에 두었고 dto => example.xxx.model.dto 이렇게 두었습니다. 이런경우 위에서 말씀하신 Entity가 dto를 참조하는데 다른 패키지에 있는 상황입니다. 이럴 때는 BookService에서 메소드로 Dto를 받고, Entity를 조작하는 형태로 변경해야 할까요?아니면 설계가 잘못된것인지, 패키지를 어떻게든 같이 놓는 방법이 맞을지 궁금합니다.개념에 구멍이 뚫려있는 느낌입니다 ㅜㅜ
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
@JoinColumn 질문
안녕하세요 영한님. 좋은 강의 덕분에 이해가 정말 잘 되고 있습니다!! 다름이 아니라 @JoinColumn에 궁금한게 있어 질문드립니다. 예를들어 아래의 두개의 코드를 비교 해보면 위에는 @JoinColumn 을 사용하였고 밑에는 그냥 @Column을 사용하였다는 차이점이 있습니다. 물론 어플리케이션 딴에서 그럴일은 거의 없겠지만 제가 무조건 order를 사용하는 케이스가 orderId를 조회하는거 밖에 없다면 위의 코드보다 아래의 코드가 더 좋은 것일까요? 왜냐하면 orderId를 찾기위해선 위에 코드는 user.getOrder().getId() 와 같이 코드를 짜고 이때 DB에 Order에 대한 쿼리가 또 나가기 때문에 하지만 밑에 코드는 그냥 user.getOrderId만 하고 따로 쿼리가 안나가기 때문에 밑에 코드가 더 이 경우엔 효율 적일까요? public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToOne private Order order; public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "orderId") private Long orderId;
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
SpringConfig 빈등록 오류
강사님 코드를 따라 치면서 질문 중복이지만 해결이 안되서 질문드립니다. 1. MemberService의 생성자 확인 MemberRepository로 구현 2. MemoryMemberRepository에 Repository인터페이스 구현 위의 둘다 정확하게 한거같은데 뭐가 문제인지 궁급합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO 의 Entity 변경에 대한 위치에 대해서 문의드려요
안녕하세요 . 김영한 강사님 , 강좌 초반을 학습하다가 궁굼한 부분이 생겨서 문의드립니다. 강의에서 생성 메소드를 만들때 전달받은 DTO 를 Entity 로 변환하는 로직을 Controller에서 수행하였는데 , DTO -> Entity , Entity -> DTO 에 대한 책임을 Controller에 위임 하시는 편인가요 ? (저의 경우는 그 책임을 Service layer 에 두고 modelmapper 를 사용하고 있습니다.) @PostMapping("/api/v2/members")public CreateMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request) { Member member = new Member(); member.setName(request.getName()); Long id = memberService.join(member); return new CreateMemberResponse(id);}
-
미해결실전! 스프링 데이터 JPA
update 실무
안녕하세요 ㅎㅎ 실무적으로 궁금한게 하나 있어서 질문드립니다 update 쿼리는 실무에서도 100% 더티체캉으로 해결하나요 ??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
entity vs form vs dto
entity vs form vs dto 1. 이들은 각각 어떤 특징이 있다고 생각하면 될까요? 2. 이셋을 큰 틀로 보자면 모델로 봐도 되나요?
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
thymeleaf 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
엔티티 VS 폼객체
강의내용 8:30 내용질문입니다. < API를 만들때는 엔티티를 외부에 반환하면 안된다 > 1. 필드가 그대로 노출됨 (ex.userpassword) 2. API 스펙이 변한다. (엔티티에 로직을 추가했는데 api스펙이 변한다) 솔직히 말씀드리면 전부 이해가 안됩니다..ㅠ 이전 강의에서 FORM에 입력되는 데이터를 Member 엔티티를 쓰는게 아니라 따로 만들어준 MemberForm을 쓰는이유는 이해했습니다. (Member객체 코드가 지저분해질수 있고, Valid 기능같은것을 사용하지못해서) 그것과 유사한 이유인것 같은데... 정확히 이해가 안되네요 사실 api라는 개념도 정확하게 잡히지 않습니다. 정리해서 질문 하겠습니다. 1. 저희가 강의에서 만들어준 api가 있나요??? (혹시 MemberController의 메서드들이 모두 api에 속하는건가요?) 2. 필드가 노출된다는게 무슨말인지 모르겠습니다. 예를들어 폼에 password입력칸이 있는데, 이게 어떻게 노출이 가능하다는 것인가요? 3. api의 스펙이 바뀐다는 부분이 이해가안됩니다. api스펙이 무엇을 뜻하며, 그게 바뀌면 무슨 문제가 생기나요?
-
미해결실전! Querydsl
여러 인덱스 중 하나를 타게 할 수 없을까요?
안녕하세요.^^ 강의 잘 듣고 열심히 공부 중입니다. jpa + querydsl 공부 도중에 궁금한 것이 하나 생겼습니다. querydsl 에서 여러 인덱스 중에 하나를 강제로 타도록 할 수는 없나요? native query로는 mysql 같은 경우 use index를 쓰면 되는데 querydsl 에는 어떻게 할 수 없을까 무식하게 갑자기 고민하고 고민하다가 혹시 방법이 있나 없나 궁금해서 질문 들여봅니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
예외테스트 중 저번강의에서 햇던 것과 차이
Exception을 테스트하는 부분에서 궁금한 점입니다. 해당 강의에서는 @Test(expected = IllegalStateException.class) 어노테이션과fail()함수를 이용해서 테스트하셨는데, 이 강의보다 최신강의로 알고있는 spring 기본편에서 테스트하실때는 아래코드와 같이 하셨습니다.두 테스트 차이가 있을까요? @Test public void 회원가입_중복() throws Exception { // given Member member1 = new Member(); member1.setName("인프런"); Member member2 = new Member(); member2.setName("인프런"); // when memberService.join(member1); // then IllegalStateException e = assertThrows(IllegalStateException.class, () -> { memberService.join(member2); }); assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다."); }
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
사용자 등록함
안녕하세요 사용자 등록함수중에 언급해주신 group_concat (이미 등록되어있는함수라고 말씀해주셨는데 찾을수가 없어서.. 여쭈어봅니다) 보시다시피 그냥 concat은 있는데 group_concat 이건 어디에 등록이 되어 있는건가요 ? 그리고 JPQL 스스로 함수를 정의할 수는 없습니다 라고 다른글에서 말씀해주셨는데 그러면 이렇게 따로 정의해서 만들 필요가 있나요?
-
미해결실전! Querydsl
compileQuerydsl 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강의를 처음 듣고 있는 학생입니다 강의 영상에서와 같이 프로젝트를 만든후 compileQueryDsl을 실행하니 Unable to load class 'com.mysema.codegen.model.Type'. 이 에러가 나오면서 컴파일이 되지 않습니다 도저히 답을 찾을 수가 없어서 질문남겨요
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
service와 controller의 역할에 대한 질문이 있습니다.
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]service와 controller의 역할에 대한 질문이 있습니다. 강의를 듣고 활용해던 도중 의문점이 생겼습니다. 한참 찾아봤는데 아직도 모르겠어서 질문드립니다. 저의 기존 코드에서는 어떤 컨트롤러의 post 요청에서 A,B,C 엔티티가 반드시 순서대로 생성된후 저장되어야 합니다. (참조관계 떄문에 그렇습니다) 기존에 저는 컨트롤러에서 A 엔티티 생성 -> AService.createA() 한 후 B, C도 동일한 과정을 거칩니다. 이러니까 컨트롤러가 서비스의 역할을 해버린다고 생각했습니다. 그래서 컨트롤러는 그냥 dto를 넘겨주고 서비스에서 위의 작업을 하려했습니다. 그랬더니 몇가지 문제가 생겼습니다. 1. service에서 repository만을 사용하면 코드 중복이 심함(create 할때 복잡한 중복검증 로직이 있는대, 그것까지 전부 다시 해야함) 2. service에서 service를 주입받아서 하자니 순환참조, 나말고 코드 이해도 낮은 다른사람이 손대면 실수할 가능성 높음 등등의 문제가 생김 그래서 그냥 원래대로 냅두려니 controller가 너무 크고 service가 하는게 그냥 repository로 요청 보내기인 경우가 대부분임 그래서 질문은 1. 적절한 방법이 뭘까요? 2. 복잡하고 큰 규모의 서버 코드를 보고싶은데 좋은 예시를 어디서 찾을수 있을까요? 3. 제가 해결방법으로 여러 service를 주입받아서 사용만하는 service를 만들어서 컨트롤러에 있던 코드를 거기로 옮겨서 컨트롤러에 비즈니스 로직이 생기는걸 없에고 순환참조, 코드 중복 등을 제거 해봤는데 이게 맞는건가요? 4. MSA와 상관있는 문제일까요?
-
미해결스프링 기반 REST API 개발
JUnit5에서 prettyPrint() 적용하기
@ExtendWith({RestDocumentationExtension.class, SpringExtension.class})@SpringBootTestclass EventControllerTest { private MockMvc mockMvc; @Autowired private ObjectMapper objectMapper; @Autowired private WebApplicationContext context; @Autowired private EventRepository eventRepository; @BeforeEach void init(RestDocumentationContextProvider restDocumentation) { this.mockMvc = MockMvcBuilders .webAppContextSetup(this.context) .addFilters(new CharacterEncodingFilter("UTF-8", true)) .apply(documentationConfiguration(restDocumentation) .operationPreprocessors() .withRequestDefaults(modifyUris().host("yoonjoy.me").removePort(), prettyPrint()) .withResponseDefaults(modifyUris().host("yoonjoy.me").removePort(), prettyPrint())) .alwaysDo(print()) .build(); } 추가로 addFilters에 UTF-8 설정을 통해 responseBody에서 한글이 깨지는 것을 막고, modifyUris을 통해 호스트 url localhost을 원하는 문자로 바꿀 수 있습니다.
-
미해결실전! 스프링 데이터 JPA
save 질문드립니다.
jpa 커리큘럼 듣고있는 학생입니다. 첫 커리큘럼 강의 merge를 쓰지말라고 하셨는데(*1), 스프링 데이터 jpa의 save를 보면(SimpleJpaRepository구현체) merge를 사용하고 있습니다. 그러면 실무에서 스프링 데이터 jpa를 사용할 때 save기능을 사용하여야 하는것인지 사용하지 말아야 하는것인지 가이드 라인이 있을까요? *1.DB에서 데이터를 가지고 오기때문에 sql이 한번 나가는 문제, DB에서 가지고 온 데이터 수정할 때 일정 필드값이 누락될 경우 누락된 값은 변경감지와는 달리 없어지기 때문 등등의 문제로