묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
외부 API의 ID 타입(String/UUID)과 내부 도메인의 ID 타입(Long)이 불일치할 때의 설계 정석
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요, 강사님! 강의를 듣다가 리포지토리 추상화와 관련하여 실무적인 고민이 생겨 질문드립니다. ( java 학습 전에 안드로이드 kotlin 개발 중에 겪었던 문제)현재 인터페이스를 통해 리포지토리를 추상화하고, 향후 데이터 저장소가 바뀌어도 MemberService 등 비즈니스 로직을 보호하는 설계를 공부하고 있습니다. 그런데 만약 외부 시스템이나 DB의 ID 규격이 바뀌어 데이터 타입 자체가 달라지는 경우에는 어떻게 대처하는 것이 정석인지 궁금합니다.1. 타입 불일치 및 형변환의 한계 예를 들어, 현재 우리 시스템의 도메인(Member) ID는 Long인데, 나중에 도입할 외부 API의 ID가 2131293e-r1232... 같은 UUID(String) 형태라면, 물리적으로 Long으로의 형변환 자체가 불가능합니다.2. 이 경우 어떤 방식이 가장 권장되는 '정석'인가요?방안 A: 도메인 모델은 우리 시스템의 기준(Long)을 유지하고, 리포지토리 구현체 내부에서 외부 ID(String)를 별도의 필드에 매핑(저장)하며 우리만의 PK를 새로 생성한다.방안 B: 인터페이스와 도메인의 ID 타입을 처음부터 가장 범용적인 String으로 변경하여 외부 규격에 맞춘다.방안 C: 기타 실무에서 주로 사용하는 별도의 전략이 있는지 궁금합니다.3. 고민의 요지 구현체 내부에서 '임의로 타입을 가공하거나 재조립'해서 서비스에 넘겨주는 것이 도메인의 순수성을 지키는 올바른 방향인지, 아니면 애초에 이런 타입 변경의 가능성까지 고려하여 인터페이스를 더 유연하게(예: Generic 사용 등) 설계해야 하는 것인지 강사님의 실무 노하우를 듣고 싶습니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
단위/통합 테스트 버전충돌 문제
취준생으로서 아주 유용하게 강의를 듣고있습니다. 그런데 테스트코드를 실행할 때 현재상황에서 기본설정된 junit6이 지원되지않는 상황이고 build.gradle 의존성에서 junit5로 지정변경하고 테스트 케이스를 작성하고 실행할때 junit5와 6이 버전충돌해서 테스트코드가 실행이 안됩니다. 어떻게 해결해야 할까요?
-
해결됨앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
앱 제작 시 주로 코드로 작성하시는 이유가 있을까요?
안녕하세요, 해당 강의 18:00분 경에 앨런님께서 말씀하신 '앱을 만들 때 주로 코드로 만든다'라는 말씀에 궁금증이 들어 질문 남깁니다.UIKit을 통해 앱을 제작하실 때, 스토리보드 대신 주로 이전 강의 섹션과 같이 주로 코드를 이용해 UI를 구성한다는 말씀이신가요?스토리보드와 코드 둘 다 짧게나마 겪어본 제 입장에서는, 세그웨이를 수행하는 것 제외 스토리보드가 더욱 많은 이점이 느껴져서요.대표적으로는 VC에 UI 관련한 코드가 없어 더욱 VC가 본인의 책임에 집중하게 된다는 생각도 들고, 코드로 UI를 짜다 보면 하나 둘 빼먹게 될 확률도 높아지는 것 같아서요(스토리보드에서는 이를 바로 에러로 잡아주지만, 코드는 잡아주지 않기도 하구요)어떤 부분에 의해, 주로 코드로 UI를 구성하는 것을 선호하는지가 궁금합니다!
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
SQL 중심적 개발의 문제점에 대한 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 선생님 SQL 중심적 개발의 문제점에 대해 궁금증이 많아 글 남겨 봅니다. 선생님의 강의를 들으면서 결국 애플리케이션의 핵심 역할은 DB라는 종착지에 가기 전 데이터를 정제하고 그 정합성을 책임지는 것이라고 생각합니다. 애플리케이션이 이 책임을 다하려면, 데이터를 담는 DB설계에 끌려다는 것이 아닌 데이터를 가공하는 주체인 객체지향 설계가 우선되야 한다고 생각이 듭니다. 하지만 현실에서는 여전히 DB무결성을 이유로 DB설계를 최우선되고 객체는 그저 데이터의 운반책으로 쓰는 경우가 많았는데, 데이터 정합성의 책임을 다하기 위해 객체지향 설계가 DB설계보다 앞서야 한다는 제 생각이 맞는지 , 혹시 이런 관점이 실무에서 DB 무결성을 놓치는 위험한 발상은 아닌지 시니어 개발자이신 선생님의 고견을 듣고 싶습니다.
-
미해결처음하는 파이썬 백엔드 FastAPI 입문 (FastAPI부터 비동기 SQLAlchemy까지) [풀스택 Part1-2]
동기와 비동기 엔진 부분에 대해서 궁금해서 문의드립니다.
실제 현업에서는 동기 엔진 모듈과 비동기 엔진 모듈 두개를 만들어두고, 상황에 따른 api를 정의 후 호출해서 사용되는지 궁금합니다.
-
해결됨앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
델리게이트 패턴 관련 질문
영상 초반부(00:30 - 04:00)에 대한 의문점이 생겨 질문 남깁니다!텍스트필드의 경우 VC(뷰컨트롤러)와 '완전히 분리된 객체'이며 유저와 직접적인 커뮤니케이션을 하고, 버튼의 경우 VC와 '직접적인 커뮤니케이션을 한다' 라고 하셨는데, 이 부분에서 살짝 의문이 듭니다.텍스트필드와 버튼의 차이가 동작의 형태나 이벤트 흐름의 복잡성에서 발생한다는 점에는 공감하지만, 버튼 역시 UITextField와 마찬가지로 VC와는 별도의 객체로 존재하고, 이벤트 발생 시 target–action 메커니즘을 통해 결과를 VC로 전달하는 구조로 이해하고 있습니다.이런 관점에서 봤을 때, “버튼은 VC와 직접 커뮤니케이션한다”는 표현이 개념적으로 어떤 의미를 가지는지 조금 더 설명을 부탁드려도 될까요?
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
혹시 Containing 을 안쓰신 이유가 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.이Like 검색에서 그냥 where like '%ㅁ%' 이렇게 앞뒤 같이 체크하는거면 그냥 Like 보다는 findByItemNameContaining 이렇게 Containing 을 쓰는게 더 맞을 거같은데 혹시 이걸 안쓰고 like 를 쓴 이유가 별도로 있을까요?!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
타임리프 3.X 버전 rendering, serializer 에러 해결 방법
질문은 아니지만, 타임리프 3.X 버전에서 발생하는 에러가 있어 공유 목적으로 글을 작성하였습니다.An error happened during template renderingcannot access a member of class hello.thymeleafbasic.basic.BasicController$User 타임리프 공식문서에 3.X 버전 부터 표현식에서 클래스 사용에 대한 더욱 엄격한 제한이 생겼다고 기재되었습니다. 따라서 기존 BasicController에서 User 클래스 코드 부분을 아래와 같이 변경하면 문제가 해결되는것으로 보입니다. // 접근 권한을 public으로 변경 @Data public static class User { private String username; private int age; public User(String username, int age) { this.username = username; this.age = age; } } // 기존 @Data static class User { private String username; private int age; public User(String username, int age) { this.username = username; this.age = age; } } 공식문서:https://www.thymeleaf.org/doc/articles/thymeleaf31whatsnew.htmlTighter restrictions on the use of classes in expressions
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ
다 루트도 제대로 잡혀있는데 왜 저기서 MVC가 해결할 수 없다고 뜨는지 알 수 있을까요?!
-
미해결스프링 DB 2편 - 데이터 접근 활용 기술
[공유] 스프링부트 4.x 버전 mybatis 연동
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter여기 보시면 현재 기준 버전이 4.0.1 나왔습니다.build.gradle의 dependencies에 //MyBatis 스프링 부트 4.0.1 추가 implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:4.0.1'로 버전 수정하면 잘 됩니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
❗️springboot 4.0.2 버전 aspectj dependency 설정❗️
스프링 버전 4.0.2 기준 aspectj 라이브러리 dependency 설정은 다음과 같습니다. (gradle 기준) implementation 'org.springframework.boot:spring-boot-starter-aspectj'계속 boot-starter-aop로 빌드 시도했다가 삽질하면서 20분 날렸네요..
-
미해결[심화] 인디해커를 위한 루비온레일즈 8 완벽 강의
혹시 다음 강의 찍게되면 마우스좀 치워주세요
멈추고 타이핑 하는 구간에서마우스가 가려서 안보여요
-
미해결스프링 DB 1편 - 데이터 접근 핵심 원리
트랜잭션 템플릿이 체크예외는 커밋하는 이유가 궁금합니다.
체크 예외의 경우는 그냥 커밋한다고 하는데,혹시 그 이유가, 체크 예외는 어차피예외 처리가 강요 되는 예외라, 코드에서 외부적으로 try - catch 형태로 처리되는 부분이기 때문에, 굳이 트랜잭션 템플릿에서는 별도로 롤백처리를 안하는 걸까요? 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
pdf 오타 문의
중요한 것은 아닐 수도 있고, 영상에서도 해당 내용은 설명은 하시지 않고 넘어가셔서 정확하지 않을 순 있습니다. 그래서 문의드립니다.6. 로그인 처리1 - 쿠키, 세션 PDF5페이지도메인이 가장 중요하다. 도메인 = 화면, UI, 기술 인프라 등등의 영역은 제외한 시스템이 구현해야 하는 핵심 비즈니스 업무 영역을 말함'영역은 제외한 시스템이' 에서 영역'은'이 맞는 표현인가요 영역'을'이 맞는 표현인가요?'영역은' 이라고하면 제외한 시스템이 구현한다는 뜻으로 이해가 되는데 제외한 시스템이 무엇을 말하는지 잘모르겠고..'영역을'이라고 한다면 영역을 제외하고 시스템이 구현한다는 뜻으로 내용이 자연스레 이해가 되는데 영상에서 이 부분을 딱히 설명을 하시지 않으셔서 잘모르기에 문의드립니다.
-
해결됨앨런 iOS 앱 개발 (15개의 앱을 만들면서 근본원리부터 배우는 UIKit) - MVVM까지
수강 기간 연장 부탁드릴 수 있을까요?
구매 후에 늦게나마 시작해서 기간이 얼마 안남았네요ㅠ혹시 기간 연장이 가능할까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ItemUpdateForm 검증 관련 질문입니다.
1. 이 코드에서 결국 ItemUpdateForm 에 담기는 Long id 필드는 오로지 검증목적으로 사용하는 필드인거 같은데그러면 해당 DTO 용도가 "수정할 값"을 바인딩 하는 것 + 검증의 책임도 DTO에게 있다 라고 보면 될까요??2. update() 메서드에 검증한 DTO id를 꺼내서 사용하지 않고, @PathVariable을 사용하는 데 이유가 있는지 궁금합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
왜 컨트롤러는 변한게 없는데 새로 만든 html 파일이 뜨나요?
지난 강의에서 index.html을 만들고 이번에 hello-static.html을 만들어서 실행했는데 왜 새로 만들어진 html이 띄워지나요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
22page 링크 주소 변경
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]22page 내의 링크를 클릭하면 제대로 된 응답을 받지 못하고 다른 페이지로 변경되는 것을 확인했습니다. 네트워크 탭 확인해보았을때 정상 응답 받지 못하는 것 같네요. 기존 링크: https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#format변경된 링크: https://docs.spring.io/spring-framework/reference/core/validation/format.html
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
윈도우 build test오류 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]클린도 해보고 다시 시도해보아도 test때문에 실패 한다네요.. 왜이럴까요..??
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]실무에서 특정 데이터와 파일을 함께 DB 저장 시 파일 테이블의 구조를 아래 두가지 케이스중 어떤 케이스로 구성하는지 궁금합니다.(ex. A게시글과 A게시글에 대한 파일과 사진들 첨부 시)1) 파일 테이블(file_table)에 관련된 게시글의 타입(ref_type)과 id(ref_id) 컬럼을 만들어 저장하는 것.2) 게시글 테이블(board_table)에 관련된 파일 id(file_id) 컬럼을 만들어 저장하는 것.2개 이상의 파일 list를 저장하고 관리하기에는 1번 방법이 더 직관적인 것 같은데, 실제로는 2번과 같은 구조를 많이 본 것 같아서 질문 드립니다.실무에서는 보편적으로 어떤 구조를, 어떤 이유로 많이 사용할까요 ? 항상 감사합니다.