설계 트레이드 오프 링크 접속 안됨
미해결
토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 2
https://eternitymwobject.tistory.com/43 를 접속했더니 이렇게 나오네요. 확인 부탁드립니다.
- java
- spring
- spring-boot
- jpa
- 리팩터링
- ddd
172만명의 커뮤니티!! 함께 토론해봐요.
미해결
토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 2
https://eternitymwobject.tistory.com/43 를 접속했더니 이렇게 나오네요. 확인 부탁드립니다.
해결됨
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (모름) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 궁금증이 생겨서 질문을 드립니다. 현재 시점(26.8) 에서 강의를 듣고 있는데요. pdf 을 보면, 시간 지남에 따라 assertEquals() 내용이 달라 지듯이, 그 동안 강의 에서 배운 assertj 의 assertThat().isEqualTo()나, 다른 방법 들이 있어서 어떤 것을 쓰는게 맞는지 몰라서 여쭈어 봅니다. 첫 번째는 assertEquals(), assertThat()이고 두번째는 assertThrows() , assertThatThrownBy() 입니다. 영한님 이라면 어떤 것들을 쓰실지 궁금합니다. 답변 부탁 드립니다.
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
안녕하세요 강사님 양질의 강의 제공해주셔서 감사합니다 api-gateway yml 파일에 micro-service url에 매핑된 host 정보를 기입하셨는데요 이러면 service-discovery 프로세스를 가동시키신 이유가 뭘까요? 제가 이해하기론 service-discovery는 dns정도로 이해하고 있습니다
해결됨
스프링 DB 2편 - 데이터 접근 활용 기술
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (모름) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 궁금증이 생겨서 질문을 드립니다. 스프링 트랜잭션 전파7 까지 지 강의를 보면서, 전 섹션 스프링 트랜잭션 의 이해 에서, 트랜잭션 aop 주의 상황 프록시 내부 호출1 -2 에서 만든, InternalCallV1Test ~ v2Test 가 개념적으로 비슷 하다 라는 느낌을 받았습니다. 이유가 객체가 자기 자신을 참조하고 있어서 내부 적용에 트랜잭션 작동이 안되서 , 새로이 만들어서 적용하는 모습 을 보고?, 말입니다. 영한님이 예제를 잘 만들어서 그런 건지는 몰라도 InternalCallV1test 가 현재 하고 잇는 BasicTxTest 랑 비슷하다고 생각도 듭니다. 이렇게 생각해도 되는지 알고 십습니다. 답변 부탁드립니다.
미해결
토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 2
헥사고날 아키텍처와 DDD를 적용할 때, 화면에 강하게 연관된 조회 데이터를 어떻게 다루는 게 좋은지 궁금합니다. 예를 들어 채팅방 목록 화면에서 각 채팅방마다 다음 정보를 한 번에 보여줘야 한다고 가정하겠습니다 . ex) 채팅방 이름, 마지막 채팅 내용, 읽지 않은 채팅 개수 이 정보를 구하려면 room, chat, read_status 같은 여러 테이블을 함께 조회해야 하고 , N+1 문제를 피하려면 Querydsl 이나 JDBC 등을 사용해서 한 번의 쿼리로 조회하는 방식이 필요해 보입니다 . 이 경우 제 생각에는 기존 포트와 분리해서 , 조회 전용 port 와 query repository interface 를 application 계층에 두고 , adapter 계층에서 Querydsl/JDBC/MyBatis 등으로 구현하는 것이 해결책 같습니다. 이런 식으로 cqrs패턴을 적용하는 것이 유일한 해결책인가요? 혹시 더 나은 방법이 있는지 궁금하여 질문남깁니다. (강의 너무 잘 보고 있습니다)
해결됨
[Lv1] 면접에서 설명할 수 있는 Spring Boot - 경험으로 답변하는 백엔드 개발
implementation 'com.h2database:h2' 이걸로 h2 database를 추가했는데 로그에 h2 database가 추가되지 않아 확인해보니 implementation 'org.springframework.boot:spring-boot-h2console' 이 부분을 추가해야한다고 합니다. Spring Boot 4.x부터 H2 콘솔 자동설정(H2ConsoleAutoConfiguration)이 spring-boot-autoconfigure에서 분리되어 별도 모듈 spring-boot-h2console로 이동했습니다. 이 내용에 대해서 확인해주시면 감사할거 같습니다! 좋은 강의 제공해주셔서 감사합니다!
해결됨
토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 2
안녕하세요. Member 객체를 생성할 때, 다른 방법을 선택해 보는 것은 어떨까요? 기존에는(설계 트레이드 오프 개선 전) Member.register() 가 MemberRegisterRequest 에 직접 의존하고 있었는데, 도메인 모델이 요청 DTO를 알지 않도록 의존성을 반대로 두는 방법입니다. MemberRegisterRequest 에서 Member 객체를 직접 생성하는거죠. public record MemberRegisterRequest( ... ) { public Member toMember(PasswordEncoder passwordEncoder) { return Member.register(email, nickname, password, passwordEncoder); } } public class Member extends AbstractEntity { ... public static Member register(String email, String nickname, String password, PasswordEncoder passwordEncoder) { Member member = new Member(); member.email = new Email(email); member.nickname = requireNonNull(nickname); member.passwordHash = requireNonNull(passwordEncoder.encode(password)); member.status = MemberStatus.PENDING; member.detail = MemberDetail.create(); return member; } ... } public class MemberModifyService implements MemberRegister { ... @Override public Member register(MemberRegisterRequest registerRequest) { checkDuplicateEmail(registerRequest); Member member = registerRequest.toMember(passwordEncoder); memberRepository.save(member); sendWelcomeEmail(member); return member; } ... } MemberRegisterRequest.toMember(passwordEncoder) 에서 Member.register(email, nickname, password, passwordEncoder) 를 호출하면 Request DTO → Domain 방향으로만 의존합니다. 별도의 MemberRequestInfo 같은 파라미터 객체도 필요하지 않아 구현이 단순합니다. Request DTO를 단순 데이터 전달 객체로 유지하려면 서비스 계층에서 각 값을 꺼내 Member.register() 에 전달하는 방법도 가능합니다. (이 방법보다는 이전 방법이 서비스 계층을 간결하게 유지하는 방법이긴 합니다.) 이런 방법을 기본 개발 규칙으로 두면, 의존성 방향도 문제 없고, 추가적인 객체(예: MemberRequestInfo )를 생성할 필요도 없어서 충분한 이점이 있습니다. 다만, register() 에 전달해야 할 파라미터가 많아진다면 번거롭긴 하겠네요. 이 방법에 대한 의견도 부탁 드립니다. 감사합니다.
해결됨
스프링 DB 2편 - 데이터 접근 활용 기술
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 궁금증이 생겨서 질문을 드립니다. 이 강의에서 Quersydsl 설정 하는 것을 보았는데요. 여기에서 질문입니다. 저가 스프링에서 gradle를 기본 설정 할때 run은 인텔리제이로 test는 그레이들로 설정하는데요 사진 처럼요 이렇게 설정 하려면 영상에 나온 두 가지 방법 (인테리제이 일때는 리빌드 프로젝트, 그레이들 때는 아웃터에서 컴파일자바,) 을 다써야 하나요? 테스트 및 런 실행 환경이 달라서 궁금증이 생겼습니다. 그리고 이렇게 설정한 이유는.. 예전에 그레이들로 설정햇을때 무언가 달라서 이렇게 설정 했던 걸로 기억 하는데 정확히 기억 안나네요. 답변 부탁 드립니다.
미해결
실전! 스프링 데이터 JPA
JPQL에서 DTO를 조회할 때 new 패키지명.DTO명(...) 을 생략하고 바로 select m.id, m.name, t.name 이렇게 작성해도 DTO로 반환이 되는데 원래 가능한 내용인가요?? @Query("select new study.datajpa.dto.MemberDto(m.id, m.name, t.name) from Member m join m.team t") List<MemberDto> findMemberDto(); @Query("select m.id, m.name, t.name from Member m join m.team t") List<MemberDto> findMemberDtoNot();
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. [질문 내용] 강의보고 책으로 복습하다가 궁금한 점이 있어서 질문드립니다. jpa 책 105쪽에 변경감지에 관한 내용입니다. 엔티티가 영속성 컨텍스트에 보관될 때 최초의 상태(persist())를 스냅샷으로 저장해두고 플러시 시점의 엔티티를 비교해서 변경사항에 대한 수정 쿼리를 쓰기지연 sql 저장소에 보낸다고 되어있습니다. 이 메커니즘은 이해가 되는데 persist(); setName(); flush(); 여기서 persist()를 하게 되면 실제 db에 바로 반영이 되는 것이 아니라 영속 컨텍스트에 저장(1차캐시), 이후 insert 쿼리를 쓰기 지연 저장소에 저장하게 됩니다. 이후 엔티티의 이름을 변경하고 플러시할 경우 스냅샷과 플러시 시점의 엔티티 상태를 비교해서 변경 부분에 관한 수정 쿼리를 쓰기지연저장소에 보낼 때 쓰기지연저장소에는 insert와 update 두 쿼리가 있고 플러시할 때 insert, update 두가지 모두 실행되는 걸까요? 아니라면 이유가 궁금합니다! 찾아보니까 insert만 나간다고 하는데 왜 그런지 도무지 이해가 안됩니다.
미해결
자바 ORM 표준 JPA 프로그래밍 - 기본편
안녕하세요. 강의듣고 혼자서 영화 정보 사이트를 만들어보며 공부중에 있습니다. 만들던 중 테이블 설계하는데 궁금증이 생겨 질문드립니다. 해당 사이트는 영화뿐 아니라 드라마 시리즈 정보 또한 제공할 것인데요. 영화, 드라마 시리즈는 둘 다 공통적으로 크레딧(감독 및 출연진 정보)를 가지죠. 처음에는 영화, 시리즈 크레딧 각각의 테이블로 만들려다가 공통되는 부분이 많기에 단일 테이블 전략으로 크레딧을 다음과 같이 만들었습니다. Credit 클래스 { id // pk name // 배우 및 감독 이름 role // 역할 movie series } 이제 질문입니다. 위처럼 단일 테이블 전략으로 만드니 하나의 행에서 영화 또는 series 둘 중 하나는 결국 null 값이어야 할 것입니다. 한 배우의 하나의 영화 또는 드라마 시리즈에 대해서만 나타내는 것이니까요. 그런데 모든 행이 둘 중 하나는 의도적으로 null 값을 가질텐데 null이 있어도 전혀 문제가 없나요? 공부하면서 만든 엔티티들은 아무 생각 없이 하나의 영화는 다수의 크레딧을 가지고, 하나의 시리즈도 다수의 크레딧을 가지니까 연관관계를 맺어야지 하고 만들었습니다. 그런데 생각해보니 굳이 연관관계를 맺지않고, 영화나 시리즈를 나타내는 타입 정보만 넣어서 구분 짓어준다면, 영화의 크레딧인지 시리즈의 크레딧인지 구분하여 조회가 가능하다고 생각합니다. 그래서 이때 연관관계라는 것이 반드시 왜 필요한지 궁금해졌습니다. 이렇게 타입정보로 구분지어 조회가 가능할 때도 연관관계는 반드시 맺어주는게 좋나요?
미해결
실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의 스크립트 Hibernate5JakartaModule 호출시 에러가 발생하여 확인 차 문의드립니다.ㄴ> om.fasterxml.jackson.datatype.hibernate5.jakarta.Hibernate5JakartaModule Unable to get public no-arg constructor 스프링부트 버전 문제인 것으로 판단하여 프로젝트의 스프링부트 버전확인시 4.1.0 버전으로 실행하였고 해당 버전에서 라이브러리와 클래스 변경이 있는 것 같아 질문 남깁니다. // Hibernate5jakarta // implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate5-jakarta' // -> 변경 // Hibernate7Module implementation 'tools.jackson.datatype:jackson-datatype-hibernate7' package jpabook.jpashop; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import tools.jackson.datatype.hibernate7.Hibernate7Module; @SpringBootApplication public class JpashopApplication { public static void main(String[] args) { SpringApplication.run(JpashopApplication.class, args); } // @Bean // Hibernate5JakartaModule hibernate5Module() { // Hibernate5JakartaModule hibernate5JakartaModule = new Hibernate5JakartaModule(); //// // 강제 지연 로딩 설정 // hibernate5JakartaModule.configure(Hibernate5JakartaModule.Feature.FORCE_LAZY_LOADING, true); // return new Hibernate5JakartaModule(); // } // ㄴ 변경 @Bean Hibernate7Module hibernate7Module() { Hibernate7Module hibernate7Module = new Hibernate7Module(); // 강제 지연 로딩 설정 // hibernate7Module.configure(Hibernate7Module.Feature.FORCE_LAZY_LOADING, true); return hibernate7Module; } }
해결됨
Spring Boot, AWS로 백엔드 서비스 한 사이클 완성하기
AWS EC2 서버에 애플리케이션 배포하기 수강중인데 인바운드 포트 열고 -> 재부팅 -> docker ps 에 아무것도 없음 -> docker-compose up -d 로 컨테이너 생성 -> ec2-13-209-73-224.ap-northeast-2.compute.amazonaws.com:8080/api/posts 로 요청 반응 없음-> 터미널 반응 없음 docker ps , ssh springboot-twitter 전부 반응 없음 계속 이렇게 되는데 이게 cpu 할당량이 문제인건지.. 모르겠네요
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 네 [질문 내용] setter 사용을 지양하라고 하셨는데요 □ 필드 작성 □ 연관관계 설정 □ List 초기화(new ArrayList<>()) □ @NoArgsConstructor(PROTECTED) □ private 생성자 □ createXXX() □ 연관관계 편의 메서드 □ 비즈니스 메서드(changeXXX(), cancel() 등) 그러면 제가 정리한 이 순서처럼 아래 코드와 같이 createMember 메소드를 위한 생성자를 만들고, changePassword같은 비즈니스 메서드를 추가하면 될까요? 2.그리고 createXX같은 메서드를 추가해줬을때@NoArgsConstructor(access = AccessLevel.PROTECTED) 를 추가해줘야하는게 맞는건가요? 코드는 강의와 관련없는 제 개인 코드입니다. //생성자 private Member( String name, String email, String password, LocalDate birthDate, String phoneNumber, Address address ) { this.name = name; this.email = email; this.password = password; this.birthDate = birthDate; this.phoneNumber = phoneNumber; this.address = address; } public static Member createMember( String name, String email, String password, LocalDate birthDate, String phoneNumber, Address address ) { return new Member( name, email, password, birthDate, phoneNumber, address ); } //비밀번호 변경 public void changePassword(String password) { this.password = password; }
미해결
토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
안녕하세요 토비님 혹시 완성된 코드의 repository 주소는 없을까요?
해결됨
[Lv2] 현업 개발자의 JPA 완전 정복 - 영속성 컨텍스트부터 실무 패턴까지
다형성인데 다양성이라고 표시되어 있습니다! 이거 말고도 자막에 오타가 많은데, 제보하면 수정해 주시나요?
미해결
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
안녕하세요 강사님 강의 잘 듣고 있습니다. 섹션 9에서 강의대로 docker에 rabbitmq를 올린 뒤 configservice를 실행했는데 오류가 발생합니다. org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[springCloudBus.anonymous.PswTKgDeT12hTiCFa33hLw] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:772) ~[spring-rabbit-3.2.5.jar:3.2.5] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.passiveDeclarations(BlockingQueueConsumer.java:649) ~[spring-rabbit-3.2.5.jar:3.2.5] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:636) ~[spring-rabbit-3.2.5.jar:3.2.5] at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.initialize(SimpleMessageListenerContainer.java:1482) ~[spring-rabbit-3.2.5.jar:3.2.5] at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$ AsyncMessageProcessingConsumer.run (SimpleMessageListenerContainer.java:1322) ~[spring-rabbit-3.2.5.jar:3.2.5] at java.base/ java.lang.Thread.run (Thread.java:1447) ~[na:na] Caused by: java.io .IOException: null at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:140) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.impl.AMQChannel.wrap(AMQChannel.java:136) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:158) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:1033) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.impl.ChannelN.queueDeclarePassive(ChannelN.java:47) ~[amqp-client-5.25.0.jar:5.25.0] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:565) ~[na:na] at org.springframework.amqp.rabbit.connection.CachingConnectionFactory$CachedChannelInvocationHandler.invoke(CachingConnectionFactory.java:1201) ~[spring-rabbit-3.2.5.jar:3.2.5] at jdk.proxy2/jdk.proxy2.$Proxy140.queueDeclarePassive(Unknown Source) ~[na:na] at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:750) ~[spring-rabbit-3.2.5.jar:3.2.5] ... 5 common frames omitted Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'springCloudBus.anonymous.PswTKgDeT12hTiCFa33hLw' in vhost '/', class-id=50, method-id=10) at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:36) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:552) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:316) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:152) ~[amqp-client-5.25.0.jar:5.25.0] ... 12 common frames omitted Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'springCloudBus.anonymous.PswTKgDeT12hTiCFa33hLw' in vhost '/', class-id=50, method-id=10) at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:528) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:349) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:193) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:125) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.impl.AMQConnection.readFrame(AMQConnection.java:761) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.impl.AMQConnection.access$400(AMQConnection.java:48) ~[amqp-client-5.25.0.jar:5.25.0] at com.rabbitmq.client.impl.AMQConnection$ MainLoop.run (AMQConnection.java:688) ~[amqp-client-5.25.0.jar:5.25.0] ... 1 common frames omitted 깃허브의 프로젝트를 그대로 가져오고 어떻게 해도 해결이 안되네요ㅠㅠ 도움 부탁드립니다..
미해결
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 개발자의 꿈을 접고 살아가던 사람입니다. 월드컵 시즌을 만나 영한님의 치킨 디도스 이벤트와 무상태 프로토콜 강의 내용이 떠올라 뜬금없이 취미로 주문 기능 구현 포트폴리오를 만들던 중 일상에서 경험한 것들을 통해 개인정보 유출에도 대응 가능하려면 어떻게 해야하는지.. 소비자가 트라우마를 경험하거나 여러 고충에 대응할 수 있는 방법을 쥐어짜다보니 영한님 강의를 쪽쪽 뽑아먹고 있는데요.. 부족하지만 직접 성의를 담아 만들어보겠습니다. 약속한게 있어서요.. 항상 좋은 강의 감사합니다.
미해결
실전! Querydsl
궁금한게있습니다. leftjoin 강좌 설명해주시는데.. 3분 44 초에서.. List<Member> result = queryFactory .selectFrom(member) .leftJoin(member.team,team) .where(team.name.eq("teamA")) .fetch(); 에서... 혹시 버전이나 언어에 따라서.. 같은 문법이라도.. left outer join으로할경우.. left on join으로 변경이되는 케이스가있을까요? val result = queryFactory; .selectFrom(member) //.join( member.team , team) .leftJoin( member.team ,team) //.where( team.name .eq("teamA")) //.on( team.name .eq("teamA")) .fetch(); left outer join이 나올려면 어떻게하는게맞을까요? 혹시 버전/로그 출력 차이때문에 outer도 안나오는케이스가있는지 궁금합니다.
미해결
스프링부트를 이용한 웹 프로그래밍: 웹사이트 이렇게 만드는 거예요!
AdminService.java에서 List<MemberDto> admins = memberEntities.stream() .map(MemberEntity::toDto) .collect(Collectors.toUnmodifiableList());Collectors.toList(); 이 코드에서 Collercotrs.toList(); 가 의미가 있는 코드일까요? 줄바꿈도 안되어 있고, 약간 이해가 안되는 문장 같아서 질문드립니다.