안녕하세요. 현재 공식 Querydsl이 활발히 관리되는 것 같지 않아 OpenFeign에서 포크한 6.x 버전을 사용해 진도를 따라가고 있습니다. 당장은 Jakarta/Hibernate 최신 버전과 지원 문제도 있는 것 같고, orderBy 관련 SQL/HQL 인젝션 계열 취약점이 있는것 같아서 5.x 버전을 쓰고 있는데요.(물론 order by 관련해서 사용자에게 입력 받는 상황은 정말 드문 케이스 같긴 하네요) 장기적으로는 포크 버전의 유지·보수나 향후 호환성 측면이 조금 걱정됩니다. 이 상태로 6.x 포크 버전을 계속 따라가도 괜찮을지, 아니면 안정적인 5.10 계열(공식 안정 버전)로 머무르거나 돌아가는 게 나을지 의견 부탁드립니다!
제가 개발 시작하는 신입사원인데 회사 앞으로 미래에 일하게 될 프로젝트 팀의 업무 내용을 어떤분께 들었는데 정부전자 프레임워크에서 스프링 레거시로 작업을 한다고 들었습니다. 혹시 이 강의를 공부하는 것으로 충분히 대비가 될지, 완강 후에 추가로 어떤 공부를 더 해야하면 좋을지 모르겠습니다.
interface에 default 메서드를 사용할 수 있음에 따라 추상 클래스와 동일한 용도로 사용될 수 있는 것처럼 보입니다. 업무 중에는 jdk 6 환경까지 컴파일되야 함을 감안하여 코드를 작성하다보니 해당 기능에 대해 아예 생각해본적이 없는데, 팩토리 강의를 듣던 중 default를 통해 interface가 추상 클래스처럼 사용되는걸 보니, jdk 8 이상의 환경, 특히 9에서는 private까지 지원되면 추상 클래스를 완전히 대체할 수 있는 것처럼 보입니다. default 기능을 제공하는 interface와 추상 클래스에 차이가 있는지, 현장에서 interface의 default 기능이 적극적으로 사용되는지, 추상 클래스는 더이상 필요없는 것인지요. 기존에 해당 기능을 설명하는 글귀만 봤을 때는 interface를 변경할 때 레거시 코드의 수정없이 변경할 수 있는, 편의성을 위한 기능이라고만 이해하고 넘어갔는데, 적극적으로 사용되는 기능인지 궁금하네요
안녕하세요 토비님. 강의에서 말씀하신 공부할 때는 AI 관련 도구를 끄고 지식을 습득 해야 한다는 부분이 인상 깊었습니다. 이전에도 공부와 실무 사이에는 늘 간극이 있었고, 이번 강의는 그 간극을 인지하고 실무적인 관점에서 방향을 잡을 수 있도록 도와주신다고 느꼈습니다. 그런데 요즘은 AI가 빠르게 보편화되면서, 공부와 실무의 관계가 또 다른 형태로 변화하고 있는 것 같습니다. 실제로 신규 업무나 개인 프로젝트에서 AI의 활용 방식과, 기존 시스템을 지속적으로 개선하거나 확장하는 과정에서의 AI의 활용 방식이 다르게 느껴집니다. 이런 변화 속에서 AI를 새로운 학습 형태이자, 학습과 실무를 잇는 새로운 도구로 봐야 할지, 아니면 보조적인 수단으로 바라봐야 할지 고민됩니다. 토비님은 실무에서 AI를 어떤 방식으로 활용하고 계신지, 그리고 이 시대의 개발자가 어떤 균형점을 가져야 한다고 보시는지 궁금합니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요! 개인적으로 설계하다가 궁금한 점이 있어 질문드립니다. 외래키 사용으로 데이터 정합성을 지킨다는 전제는 이해했으나, 현재 다니고 있는 회사에서 외래키 사용으로 인하여 쿼리복잡성과 성능이슈로 인하여 사용하지 않고, FK를 걸지않고 seq를 테이블에 넣는식으로 작업하고있습니다. 개인적인 의견으로는 정합성을 지켜야 한다고 생각해 외래키를 적용하는게 맞다고 생각하는데, 영한님의 의견이 궁금합니다!
안녕하세요, 강사님. 강의를 들으면서 데이터베이스 설계와 모델링의 중요성을 많이 느끼고 있습니다. 문득 ‘데이터베이스 설계를 잘한다’ 혹은 ‘데이터 모델링을 잘한다’는 게 어떤 의미인지 궁금해졌습니다. 설계 과정에는 개념적, 논리적, 물리적 모델링 등 여러 단계가 있고, 각 단계마다 좋은 설계의 기준이 조금씩 다를 것 같은데요. 실무에서는 이런 기준을 어떤 방식으로 판단하시나요? 만약 같은 요구사항을 모델링했을 때 한쪽은 유지보수성이 높고 다른 쪽은 성능이 좋은 경우, 어떤 관점에서 우선순위를 정하시는지도 궁금합니다. 좋은 강의 제작해주셔서 감사합니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 상관 서브쿼리와 성능 설명해 주실때 데이터베이스 옵티마이저가 JOIN을 더 효율적으로 처리하는 경우가 많다고 하셨는데, 혹시 관련 자료를 찾아 학습할 수 있는 곳이 있을까요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. Q. 수업에서 사용되는 MySQL Workbench가 실무에서도 사용될만한 지 혹은 실무에서 사용하는 데이터베이스와 비슷한 수준인지, 아니면 단순 수업용이라고 보는 게 맞을지 궁금합니다! 항상 스승님의 강의가 실전에서 사용할 수 있게 바로 알려주셔서 너무 감사히 잘 듣고 있습니다! 일반적으로도 DB 강의에는 Workbench를 사용하는 것 같던데, 이러한 이유가 무료라서 가벼워서 실무 제품과 유사해서 중에 어떤 것인지 갑자기 궁금해져서 질문을 드려보게 되었습니다!!
[1.5탄] 옆집 개발자와 같이 진짜 이해하며 만들어보는 첫 Spring Boot 프로젝트
안녕하세요, 이번 강의를 듣다가 문득 궁금한 점이 생겨서 질문 드립니다. 강의에서 @RequestMapping(method = RequestMethod.GET)을 @GetMapping으로 축약할 수 있다고 배웠습니다. 그런데 이런 축약 어노테이션들이 단순히 가독성만을 위한 것인가요? 아니면 성능상의 차이도 있나요? 왜 굳이 이렇게 나뉘어져서 존재하는지 궁금합니다.
안녕하세요, 토비님. 좋은 강의 항상 감사드립니다. Clock 관련해서 궁금한 점이 있어 질문드립니다. 스프링에서 빈은 기본적으로 싱글톤으로 관리된다고 알고 있습니다. 그런데 만약 Clock을 빈으로 등록하고 Clock.fixed... 로 고정된 시계를 만든다면, 여러 스레드가 동일한 Clock 인스턴스를 공유하게 될 텐데요. 이 경우 동시성 문제가 발생할 가능성은 없는지 궁금합니다.
안녕하세요, 좋은 강의 올려주셔서 감사합니다. Seperate Interface 패턴에 대해 궁금한 점이 있어 질문드립니다. "오브젝트와 의존관계" 세션의 마지막 강의에서, DIP를 적용하기 위해 payment 패키지에 ExRateProvider 인터페이스를 두고, 해당 인터페이스를 exrate 패키지에서 구현한다고 알려주셨습니다. 저도 직접 코드를 따라서 작성해보니 훨씬 깔끔하다는 느낌이 들었는데요. 그런데 사실 제가 실무에서 개발을 하면서 저런 구조를 경험해보지 못했습니다. 저는 Spring MVC를 사용하는데, 흔히 사용하는 controller-service-repository 패키지 구조에서 repository 패키지 아래에 인터페이스를 만들어서 그대로 쓰거나(JpaRepository) 필요하면 구현체를 만들어서 쓰는 방식으로 개발을 해왔습니다. 그래서 다음 2가지가 궁금한데요. 1) Spring MVC를 사용하는 경우에도 알려주신 Separate Interface 패턴을 적용할 수 있나요? 아니면 프로젝트의 설계 자체가 달라져야 하는 것인가요? 2) 실무에서도 Seperate Interface 패턴을 많이 적용하고 있나요? 스프링을 더 잘 이해하고 코드를 더 잘 작성하고 싶었는데, 강의 들으면서 많이 배우고 있습니다. 감사합니다.
5년차 백엔드 개발자 이며 현재 섹션5. 헥사고날 아키텍처의 사실과 오해를 학습하고 있습니다. 현업에서 신규 프로젝트를 준비 하면서 어떤 아키텍처를 가져가는 것이 좋을지 고민중에 강의를 접하게 되었습니다. 부동산 관련 데이터를 기반으로 한 서비스를 개발 및 설계 단계에 있습니다. 제가 전부 리드하는 것은 아니지만 프로젝트 전반적인 부분을 개발 리드분에게 권한을 받고 저와 팀원 둘이서 백엔드 구조를 설계 하고 있습니다. 수천만건 그 이상이 될 수 있는 데이터를 기반으로한 서비스를 계획 및 설계하고 있는데, 자바 스프링으로 서버를 구축 하려고 하는데 헥사고날 아키텍처를 저와 팀원은 경험 하지 못하였는데, 확장성 있는 서비스를 만들기 위해 헥사고날 아키텍처 기반으로 어떤 구조 설계를 하는 것이 좋을지 ,,, 조언 부탁드립니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요! 최근 프로젝트를 진행하며 코드 구조를 정리하는 과정에서 궁금한 점이 생겨 질문드립니다. 현재 상황 PostStrategy 인터페이스를 만들고 3개의 구현체를 두어, 홈 피드에 게시글을 조회하는 전략을 분리했습니다. 인터페이스에는 homePosts() 관련 메서드가 여러 버전으로 존재합니다. ( homePosts , homePostsV2 , homePostsV3 등) public interface PostStrategy { boolean isExecutable(UserContext userContext); boolean requiresAuthentication(); PostSummaryResponse homePosts(int size, Long cursorPostId, String username); PostSummaryResponse homePostsV2(int size, Long cursorPostId, String username); PostSummaryResponse homePostsV3(int size, Long cursorPostId, UserContext userContext); ... } 문제 상황 구현체 중 ForYouPostStrategy 만 V2와 V3를 실제로 사용하고 있고, 나머지 구현체에서는 homePosts() 만 호출하는 식으로 처리하고 있습니다. 처음엔 단순했는데 버전이 늘어나면서 인터페이스가 점점 커지고 불필요한 코드가 많이 생긴 상황입니다. 궁금한 점 PostStrategy 인터페이스에 default 메서드를 정의해 공통 로직을 담고, 특정 전략에서만 필요한 부분을 오버라이드하는 방식으로 해도 괜찮을지 궁금합니다. 또는 인터페이스가 아닌 다른 방식으로 리팩토링하는 것이 더 적절할지 궁금합니다.
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요. Inner Join 시 ON의 조건을 선언하는 부분에서, FROM 절에 있는 테이블을 먼저 작성하고, 이후 Join 절에 있는 테이블을 작성한 것을 보았습니다. ex. select u.address from orders o join users u on o.user_id = u.user_id where o.order_id = 1 ; 여기서 u.user_id = o.user_id 라고 작성해도 동일한 결과를 반환하는데, o.user_id = u.user_id 형태로 쓴 것은 가독성을 높이기 위함인가요? 아니면 성능상의 이슈가 있는 건가요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요! 현재 Stream API Collector 65강까지 수강 완료한 수강생입니다. 먼저 강사님 덕분에 자바에 대해서 계속 공부하는 시간이 정말 즐겁니다! 감사합니다! 아래와 같은 질문 사항이 있어 남깁니다! 실무에서 Collector 를 직접 구현해야 하는 상황은 어떤 경우가 많나요? 직접 Collector 를 구현해야 하는 상황이 생긴다면 병렬 스트림에서도 안전하게 동작하도록 어떤 설계 포인트를 가장 중요하게 봐야 할까요? 다소 정답이 없는 질문이지만 방향성과 강사님의 생각이 궁금합니다! 😃 감사합니다.