클래스를 빈으로 등록하면 스프링이 싱글톤 패턴으로 객체를 관리한다고 하셨는데 그렇다면 MemberServieTest에서 각 테스트 케이스마다 독립성을 보장하기 위해 beforeEach 메서드를 이용하여 매번 객체를 새로 생성해서 주입해주었던 방법을 더 이상 사용하지 않아도 되는건가요? beforeEach 메서드를 주석처리하고MemoryMemberRepository 클래스의 생성자에 "생성되었습니다"라는 구문을 넣어서 테스트 해보니 각 테스트 케이스가 실행될 때마다 MemoryMemberRepository 객체가 새로 생성됨을 알 수있었는데 그렇다면 junit에서는 static이 아닌 객체는 각 테스트 케이스마다 새로 생성하나요?
안녕하세요 좋은 강의 감사합니다!. 강의 내용 중 RDS 수직 확장을 했다고 말씀하셨는데, 수직 확장을 실습한 내용은 어디에 있는걸까요?? 간단하게 DB에서 수정 후 스펙 변경하면 되는 부분이라 강의 내용에서 빼신 걸까요? 그리고 읽기 복제본을 생성 한 것 만으로도 자동으로 Replication이 형성 된거구, 원본에 CUD 작업 시 주기 적으로 복제본으로 데이터를 동기화 하는 작업을 하는거라고 보면 될까요?
관련 질문에 대한 답변을 읽어봤는데도 이해가 가지 않아서 질문드립니다. 커맨드와 쿼리를 분리해야한다는 CQS를 설명하신 말이었어요. 내부변경이 일어나는것은 커맨드, 명령어라고 부른다 커맨드는 결과값을 그대로 반환하면안된다 내부변경이 일어나지않는 것은 쿼리라고 부른다. 쿼리는 결과값을 반환한다 -> 1. 커맨드에서 결과값을 반환하면 안되는 이유가 뭘까요? update 메서드 안에서도 결국은 update하는것(커맨드)과 findOne(쿼리)하는 코드가 모두 들어가있는거잖아요? 근데 이게 왜 cqs를 지킨 사례인거죠? @Transactinal public vodi update(Long id, String name){ memberService.update(id,name); Member member = memberService.findOne(id); rreturn ~~~; }
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 영한 님의 강의를 수강한 뒤 간단한 게시판 프로젝트를 작업해보고 있습니다. 말씀해주신 임베디드 모드를 테스트에 적용하기 위해 다음과 같이 설정해봤습니다. test의 resources/application.properties에는 단순히 로그와 관련된 것만 입력해두었습니다. logging.level.org.springframework.jdbc=debug # Can check SQL which Hibernate run and create logging.level.org.hibernate.SQL=DEBUG # Can check parameters which binding in SQL logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE 멤버 엔티티입니다. package com.devholic22.board.entity; import jakarta.persistence.*; import lombok.Data; @Data @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "user_name", length = 10) private String name; @Column(length = 10) private String password; public Member() { } public Member(String name, String password) { this.name = name; this.password = password; } } 멤버 리포지토리입니다. package com.devholic22.board.repository; import com.devholic22.board.entity.Member; import org.springframework.data.jpa.repository.JpaRepository; public interface MemberRepository extends JpaRepository<Member, Long> { } 테스트 코드입니다. package com.devholic22.board.repository; import com.devholic22.board.entity.Member; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @Slf4j @SpringBootTest public class MemberRepositoryTest { @Autowired MemberRepository repository; @Test void save() { Member member = new Member("testerA", "1234"); Member savedMember = repository.save(member); log.info(savedMember.toString()); } } 그런데 강의에서 이야기하셨던 SQL 스크립트를 만들어두지 않았는데도, 테스트가 제대로 실행되었습니다. 원래 예상했던 결과는 Table "MEMBER" not found 와 같은 부분인데, 왜 이런 에러가 발생하지 않았는지 궁금합니다. 테스트 코드 결과입니다. 2022-12-11T13:15:08.008+09:00 INFO 65418 --- [ main] c.d.b.repository.MemberRepositoryTest : Started MemberRepositoryTest in 7.134 seconds (process running for 9.374) 2022-12-11T13:15:08.427+09:00 DEBUG 65418 --- [ main] org.hibernate.SQL : insert into member (id, user_name, password) values (default, ?, ?) 2022-12-11T13:15:08.501+09:00 INFO 65418 --- [ main] c.d.b.repository.MemberRepositoryTest : Member(id=1, name=testerA, password=1234) 2022-12-11T13:15:08.547+09:00 INFO 65418 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2022-12-11T13:15:08.549+09:00 INFO 65418 --- [ionShutdownHook] .SchemaDropperImpl$DelayedDropActionImpl : HHH000477: Starting delayed evictData of schema as part of SessionFactory shut-down' 2022-12-11T13:15:08.550+09:00 DEBUG 65418 --- [ionShutdownHook] org.hibernate.SQL : drop table if exists member cascade 2022-12-11T13:15:08.555+09:00 INFO 65418 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2022-12-11T13:15:08.560+09:00 INFO 65418 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
안녕하세요 선생님. 43분 강의 16분 경에 등록을 누르면 오류가 발생하는데 이게 나이에 아무것도 입력을 안하면 null이 들어가서 Member entity에 int memAge와 충돌이 나는 거잖아요? 그런데 만약 Member entity에 Integer memAge로 해주면 어떤가요? Integer 타입은 값이 없을 때 null이 기본값으로 알고 있어서 될 것 같아서 해봤는데 정상적으로 모달창이 나오더라구요.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 선생님! 스프링을 막 입문하기 시작한 코린이 입니다. 다름이 아니라 기존에 이클립스를 사용하다 인텔리제이를 처음 접했는데 유료버전은 배우는 입장에서 금액이 상당하여 무료버전을 사용하고 있는 중입니다. 강의 6:50 초 쯤에서 Gradle에 라이브러리?를 알려주시는 장면에서 저는 boot-start-? 버전.RELEASE 라는 항목이 존재하지 않는데 강의를 따라가는데 있어 크게 상관없을까요? 강사님 강의영상 6:40에서 화면을 보면 이런식으로 톰캣, 제이슨, 등 릴리스된 항목들이 존재하는데 제가 사용하는 인텔리제이에서는 없어가지고 질문을 남겨봅니다. 구글링 해보니 무료버전은 지원을 안한다 해서 그러는데 위에서 똑같은 질문이지만 1번 사진 처럼 크게 플러그인 추가 없이 강의 내용 따라가도 괜찮을지 여쭤봅니다 ㅠㅠ (스프링 부트 파일 생성할때 버전은 3.0.0은 오류 나길래 2.7.6 버전을 사용했습니다. 자바는 11이고요. 로컬8080 접속은 문제 없이 잘됩니다.)
강의도중에 설명해주시긴 했는데 그래도 이해가 덜 가서 질문드립니다 membersaveDto만있으면 memberupdatedto를 만들지 않아도돼요 둘다 만들게 되면 코드의 중복이 발생하는것아닌가요? save와 update는 아예다른것이기때문에 중복이 발생해도 상관이 없는걸까요? 아예다른것이라기엔 update에도 있고 save에도 있는 필드에 변화가 생겼을때 둘다 수정을 해주어야해요 그럼 수정해야할 포인트가 늘어나는건데도 updateDto를 생성해주는게 맞는걸까요?
안녕하세요 강사님, 강의 잘 보고 있는 데이터 분석가 입니다. 현재 저는 이전에 문의드린대로 Mac local 환경에서 spark를 구동해서 실습을 진행해왔고 현재 Sparkdl xgboost 패키지 강의 또한 로컬 환경에서 구동하고자 시도하고 있습니다. 다만 sparkdl의 경우 로컬환경에서 구동하는것 조금 까다로운데 혹시 참고할 만한 레퍼런스가 있을까요? SynapseML도 로컬에서 진행할 수 있을것 같은데 같은 문의드리고자 합니다, 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요. 리드온리 옵션 관련해서 강의를 듣다가 궁금해진건데 서비스에서 Select문 만을 호출하는 메서드가 @Transaction(readOnly = true)를 달고 있는 것과 트랜잭셔널 어노테이션을 아예 안달고 있는 것 중에 후자가 성능상 이점이 있나요? 아니면 해당 설명은 타입 수준에서 트랜잭션을 걸고 읽기 전용 트랜잭션 메서드를 따로 정의하기 위한 것인가요?
안녕하세요 선생님! 강의를 듣다가 잘 이해가 되지 않는 부분이 있어 질문드립니다. 이 문제에서 0번 노드에서 출발해서 0번 노드로 돌아오는 경우만 dp로 구하면 되는 건가요? 만약에 그렇다면 어떻게 정답을 보장하는지 알고 싶습니다. 저는 i번 노드에서 출발해서 i번 노드에 도착하는 경우를 모두 확인해야 한다고 생각했었거든요..
김영한 강사님의 스프링 핵심원리 - 기본편 강의 38강 configurationTest 내용입니다. 수업과 관계없는 질문입니다 ㅠㅠ. AppConfig 클래스에서 memberRepository를 반환하는 메서드에 public만 붙였을때는 정상적으로 싱글톤 빈으로 등록되어 정상 작동하다가 public static이라 붙였더니 싱글톤이 깨져버렸습니다. AppConfig는 CGLIB 라이브러리를 사용해 만든 것인데 AppConfig@CGLIB의 실제 구체적인 코드에서 싱글톤 빈으로 등록하지 못하고 AppConfig 기존 자바 로직을 호출함으로 발생하는 것인가요??