FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':test'. > No tests found for given includes: [jpabook.jpashop.MemberRepositoryTest](filter.includeTestsMatching) * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 4s 테스트 맴버 실행 도중에 위와 같은 오류가 발생하였습니다. 뭐가 문제인걸까요? ㅠ
안녕하세요. spring security 권장사항이 BCrypt라고 해서 조금 찾아보고 테스트를 해봤는데요. <첫 번째 시도> password = !@#$password1234 passwordHashed = $2a$10$foL9uBBw3knu9QoKmVb64.pRTRsxy96NQUQanjhOzl8D1yEoLs73m isValidPassword = true <두 번째 시도> password = !@#$password1234 passwordHashed = $2a$10$abpfdjC6qWnj687evfjzx.bV0Xlkas7wcx0s8OT2UwQD1Huo54oyi isValidPassword = true 보면 솔트를 랜덤으로 생성하기 때문에 인코딩된 패쓰워드가 다르게 나오는데 어떻게 인증이 되는건가요..? 어.. 그러니까 만약 Bcyrpt 솔트 기본값 10으로 회원등록을 하고 (첫 번째 시도) 이 걸로 다시 로그인을 하면 두 번째 시도의 값이 나와서 두 개가 다르다고 인식을 할 거 같은데 어떻게 옳은 패스워드로 스프링 시큐리티가 판단하는지 궁금합니다. 아니면 솔트를 사용하는게 아닌건지..궁금합니다.
https://www.notion.so/bff1425f2f1b4bf2bf505d2a1024f837 1권 4번문제입니다 답안에는 3) 입력 : a = [1, 2, 3], 출력 : class 'list' 라고 적혀있지만 문제에는 3) 입력 : a = 'p', 출력 : class 'char' 으로 적혀있습니다 답안지를 3) 입력 : a = 'p', 출력 : class 'str'이 맞는 출력값이므로 3) 입력 : a = 'p', 출력 : class 'char'은 잘못되어 정답은 '3번' 입니다 로 수정해야하지 않을까 싶습니다
트위치에서 페이지 검사를 해 보니 제목이랑 날짜를 감싸고 있는 태그가 <p class="tw-font-size-4 tw-strong"> 이렇게 바뀌어 있어서, 클래스 이름 부분만 바꿔서 코드를 돌렸는데 작동이 안 되네요. 그런데 예시처럼 "tw-flex"로 클래스 이름을 검색하면 작동이 됩니다. "tw-flex"라는 클래스 이름을 가진 태그가 페이지에 없는데, 왜 이렇게 작동하는지 설명해 주시면 감사하겠습니다~~ 그리고 늘 유익한 강의영상으로 큰 도움 받고 있어요. 감사합니다~
A->B->C 로 참조가 되어 있어서 A를 지우려면 B를 먼저 삭제하고 B를 지우려면 C가 먼저 삭제되어져야 한다고 했을 때, 만약 C가 A를 참조하게 될 경우 싸이클이 생겨서 서로 삭제가 안되는 문제가 생기는데인. 웹던이나 DB단에서 c->a로 참조를 걸려할 때 잘못된 것으로 인지하고 막고 싶은데. 보통 이럴때는 어떤식으로 해결을 해야하나요?
간단한 조회는 Controller 에서 직접 Repository 를 사용하기도 한다. 라는 설명에 대한 질문입니다. 예제에서는 모든 Transaction 이 Service layer 에서 관리되는데 Controller에서 직접 Repository 를 접근할 때에는 tx 가 암묵적으로 생성되는 것인가요?
안녕하세요? 회원기능 테스트 강의 중 질문드립니다. @Trnasactional이 적용된 @Test에서 persist를 해도 DB에 안나간다고 하셨는데 이는 H2 DB에서만 그런건가요? MySQL도 그런가요? H2의 경우 sequence를 이용해 @GeneratedValue를 관리하는데 (로그 보면), MySQL의 경우는 auto_increment를 사용하면 DB에 한번 다녀와야 (flush되어야 = insert가 나가야) member의 id를 알 수 있는게 아닌가 해서요. 비슷한 사례(?)로 Spring Data JPA에서 .save(entity)만 해도 flush 되서 insert 쿼리가 나가는 것처럼요. 강의 잘 보고 있습니다! 답변 미리 감사드립니다.
회원 서비스 개발에서 validateDuplicateMember를 할 때에 동시에 회원가입이 이루어질 때 방지로 name에 유니크를 걸어 주신다고 했는데 이해가 잘 되지를 않습니다. 보통 이름이 같은 사람도 많은데 name 에 unique를 주어도 되는건지 궁금하고요. 동시에 일어났을 때 방지하는 법에 대해 좀 더 자세히 알고 싶습니다~
안녕하세요 김영한님 강의 너무 재미있게 잘 보고 있습니다. 소개 영상에서 JPA 약을 어쩜 그렇게 잘 파시던지.. 보면서 "그래 이게 내가 원하는 세상이야" 하고 바로 결제하여 재밌게 보고 있습니다. 물론 책도 구매하여 모니터 받침으로 잘 쓰고 있습니다. ^^b 한 가지 궁금한게 있는데, 아크 관계의 경우에서는 JPA에서 어떻게 처리해야 될지 잘 모르겠습니다. 아크 관계가 실무에서 굉장히 빈번하게 쓰인다고 하는데, 우형에서는 아크 관계를 JPA로 어떻게 매핑 하여 처리하고 계신지 답변해 주시면 감사드리겠습니다.^^
안녕하세요! 다름이아니라 제가 수업을 따라해보던 중 @ManyToOne, @OneToMany으로 연관관계를 맺은 두개의 테이블을 조회 시 아래와 같은 에러를 확인하였습니다. @Entity @Table(name = "MEMBER") @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") Long id; @Column(name = "NAME") String name; @OneToMany(mappedBy = "member") List<Post> posts = new ArrayList<>(); } @Entity @Table(name = "POST") @Getter @Setter public class Post { @Id @GeneratedValue @Column(name = "POST_ID") Long id; String title; String description; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "MEMBER_ID") Member member; } Could not write JSON: Infinite recursion (StackOverflowError); 제 생각에는 한쪽에서 다른쪽 테이블을 조회 시 순환참조가 일어나는것 같다고 생각하는데 이러한 경우에는 어떻게 처리를 하여야 하는지 궁금합니다. 찾아보니 @JsonIgnore를 사용하는 방법이 있는것 같기는한데 올바른 방법이 아닌것 같아서 여쭈어봅니다. 좋은강의 감사합니다!
Member란 엔터티에 컬럼 a, b, c, d가 있습니다 selectA 는 a,b 를 보여주고 selectB 는 b, a를 불러주고 selectC는 a,b,c를 불러온다고 가정하였을 때 1. select A, B, C 에 대해서 다 DTO객체를 만들어주는 것이 괜찮을까요? 2. select A, B는 컬럼 순서만 다를뿐인데 하나의 DTO로 리턴해줄 때 순서를 바꿔줄 수 있나요? 3. 아님 a, b, c를 포함한 DTO를 만들어서 사용하는것이 나을까요? 이렇게하면 라턴해줄 때 null값( selectA를 호출한다면 필드c 가 null값) 생기어서요(프론트엔드 입장에서는 사용할 필드만 보고 싶어질수도 있을거같아서요