학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. [질문 내용] 회원 저장소를 갈아 끼울 수 있도록 설계할 때의 질문입니다. 예를들어 메모리 회원 저장소에서 회원 정보를 조회하기 위한 파라미터 값, db 회원 저장소에서 조회하기 위한 파라미터 값.. 등등 파라미터 값이 다른 경우에는 인터페이스 설계를 어떤 식으로 해야할까요? 실무에서는 외부 인터페이스 연동을 할 때나, db를 조회할 때나 파라미터 값이 그때그때 다 달랐던 것 같아서요. 그렇다면 저장소를 갈아 끼우더라도 각각 개발자가 넘겨줘야할 파라미터 값은 결국 변동될 수 밖에 없는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] ControllerV4를 설명해주시는 과정에서 MemberSaveControllerV4의 반환값이 "save-result"으로 save.jsp의 상대경로인 save와 다른 것 같습니다. 코드 동작에는 문제가 없어보였는데 이런식으로 컨트롤러에서 반환하는 jsp 이름과 실제 jsp의 상대경로가 일부만 같다면 상관없나요?
안녕하세요 딩코님! 좋은 강의 잘 들었습니다. 강의를 듣다가 조언을 구하고 싶은게 있어서 질문 남깁니다. 저는 현재 주니어 개발자로 일으나 부하테스트 같은것을 회사에서 해볼 수 없는 상황이라(운영 인력이 아님...또한 작은 시스템이라 모니터링도 없고 구축할수도 없는 환경)강의에서 다뤄주신 내용을 실무에 적용해보기가 어려운데요... 그래서 제가 생각해본게 테스트 코드로 만들어서 돌려보면 어떨까 생각했거든요. 예를들어 아래와 같은 메소드를 만들어 놓고, 캐시 전/후를 비교하는 거죠... long start = System.currentTimeMillis(); service.findSomething(id); long elapsed = System.currentTimeMillis() - start; System.out.println(elapsed); 그런데 한가지 고민되는 포인트가, 테스트 코드로 만들어서 돌렸을때 성능 개선을 수치적으로 적기가 좀 애매할것 같다고 생각이 들어서요. 아무래도 JVM이라던지, warmup이라던지 통제할 수 없는 변수가 있다보니까요. 그래서 질문은 아래와 같습니다. 특정 메소드에 로컬 캐시를 적용하기 전/후 테스트 코드에서 성능을 비교 했을때, 1초->1ms로 성능 개선했다. <- 이런 문장이 임팩트가 있을까요? 아님 테스트 코드에서 한건 좀 신뢰성이 떨어질까요? ㅠㅠ 테스트 코드에서 돌려봤을때 누가봐도 신뢰성있게 만들려면 어떻게(?), 무슨 툴(?)을 써서 하는게 좋을까요? ㅠㅠ 저 같이 운영 환경에 적용해볼수 없는 개발자에게 조언을 주시면 또 감사하겠습니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 빈 스코프 섹션은 아무리 다시 듣고, 강의 자료를 보아도 개념 자체가 잘 이해가 안됩니다. 스프링을 활용한 프로젝트에서 반드시 알아야 할 주제인가요? 이해가 부족하면 프로젝트 진행에 문제가 많이 될까요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 궁금증이 생겨서 질문을 드립니다. 현재 듣고 있는 "트랜잭션 -개념 이해" 에서 격리수준에 대해서 설명할때 일반적으로 "READ COMMITTED"을 사용하고 이것에 대해서 설명한다고 했습니다. "db - 기본 -11번 트랙잭션" 편에서 격리 수준을 설명 할때, 사진을 보면 이렇게 격리 수준이 "REPEATABLE READ"로 바뀌어져 있는데요. 그래서 궁금증은 지금 백엔드 개발을 한다면, "REPEATABLE READ" 이게 맞는 건가요? 아니면 "READ COMMITTED" 이게 맞는 건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 개발자의 꿈을 접고 살아가던 사람입니다. 월드컵 시즌을 만나 영한님의 치킨 디도스 이벤트와 무상태 프로토콜 강의 내용이 떠올라 뜬금없이 취미로 주문 기능 구현 포트폴리오를 만들던 중 일상에서 경험한 것들을 통해 개인정보 유출에도 대응 가능하려면 어떻게 해야하는지.. 소비자가 트라우마를 경험하거나 여러 고충에 대응할 수 있는 방법을 쥐어짜다보니 영한님 강의를 쪽쪽 뽑아먹고 있는데요.. 부족하지만 직접 성의를 담아 만들어보겠습니다. 약속한게 있어서요.. 항상 좋은 강의 감사합니다.
안녕하세요 강의 내용에서 김영한님이 "지연 로딩과 다르게 강의의 코드는 자바가 실행될 때 객체를 미리 만들어 생성해두는 가장 단순하고 안전한 방법이다. 인스턴스가 너무 메모리를 잡아먹는게 아니면 로딩할 때 만드는 이 방법이 제일 안전하고 간편하다. getInstance 할 때 없으면 만들고 있으면 그걸 쓰는 지연 로딩 방식은 다르다. "라고 하셨습니다. public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance() { return instance; } private SingletonService() { System.out.println("SingletonService 생성자 호출됨"); } public void logic() { System.out.println("싱글톤 객체 로직 호출"); } } 그래서 생성자 함수에도 출력이 되게 하고 자바 main함수에서 그냥 자바 실행시켜 봤는데, 생성자 호출이 안 되더라고요. getInstance를 부르면 생성자 호출이 출력되고요. 자바가 뜰 때(JVM이 실행될 때) SingletonService 클래스와 static변수인 instance는 메모리의 static영역에, instance에 할당되는 실제 SingletonService인스턴스는 힙 영역에 바로 다 생기는 게 맞나요? 강의에서 말씀하신 지연 로딩이랑 다르면 이렇게 되어야한다고 이해했습니다. 그렇다면 왜 제가 만든 private 생성자 함수 속 출력문은 getInstance 코드 없이 자바가 실행될 때 나오지 않았나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예 [질문 내용] 이클립스 사용 중인데 해당 프로젝트 import가 정상적으로 안 되는 것 같습니다. 패키지 생성이 안됩니다.
[강의] 간단한 주문 조회 V1 : 엔티티를 직접 노출 [시간] 8분 25초 [질문 내용] 양방향 연관관계로 인한 무한 루프 문제까지는 발생하였고, @JsonIgnore로 해결하였습니다. 그런데 강의 내에서 지연 로딩으로 인해 발생하는 "Internal Server Error"가 발생하지 않고 아래 사진과 같이 200 OK가 뜨면서 조회 결과가 나옵니다 ㅜㅜ 강의와 같은 에러가 발생하지 않는 이유를 모르겠습니다...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. mvc 패턴 - 적용 강의에서 memberSave를 만드실때 마지막에 forward를 사용하셨는데 회원 가입을 할때는 redirect를 써야 하는 걸로 알고 있는데 forward를 사용한 이유가 무엇인지 궁금합니다. 회원 가입을 하면 302 redirect를 해야하는데 forward가 코드에 나와서 여쭙습니다. 그리고 forward를 사용했는데 어떻게 members/save로 바뀌게 되는건지 잘 이해가 안되고 있습니다.
형 질문있어. 페이징 기반 ItemReader 에서는 예제와 같이 ORDER BY 를 추가해야 한다. ORDER BY 가 없으면 매 페이지를 읽을 때마다 데이터의 순서가 보장되지 않아 일부 데이터가 누락되거나 중복될 수 있다. 라고 했잖아. 이 말은 곧 " JpaCursorItemReader 는 ORDER BY를 추가하지 않아도 괜찮다"로 들리는데 맞아? GPT는 아니라고 하거든. cursor 기반도 마찬가지로 ORDER BY가 없으면 재실행마다 DB에 정렬 순서를 위임하는데, DB는 쿼리 플랜이 변경되는 등 여러 원인들에 의해 실행마다 달라질 수 있대. 뭐가 맞아?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 08:40 쯤에 public void changeTeam(Team team) { this.team = team; team.getMembers().add(this); } 이 부분에서, 내 팀을 변경해주고 변경할 팀에 해당 member를 넣어주는데 팀만 변경해 주면 되지 않나요? 따로 해당 team의 .getMember에 해당 멤버를 넣어주는 이유가 무엇인지 궁금합니다. 저장하기 전 까지는 해당 영속성에서는 이전 team에 할당이 되어 있어 수동으로 바꿔주는 것 인가요?