안녕하세요? 강사님. 항상 강의 잘듣고 있습니다. 다름이 아니라, 이전에 알려주신 내용에서 밑에 처럼 dto로 조회 할때는 new 오퍼레이션을 사용하셨는데, @Query ( "select new study.datajpa.repository.MemberDto(m.id, m.username, t.name) " + "from Member m join m.team t" ) List<MemberDto> findMemberDto () ; 왜 밑(네이티브 쿼리)에서는 dto 를 조회 할때 new 오퍼레이션을 사용을 안하셨나요..? @Query (value = "SELECT m.member_id as id, m.username, t.name as teamName " + "FROM member m left join team t" , countQuery = "SELECT count(*) from member" , nativeQuery = true ) Page<MemberProjection> findByNativeProjection (Pageable pageable) ; 항상 좋은 강의와 답변 감사드립니다!!^^
PDF 파일에서 IntelliJ Gradle 대신에 자바 직접 실행 항목에 적힌 설명처럼 IntelliJ IDEA 변경하고 프로그램 실행시에 /src/main 하위에 generated 폴더가 자동으로 생기는데 왜 생기는건가요?? 안 생기게 못하나요?? 환경 스프링 부트 2.4.2 인텔리제이 얼티메이트 2020.3.1
안녕하세요? 아직까지는 예제에서 데이터를 직접 리턴해주는 방식으로 하고있는데요, 여기서 로이 필딩이 말하는 Restful의 조건을 만족하려면 Self-Descriptive Messages와 HATEOAS를 만족해야 한다고 하는데 이 조건을들 만족하려면 결국 HttpEntity를 사용하여야 하는걸까요? RestTemplate로 작성된 코드를 보고 영한님의 HTTP 강의도 듣고나니 머릿속에서 퍼즐이 맞춰지는 느낌은 드는데 이게 맞는거다 라는 확신은 없어서 제가 제대로 이해하면서 진행하고 있는건지 궁금하여 질문드립니다. 그리고 강의 만족도가 매우 높습니다 ^^ 항상 감사하게 수강하고있습니다. 이대로 QueryDSL까지 열심히 달려서 실무에서 빨리 적용해보고 싶네요 ㅎㅎㅎ
7분 즘에 MemberRepository 클래스르 만들고 @PersistenceContext 어노테이션을 private EntityManager em; 에 붙였는데 원래 정석대로라면 팩토리를 만들고 그걸로 엔티티매니저를 반환받는거였는데 이 어노테이션으로 그 과정을 스킵한다고 봐도 되나요? 팩토리 만들 때 마다 비용이 많이 소모된다고 알고있는데 이 어노테이션도 똑같이 팩토리를 한번만 만들고 그 팩토리로 엔티티매니저를 반환하나요? 그렇다면 이 과정을 알고 있다는 전제 하에 그냥 간단하게 @Autowired 같은 거라고 보면 될까요 ㅎㅎ...
아무리 devtools 를 적용시켜봐도 리컴파일을 하고 새로고침을 해도 페이지 변하지 않길래 구글님에게 수소문 해본 결과 https://lejewk.github.io/springboot-devtool/ 이거대로 해보니 되네요. 혹시나 devtools 동작 안하시는 분들 참고하시라고 공유차원에서 올려봤습니다~
private void close (Connection conn) throws SQLException{ DataSourceUtils.releaseConnection(conn , dataSource ) ; } 2.4.2 버전을 사용하고 있습니다. JdbcMemberRepository 클래스에서 DataSourceUtils에 관한 import가 되질 않아 진행이 안되는데요. Alt + Enter를 눌러도 추천하는 내용에는 import 내용이 없습니다. 어떻게 해결해야 하나요?
영한 스승님 안녕하세요! 본 강의에서 작성하신 querydsl 코드에서요. 궁금한 점이 있습니다! fetchJoin 메서드 호출 없이 join 메서드만 호출할 경우' 주문 엔티티'가 가지고 있는 '멤버 엔티티'를 가져오기 위해 추가적인 쿼리가 호출되지 않을까요? 불필요하게 select 쿼리 내 join 절이 붙어서 나가는 것이 아닌가 궁금합니다.
좋은 강의 감사드립니다. 한국은 설 연휴가 시작되었는데 새해 복많이 받으세요! 10분40초경 return 해줄 때 ResponseEntity의 body에 event가 아니라 newEvent를 반환해줘야 될 것 같은데 아닌가요..? 현재 코드상 event 는 modelmapper를 활용해서 만든 event객체라 id값이 없고 테스트를 실패할것 같은데 body에 event를 넘겨줘도 테스트에서 return 된 body 에는 id값이 들어가있고 테스트가 통과되는데 제가 놓친부분이 궁금합니다.
안녕하세요. 현재 모바일 앱 연동을 위해 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(); } } } 좋은강의 감사합니다. 열심히 배우고 있습니다!!
선생님께서 '커맨드'라고 하는 건 컨트롤(ctrl)로, '옵션'이라고 하는 건 알트(alt)로 생각하시면 될 것 같습니다! 직접 프로그램 내에서 써보고 찾아보니까 아직까지는 다 맞았던 것 같아요! (ex. 옵션 엔터 = 윈도우에서는 alt + enter) (ex. 커맨드 옵션 M = 윈도우에서는 ctrl + alt + M )
안녕하세요 영한님. 강의를 듣다가 궁금증이 생겨 질문 남깁니다. 가정하는 상황은 다음과 같습니다. 부모(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가 연관관계의 주인이 아니므로 영속성 전이와 고아객체 옵션을 사용하고자 하는 것입니다. 이게 옳은 방향인지 잘 모르곘습니다. ㅠㅠ 감사합니다.