묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
fetchJoin 문의드립니다.
영한 스승님 안녕하세요!본 강의에서 작성하신 querydsl 코드에서요. 궁금한 점이 있습니다! fetchJoin 메서드 호출 없이 join 메서드만 호출할 경우' 주문 엔티티'가 가지고 있는 '멤버 엔티티'를 가져오기 위해 추가적인 쿼리가 호출되지 않을까요? 불필요하게 select 쿼리 내 join 절이 붙어서 나가는 것이 아닌가 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Bootstrap을 직접 다운받지않고 CDN을 이용해 간편하게 적용하는 법입니당.
`resources/templates/fragments/header.html`의 코드를 아래와 같이 변경해주시면 됩니다. `<!-- Bootstrap CDN -->`아래 코드 4줄이 Bootstrap을 적용시켜주는 코드입니다. <!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head th:fragment="header"> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink- to-fit=no"> <!-- Custom styles for this template --> <link href="/css/jumbotron-narrow.css" rel="stylesheet"> <!-- Bootstrap CDN --> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> <title>Hello, world!</title> </head>
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Builder 사용 시 NullPointerException 뜨는 경우 참고사항 (NPE)
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)private List<OrderItem> orderItems = new ArrayList<>(); 이런 식으로 코드를 작성 후 Lombok의 @Builder를 사용하시는 분들은 빌더 패턴을 통해서는 필드에 아무리 기본값을 명시해뒀더라도 기본값이 null아니면 0이 튀어나오므로 @Builder.Default 를 따로 선언해주셔야 null이 아닌 ArrayList가 생성됩니다. @Builder.Default@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)private List<OrderItem> orderItems = new ArrayList<>();
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
batch insert 질문있습니다!
안녕하세요 주니어입니다! 이 강의랑은 동떨어진 질문이긴한데요 ㅎㅎ; 강의보면서 계속 이거저거 생각하다보니 영한님은 혹시 batch insert하실때 어떻게 하시는지 궁금합니다 ! 회사에서는 JPA를 쓸때 기본키 전략이 IDENTITY이면 JPA로 batch insert하기가 어려워서 jdbcTemplate으로 한다고 하거든요. 수량은 대략 5,000~10,000건 단위이고요. JPA초고수께서는 어떤방식으로 batch insert를 하시는지 갑자기 너무너무너무 궁금해져서 동떨어진 질문을 달게됐습니다.. 아 그리고 강의보면서 항상 감사드리고있어요. 제 마음속의 스승님이십니다 !
-
해결됨스프링 기반 REST API 개발
Controller 코드 관련 질문입니다.
좋은 강의 감사드립니다. 한국은 설 연휴가 시작되었는데 새해 복많이 받으세요! 10분40초경 return 해줄 때 ResponseEntity의 body에 event가 아니라 newEvent를 반환해줘야 될 것 같은데 아닌가요..? 현재 코드상 event 는 modelmapper를 활용해서 만든 event객체라 id값이 없고 테스트를 실패할것 같은데 body에 event를 넘겨줘도 테스트에서 return 된 body 에는 id값이 들어가있고 테스트가 통과되는데 제가 놓친부분이 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
orderId 가 1000개가 넘어가는 경우에 대해 궁금합니다.
영한님 안녕하세요!orderId 가 1000개가 넘어가는 경우에 대해 궁금합니다.Mysql 기준 where in절에 올 수 있는 최대 개수가 1000개로 알고 있어서요. 이 경우 애플리케이션 코드에서 1000개를 파티션하고 나눠서 호출하는게 맞을까요?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
rest api + 관리자 페이지 제작 및 oauth 관련하여 질문드립니다.
안녕하세요. 현재 모바일 앱 연동을 위해 bearer 인증 기반으로 rest api 서버를 구축하였습니다. 회원가입은 firebase 의 id_token 인증을 통해 진행됩니다. 여기서 관리자페이지 제작을 하려고 하는데 보통 관리자 페이지는 api서버 프로젝트와 따로 프로젝트를 생성하여 만드는지 아니면 한 프로젝트에 모든 기능을 한 번에 구축하는지 일반적으로 현업에서는 어떤 구조로 이루어져있는지 궁금합니다. 프로젝트를 따로 가져가는 경우 공통된는 service 기능이나 domain은 중복해서 생성해야할거같아서 비효율적일거 같아 우선 저의경우 한 프로젝트에 앱 서버와 관리자 서버 모두 구축하는 방법을 진행해 봤는데 rest api 기반 시큐리티 설정과 웹 시큐리티 설정이 동시에 구축되는게 문제가 있는지 웹 로그인이 진행이 안됩니다. 다른 질문으론 oAuth2가 스프링에서 deprecated 된거같은데 선생님께서는 다른 방안을 어떻게 생각하고 계신가요?? 답변 부탁드립니다. 감사합니다!
-
해결됨스프링 핵심 원리 - 기본편
질문있습니다!
안녕하세요. 강의 듣다 궁금한 것이 있어 질문 드립니다. 입문자라 기본적인 것도 많이 모릅니다. ㅠ public class ApplicationContextExtendsFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); @Test @DisplayName("부모 타입으로 조회시 자식이 둘 이상 있으면, 중복 오류가 발생한다") void findBeanByParentTypeDuplicate() { assertThrows(NoUniqueBeanDefinitionException.class, ()->ac.getBean(DiscountPolicy.class)); } ...... @Configuration static class TestConfig { @Bean public DiscountPolicy rateDiscountPolicy() { return new RateDiscountPolicy(); } @Bean public DiscountPolicy fixDiscountPolicy() { return new FixDiscountPolicy(); } } } 이 테스트 클래스에서는 테스트용(?) 클래스?? 만들때 @Configuration 을 사용했는데 아래 테스트 클래스에서도 테스트용 클래스를 만드는데 @Configuration을 사용하지 않아서 궁금합니다. class StatefulServiceTest { @Test void statefulServiceSingleton() { ApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); StatefulService statefulService1 = ac.getBean(StatefulService.class); StatefulService statefulService2 = ac.getBean(StatefulService.class); //ThreadA: A사용자 10000원 주문 int userAprice = statefulService1.order("userA", 10000); //ThreadB: B사용자 20000원 주문 int userBprice = statefulService2.order("userB", 20000); //ThreadA: 사용자A 주문 금액 조회 // int price = statefulService1.getPrice(); System.out.println("price = " + userAprice); // Assertions.assertThat(statefulService1.getPrice()).isEqualTo(20000); } static class TestConfig { @Bean public StatefulService statefulService() { return new StatefulService(); } } } 좋은강의 감사합니다. 열심히 배우고 있습니다!!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 기준 단축키
선생님께서 '커맨드'라고 하는 건 컨트롤(ctrl)로, '옵션'이라고 하는 건 알트(alt)로 생각하시면 될 것 같습니다! 직접 프로그램 내에서 써보고 찾아보니까 아직까지는 다 맞았던 것 같아요! (ex. 옵션 엔터 = 윈도우에서는 alt + enter) (ex. 커맨드 옵션 M = 윈도우에서는 ctrl + alt + M )
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
지연로딩과 영속성전이
안녕하세요 영한님. 강의를 듣다가 궁금증이 생겨 질문 남깁니다. 가정하는 상황은 다음과 같습니다. 부모(Team) <----> 자식(Member) 양방향 연관관계를 갖고, 부모에서 @OneToMany(fetch=FetchType.LAZY, cascade = CascadeType.All) 입니다. Team은 이미 생성되있고, 새로운 멤버를 추가하는 경우, Team team = em.find(Team.Class, teamid); Member member = new Member(); member.set(team); team.getMemberList().add(member); //질문1. 이때 team에 변경감지가 일어나 em.flush(team) 이 실행되는지 궁금합니다. 질문2. 새로운 member만 add되고 변경감지->영속성전이 가 되는건지, 혹은 기존 member들도 select해오는건지 잘 모르겠습니다!! * 통합적으로.. Cart와 CartItem 같은 엔티티의 경우, 저의 입장은 Cart가 CartItem에 대한 책임과 역할을 갖는 객체로 수정,삭제 등을 관리하고 싶은데, 이때 Cart가 연관관계의 주인이 아니므로 영속성 전이와 고아객체 옵션을 사용하고자 하는 것입니다. 이게 옳은 방향인지 잘 모르곘습니다. ㅠㅠ 감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
인터페이스와 구현체의 패키지 관련 질문입니다
안녕하세요. 영한님. 복슴겸 해서 강의를 다시보다 궁금한 점이 있어 질문드립니다. 강의에서 member 패키지에 MemoryRepository 인터페이스를 작성하셨고 해당 인터페이스의 구현체는 다른 패키지에 작성하는게 좋다고 말씀하셨는데요, 실제 개발하실 때 어떠한 패키지명으로 구조화 하시는지 알 수 있을까요? hello.core.member에 인터페이스와 구현체 코드가 다 들어가 있는데 어떻게 패키지를 세분화 하시는지 궁금하네요! 사실 별거 아닌 간단한 질문일 수 있는데, MVC 강좌 진행 사항을 여쭙기 위한 build-up입니다.ㅎㅎㅎ MVC 강의 기대됩니다 😎
-
해결됨스프링 핵심 원리 - 기본편
안녕하세요! 강의 중 필드 인잭션이 테스트가 어려운 경우가 헷갈려서 질문 남깁니다!!
안녕하세요 갓영한님 항상 강의 재밌고 유익하게 잘 보고 있습니다! 강의를 보고 "필드 인잭션은 외부에서 변경이 불가능하여 테스트하기 매우 어렵다"라고 이해했는데요! 이 경우가 테스트 할 때 1. 스프링 컨테이너를 띄워 테스트를 하는 경우인가요? 아니면 2. 순수 자바 코드로만 테스트를 하는 경우 인가요? 저는 2번인 경우로 이해를 했고, 예를 들면 Service 인터페이스에 구현체1, 구현체2 두 개의 클래스가 존재할 때 원하는 구현체로 테스트하기 어렵다는 것인지 궁금합니다 강의 너무 잘 설명 해주셨는데 정리가 잘 안돼서 질문 남깁니다 ^^ 감사합니다~
-
미해결스프링 핵심 원리 - 기본편
회원 도메인 개발 implements 관련
MemoryMemberRepository에서 MemberRepository를 implements 하는 과정에서 err 가 나올 때 저는 윈도우여서 art+enter 눌렀는데 change extend만 나오더라구요 그래서 영상에 나온 코드를 다 작성했는데도 동일한 err만 계속 나오면 어떻게 해결해야 implements method가 잘생성될 수 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
비즈니스 로직을 엔티티에 위임하는 기준이 궁금합니다!
안녕하세요! 강의 잘 듣고 있습니다~ 주문 취소와 주문 가격 조회 비즈니스 메서드를 엔티티 내부에서 선언하신 이유가 궁금합니다! 오더와 달리 멤버의 경우 엔티티에 비즈니스 로직을 작성하지 않은 건 리포지토리에서 사용한 save, find 외에 별다른 로직이 없기 때문인가요? 서비스가 아닌 엔티티에 비즈니스 로직을 위임하는 기준이 궁금합니다!
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
리포지토리 테스트케이스 실행
테스트 케이스 실행했을 때 이렇게 뜨는데 제대로 되는건가요? 강의 영상에서는 아무것도 안뜨던데 저는 이렇게 결과가 뜹니다..!
-
미해결스프링 핵심 원리 - 기본편
설계할 때 쓰는 툴?
안녕하세요 강의 잘듣고있습니다. 강의를 보다 문득 궁금해졌는데 영한님은 도메인 설계, 클래스 다이어그램, DB ERD 등을 만들 때 어떤 툴을 쓰시나요??
-
미해결실전! 스프링 데이터 JPA
벌크성 쿼리 질문입니다
밑에 질문을 보면 findByusername으로 member을 찾아올 때 1차캐시에서 가져오는 것이 아닌 DB를 통해 가져온다고 하셨는데 그러면 em.clear를 해주지 않아도 member5는 db에서 조회해서 가져오기 때문에 age가 41로 되야하는 것 아닌가요??? 이 부분이 잘이해가 안됩니다 ㅠㅠ
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
후반부 MemberServiceIntegrationTest에서 회원가입 실행 시 수많은 오류들이 나와서 질문드립니다!
패키지와 심볼 클래스를 찾을 수 없다고 나오는데 제가 라이브러리 다운로드를 잘못한건가 싶은데 정확하게 원인을 찾을 수 없어 질문 드립니다. 사진 첨부합니다!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Bear(베어) 강의 자료
안녕하세요. 영한님 좋은 강의 제공해주셔서 감사합니다. 다름이 아니라, Bear(베어)에서 강의 자료를 보고 싶은데 pdf 파일은 볼 수 없는 거 같습니다. 혹시 베어에서 볼 수 있게 .md파일로도 강의자료 부탁드려도 되겠습니까? 감사합니다.
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
프로젝트 세팅 중 maven compile시 에러발생합니다
프로젝트 실행하기 강의중에 maven compile시에 아래와 같은 에러가 발생합니다. 해결 방법이 있을까요? Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.8.0:npm (npm install) on project studyolle: Failed to run task