59,400원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결Java/Spring 주니어 개발자를 위한 오답노트
변하는 값을 추상화 시켜라
안녕하세요 강의 잘 보고 있습니다.다름이 아니라 5분 48초에 나오는 부분에서 DIP 원칙으로 설계 하셨는데..그럼 결국에 프로덕션에서는 getMils() 메서드를 사용하면 똑같이 내부적으로 의존성이 감춰지기 때문에 초반에 설명하신거하고 똑같은 상황이 되는게 아닌가요?? 감사합니다!
- 미해결Java/Spring 주니어 개발자를 위한 오답노트
외래키를 지양하라는 질문에 대한 궁금증
외래키 사용을 지양하라는 내용이 있어서 링크된 글을 읽어봤는데 궁금증이 있습니다. 외래키를 지양한다면 PK 값을 다른 테이블에 넣으면서 그 값으로 조인을 사용하는건가요?외래키를 지양했을 때 성능상의 이점은 알겠는데 결국 데이터 정합성 부분에서 문제가 발생합니다. RDB에서 데이터 정합성이 깨지면 사용하는 의미가 없다고 하는데 이부분에선 어떻게 생각하시나요?외래키를 안쓸경우 JPA에서 ManyToOne같은 메소드도 사용하지 않는건가요?그리고 해당 주장에 대해 반박하는 아래의 링크도 있는데 이 의견은 어떠신가요?https://gdsc-university-of-seoul.github.io/foreign-key/
- 미해결Java/Spring 주니어 개발자를 위한 오답노트
안녕하세요 아랫분 질문에 서 궁금한점이 있어서 질문드립니다
교정하면 Service Class에서 Repository를 이용해서 Member를 가져옵니다. Repository는 MemberEntity를 Member로 변환한 도메인 모델을 반환해야 합니다. 서비스는 MemberEntity를 알지 못해야 합니다. 이렇게 말씀해주셨는데 1 .이렇게 분리하는 이유는 서로의 결합을 낮추기 위해서인가요? 이렇게 분리를하면 어쩔수없이 서비스 메서드 안에도메인클래스로 변환하는 로직이들어가 오히려 코드가 길어져서가독성을 해치지는않나요?현재 저는 서비스에서 레파지토리에서 엔티티를 가져온후dto 객체로 변환시켜서 (바로 변환을 시키거나 어셈블리라는 클래스를 만들어 여기서 변환 작업을 따로해주는 객체를 만들거나)컨트롤러로 넘겨줍니다. 보편적으로 이방식을 많이했는대따로 도메인 클래스를 생성해서 변환해서 비즈니스로직을 처리하고 dto 객체로 넘겨서 컨트롤러로 전달하는지 왜? 이런건지좀더 자세히 설명해주시면감사하겟습니다 ( 제가 수업을 좀더 열심히듣지않아 질문이 무례한게있음 용서해주세요 ㅠ ㅠ)
- 미해결Java/Spring 주니어 개발자를 위한 오답노트
@Entity != RDB Table에 대한 질문입니다.
예전에 조영호님의 '오브젝트' 서적을 읽고 "어떻게 비즈니스 모델을 더 변경에 부드럽게 설계할 수 있을까?"에 고민을 했습니다. 그때의 기억으로는 "역할은 책임을 위한 최소한의 정보만 가지고 있자"라고 제가 이해를 했고 @Entity가 달린 class를 "역할"로 보고 코드 작성을 하니 1개의 RDB Table이 2개 이상의 Entity Class로 매핑이 되었습니다.평소에 1개 Entity Class가 1개 Table와 매핑하는 것과 달라 괴리감이 들었습니다. 핵사고날 아키텍쳐를 적용하면 비즈니스 모델과 JPA의 Entity를 분리할 수 있지만 팀원들과의 합의도 필요해서 적용할 수 없었고 주니어라 해당 기술 도입으로 생산성이 올라갈 것이라고 장담할 수도 없었습니다. 두서가 없이 말이 많았는데 궁금한 점은!"RDB의 1개 Table을 2개 이상의 Entity로 매핑해서 운영을 하는게 보편적인 방식인가요?" 입니다. ++ 개인적인 질문입니다만 객체의 협력 관계를 먼저 설계하는 것과 DB 설계하는 것 어떤 것이 우선인가요?
- 미해결Java/Spring 주니어 개발자를 위한 오답노트
의존성조언에서 UserService의 login은 Clock에 의존하는지 모르지 않나요?
의존성 조언 두번째 방법에서 문제점이 UserService.login은 여전히 의존성이 감춰져있다. 위와 마찬가지로 Userservice.login을 테스트할 때 clock에 의존하고 있는지 알 수 없다. 이거였는데 세번 째 방법도 UserService를 사용하는 메서드는 login(user)만 남겨서 user가 Clock에 의존하는지 모르지 않나요?아까 맥도날드 예제에서는 인터페이스를 사용하면 일을 시킨다고 설명하셨는데 이것도 인터페이스를 사용해서 일을 시키는거니 이렇게 구현하면 내부에서 clockHolder를 사용해도 외부에서 몰라도 되나요?
- 해결됨Java/Spring 주니어 개발자를 위한 오답노트
MySQL 사용에 대한 조언 질문있습니다.
안녕하세요주니어 개발자 길라잡이가 되주셔서 감사합니다. fulltext index에 대해서 질문이 있습니다.임계점이 올경우 튜닝으로도 해결할 수 없는 문제라고 말씀해주셨는데요경험담이라고 해주셨는데 그 경험담을 듣고 싶어서 질문을 남겨봅니다.공식 문서에서 찾아보니까 https://dev.mysql.com/doc/refman/8.0/en/innodb-fulltext-index.html#innodb-fulltext-index-deletion동시 경합이 발생할 수 있다고 작성이 되어있는데이 문제로 발생한건가요 ?아니면 다른 인덱스와 다르게 인덱스 용량 때문에 발생한 문제이신건가요 ? FULLTEXT INDEX의 한계 검색을 해도 다 좋은점만 나오더라구요..
- 해결됨Java/Spring 주니어 개발자를 위한 오답노트
강의와 크게 상관은 없지만 공부의 방향성에 대해서 질문합니다.
저는 올해 4월에 입사해서 이제 막 4개월차 주니어 개발자 입니다.퇴근 후에 공부를 하려고 하다가 매번 생각이 많아지는 주제인데요.저의 주요 업무는 전자정부프레임워크 기반의 jsp사이트를 ui유지보수하는 업무입니다.더 좋은 회사를 합격하지 못해서 아쉽긴하지만 그래도 신입받아주는 회사들이 많이 없어서 일단은 기분좋게 다니려고 하고 있습니다. 그런데 회사 업무를 하는 데 앞서서 공부를 하려고 하다보면 자꾸만 그런생각이 들더라구요. jsp/mybatis 를 이렇게 까지 공부해야하나? 전자정부프레임워크 어차피 다른 서비스 기업으로 이직하게 되면 안쓸텐데 굳이 이렇게 공부해야할까 하고요.그래서 회사기술스택에 맞춰서 해야할지 지금듣고 있는 김영한님 스프링강의를 들으면서 개인 포트폴리오를 보강하는 것이 나은지 둘다 하면 되지않냐고도 할수 있지만 그게 정말 맞는 방법인지 하는 의구심이 듭니다.최우선적으로 뭘 중점적으로 해야하는지 우선순위를 명확하게 알고싶습니다!!
- 미해결Java/Spring 주니어 개발자를 위한 오답노트
진짜 객체지향과 테스트하기 쉬운 코드를 위헤서는 jpa가 의미없는게 아닌가하는 생각이 들어요
이전에 혼자 ddd, 헥사고날 아키텍처를 공부하면서 느꼈던게객체지향적인 코드 + 테스트하기 용이한 코드를 작성하기 위해서는 결국 domain layer와 persistence layer의 분리가 필수적인데jpa entity와 domain entity를 완전히 분리했을 때 JPA가 mybatis나 jdbc template를 사용하는 것과 비교해 가지는 강점이 있는지 잘 모르겠습니다..그나마 jpa entity와 domain entity를 분리하지 않는다면 어떻게든 온몸 비틀기로 그나마 테스트하기 용이하고 객체지향스러운 코드를 작성해볼 수는 있지만 결국 복잡한 로직에서는 쿼리 때문에 문제가 생기고 ㅜ지식 공유자님께서는 이 문제에 대해 어떻게 생각하시나요?
- 해결됨Java/Spring 주니어 개발자를 위한 오답노트
c. Collection,Map 질문
Collection.Map의 Good 케이스를 알 수 있을까요?맵을 사용할 때 맵 안에 맵이 있고 이런 형태를 사용하지 않는게 좋은건지 아니면 따로 dto로 변환해서 사용해야하는건지 구분이 안 가서 질문 드립니다 ! 지정된 scope를 넘나들지 않는다는 것도 이해가 가지 않습니다 ㅠㅠ조금만 더 쉽게 설명 붙여주시면 감사드리겠습니다!
- 미해결Java/Spring 주니어 개발자를 위한 오답노트
fake Repository로 테스트를 진행하려고 합니다,
실제 유저 엔티티 가지고 userRepository를 해야하나요? 이것을 가지고 테스트를 해봤는데 id를 자동 매핑으로 해놔서 실제 fake로 테스트할때 id 값을 넣어줄 수가 없어서 구현에 어려움을 겪고 있습니다. 새로 Fake에 적용될 유저 도메인을 작성해야하나요?
- 해결됨Java/Spring 주니어 개발자를 위한 오답노트
DB 엔티티와 도메인 분리
어디까지 추상화 해야 하는가? 강의에서 2분 17초에toDomain()으로 바꿔서 반환을 했는데이렇게하면 JPA 엔티티가 아니라서 변경감지를 사용하지 못하는거 아닌가요? 이러한 방식으로 작성한다면 업데이트가 필요할 때는 어떤식으로 처리하나요?
- 미해결Java/Spring 주니어 개발자를 위한 오답노트
도메인 객체 질문
심폐소생술 PPT처럼Presentation, Business, Domain, Persistence로 나눈다고 하면 @Entity가 붙은 Class는 Persistence에 두고@Entity가 붙지 않은 Domain Class는 Domain에 둬서클래스를 2개를 만드는 건가요?예를 들어 아래 MemberEntity는 Persitence Package에 위치하고@Entity public class MemeberEntity { ... }public class MemberDomain { ..MemberDomain은 Domain Package에 위치하게 해서Service Class에서 Repository를 이용해서 MemberEntity를 가져온 다음에 MemberEntity를 MemberDomain으로 변환한 다음에 비즈니스 로직을 작성하면 되는건가요?
- 미해결Java/Spring 주니어 개발자를 위한 오답노트
Controller / application Service / Domain 의 역할 구분
안녕하세요 강의 잘 듣고 있습니다.헥사고날 아키텍쳐 부분 강의를 듣고, 궁금한 부분이 새겨서 질문 남깁니다!Application Service(이하 서비스) 에서 도메인부분을 분리 하여 객체의 상태 변화에 대한 부분을 처리하도록 하고, 서비스에선 Repository와 소통해서 필요한 객체나 컨트롤러에서 정보(예를 들어 수정 정보 등등) 등등을 얻어서 도메인 부분에 위임한다고 이해했습니다. 그렇게 도메인 영역을 분리하면 테스트에 용이하다는 것은 이해했습니다. 그런데 실제로 토이프로젝트에 적용해보려고 코드를 수정하는 중에 예를 들어 게시글을 수정하는 과정이라면 컨트롤러에서 처음 요청을 받을 때 postId, updateRequest를 받아서 서비스에 업데이트를 요청하고, 다시 서비스에선 아이디를 통해 Post를 찾고, PostDomainService(가칭)에 Post와서 updateRequest를 넘겨 수정한다면 거의 같은 내용의 파라미터를 굳이 2 계층을 건너 불필요한 위임이 반복 된다고 생각했습니다. 궁금한 것은 2가지 입니다.이런 경우엔 PostDomainService 클래스를 만들기보단 Post 객체 자체에서 업데이트를 처리하는 것이 맞을까요? - (1번 코드)도메인과 도메인 서비스의 차이는 객체의 상태(도메인)와 객체의 행동(도메인 서비스) 일까요? 엔티티와 도메인의 구분이 잘 이해가 되지 않습니다. //== 업데이트 로직 ==// public void updateInfo(PostUpdateReqDto updatePost) { this.title = updatePost.getTitle(); this.content = updatePost.getContent(); } // 기존 서비스에서의 로직 @Transactional public PostUpdateResDto updatePost(final Long postId, final PostUpdateReqDto postUpdateReqDto) { Post findPost = postRepository.findWithMemberByPostId(postId); Post updatedPost = postDomainService.updatePost(findPost, postUpdateReqDto); // 위 과정에 생기면 사라지는 메서드 // findPost.updateInfo(postUpdateReqDto); checkForbiddenWord(findPost); return new PostUpdateResDto(findPost); }
- 해결됨Java/Spring 주니어 개발자를 위한 오답노트
테스트 하기 쉬운 코드에서 테스트의 범위?
영상에서 종종 "테스트 하기 좋은 코드는 잘 설계된 코드일 것이다." 라는 말을 해주셨습니다. 어떤 테스트를 기준으로 테스트 하기 좋은 코드가 잘 설계된 코드일까요?- 예를 들어 단위 테스트, 통합 테스트, 인수 테스트가 존재한다 하면, 세가지 테스트 중 어떤 테스트를 테스트하기 편한 코드를 기준으로 잡는게 좋을까요?
- 해결됨Java/Spring 주니어 개발자를 위한 오답노트
스프링에서 서비스 레이어(Apllication Layer) 테스트에 대한 질문입니다.
제 개인 프로젝트를 진행하면서, 서비스 레이어에서는 단순히, 도메인 레이어에 존재하는 다른 객체들을 호출해서 비즈니스 로직을 처리하는 책임만을 담당하다보니, 서비스 레이어에 존재하는 객체를 테스트하는 코드를 작성하게 되면 대부분 테스트할 내용이, 메소드의 실행순서를 올바르게 실행해줬는가? 와 같은 부분만 테스트할게 없었는데 이 부분이 제가 잘못 설계한 부분이 아닌 오히려, 객체간의 책임을 잘 나누고 서비스 레이어의 책임에 맞게 코드를 작성한것 같다는 확신을 강의를 보고나서 알수 있었습니다 좋은 강의 감사합니다😊
- 미해결Java/Spring 주니어 개발자를 위한 오답노트
Repository 대신 Reader / Writer 사용 질문있습니다!!
안녕하세요.회사내에서 Reader, Writer 개념을 도입하여 사용하고 있습니다. 흐름은 아래와 같습니다controller -> service -> reader or writer -> repository제가 궁금한것은 JPA를 사용하고 있어 단건데이터 수정시 더티체킹을 하고 있는데요.writer내에서 더티체킹을 위한 엔티티를 조회하는거 조차 하면 안되는지 궁금합니다!안된다면 reader에서 엔티티를 조회하고 서비스로 반환한 다음 해당 엔티티를 writer로 넘겨줘야 하는지요..!!아 그리고 해당 강의가 지식공유자 답변 미제공 강의더라구요 ㅠㅠ 답변이 의무는 아니시지만 선생님의 지구 내핵 같은 깊은 배려심으로 답변을 해주시는거신지요.. 한줄기 빛 같은 강의(강의보다 시력 0.2 감소됨) 감사드립니다.
- 미해결Java/Spring 주니어 개발자를 위한 오답노트
ProductService부분에서 리팩토링 언급 질문
안녕하세요. 강의 너무 잘 듣고 있습니다.섹션2의 '스프링에서 OOP와 안티패턴 : Transactiojn script' 회차를 듣던 중 10분 42초 부분에서 ProductService 코드를 리팩토링하고 싶다고 말씀해주셨는데 어떤 부분에서 리팩토링 하고 싶으신건지 궁금합니다!! 제 부족한 지식으론 딱히 건드릴게 보이질 않아서요 ㅠㅠ※ 3년차 개발자이지만 회사 내 사수가 없어 좌절하고 있던 시기에 우근님의 강의를 듣는 순간 가뭄의 단비와 같으며 세상에서 가장 달콤한 술을 먹은 것 마냥 취하게 해주셔서 감사합니다..
- 해결됨Java/Spring 주니어 개발자를 위한 오답노트
IoC != DI에 대한 질문입니다.
안녕하세요,선생님 습하고 더운 여름 몸 건강히 계시길 바랍니다.강의를 듣는 도중 궁금한 부분이 생겼습니다.DIP와 IoC가 다르다고 말씀하신 부분이,DIP가 의존성 주입을 역전함으로써 제어의 흐름을 바꾸지만 IoC가 의존성을 주입해주는 것은 아니어서 그렇다고 이해되는데 제대로 이해한 게 맞을까요? ㅜㅜ 또, Open-Closed 법칙을 설명해주시는 1:32초 부분에 수정에는 열려있어야 한다는 말씀을 하셨는데수정 시 많은 메소드 혹은 클래스를 수정해야 하는 경우가 수정에 열려있는 것이 아닌지요 ㅜㅜ...제가 잘 모르다보니 헷갈려서 질문드립니다!
- 미해결Java/Spring 주니어 개발자를 위한 오답노트
OOP 란 무엇인가요?
최근 OOP 란 무엇인가요?질문을 받았는대, 어버버한 경험이 있는대, 범위가 너무 광범위하여 답하기가 어렵습니다.
- 미해결Java/Spring 주니어 개발자를 위한 오답노트
verify, validate, check, is
안녕하세요!verify : 과정validate : 최종 결과check : 확인is : 존재 여부이렇게 생각하는데 다른 분들 의견 및 강사분 의견을 듣고싶습니다!