선생님 2가지 질문이 있습니다. 첫번째는 @JoinColumn 의 name 속성 사용방법에 대한 질문입니다. @JoinColumn 의 name 속성을 사용하는 방법이 여러가지가 있는거 같은데요. 1) 참조 하고자 하는 엔티티 클래스명 + _ + 엔티티 클래스 기본키 필드 이름 2) 참조 하고자 하는 엔티티 클래스의 필드명 + _ + 엔티티 클래스기본키 필드 이름 3) 현재 엔티티 클래스의 필드명 + _ + 참조하는 테이블의 기본키 컬럼명 수업중에 사용하신 코드에서 구체적예를 가져와봤습니다. 1 번 방법은 Order 엔티티에서 Member 엔티티를 매핑 한 부분에서 사용된 방법입니다. 처음에는 Order 엔티티에서 매핑하는 MEMBER_ID 가 매핑 하고자 하는 테이블의 컬럼명(Member 테이블의 MEMBER_ID 필드) 이라고 생각했지만, Member 엔티티의 @Column(name = "MEMBER_ID") 부분을 제거하고 코드를 동작해도 데이터 입력처리가 되기 때문에 테이블 컬럼명이 아니라고 생각했습니다. 2번 방법의 경우, Category 엔티티에서 셀프 매핑(parent)을 할 때 사용하는 경우 3번 방법은 기본값(name 을 입력하지 않은 경우) 이렇게 사용할 수 있는 거 같은데, 맞나요.? 두번째는 @JoinColumn의 referencedColumnName 에 사용처에 관한 내용입니다. 위에서 제가 언급한 name 속성을 사용하는 방법 중에서 1번, 2번 같이 엔티티 클래스 필드 이름을 사용하여 매핑하는 방법을 사용하면, 외래키가 참조하는 대상 테이블의 컬럼명이 다르다 하더라도 referecedColumnName 을 사용안하고 매핑할 수 있는 거 같은데 맞을까요.? 제가 생각하는 것이 맞다면, referencedColumnName 을 사용 할 일이 거의 없을 꺼 같은데 추가적인 사용처가 있을지 궁금합니다.
주문 수량이 재고를 넘어섰을 때,현재는 Error가 발생해서 whitelabel ErrorPage가 뜨는데요, 이 대신 MemberForm처럼 BindingResult를 걸어 hasError() -> 폼에 message를 표시해주는 것과 같은 기능을 넣고 싶은데, 혹시 어떻게 할 수 있을 지 힌트를 주실 수 있으실까요..?
하위 호환을 위해서 Pragma : no-cache 헤더를 추가하는 것은 이해가 되는데. no-cache, must-revalidate 는 왜 추가하는 것인지 이해가 되지 않습니다. 데이터가 이미 캐시가 되어 있는 경우 또는 새로운 데이터를 응답하는 경우 모두 캐시를 무효화 시키고 싶다면 서버에서 no-store 로도 응답하면 되는 것아닌가요?
안녕하세요 강사님 좋은 강의 감사합니다! 질문이 2가지가 있는데요. 1. 예를들어요청의 흐름이 다음과 같을 때 브라우저 -> Nginx -> Spring Request Header 의 Accept-Langauge 가 ko 로 옵니다. 그럼 서버에서는 1, 지원하는 language 가 뭔지 파악 2. accept-langauge 를 토대로 적절한 langague 로 본문을 응답 이런 로직이 있어야 하는데 해당 로직은 WAS 에 개발자가 직접 로직을 작성해야 하는 것 맞나요? 2. 아래 그림의 Quality 값은 브라우저가 자동으로 넣어주는 값인가요? 아니면 개발자가 서버에 요청시 세팅해주는 값인가요?
선생님 강의 정말 잘 듣고 있으며 좋은 자료 또한 제공해주셔서 피상적이었던 지식이 구체화 되는 작업에 정말 도움이 많이 되고 있습니다. 다름이 아니라 지속 연결에 대해서 한 가지 궁금한 점이 생겨서 이렇게 질문 남깁니다. http 의 방향이 stateful -> stateless 이렇게 진화한다고 저는 이해했습니다. 진화한 이유는 클라이언트와 서버간의 연결을 계속 지속한다면 자원의 고갈이 일어나기 때문이죠! 그렇다면 지속연결이 탄생한 배경은 stateless가 자원의 고갈은 방지하나 여려번의 3 way handshake가 비효율적이기 때문에 이를 방지하고자 여러번의 3 way handshake의 횟수를 줄이기 위해서 하나의 연결이 지속될때 어느정도 까지는 쭈욱 유지하자 라고 이해했습니다! "그렇다면 Persistant Connections가 언제까지 유지되어야하는 그러한 규약같은건 따로 없는지요?" "또한 Persistent Connections는 비연결성과 연결성의 중간 지점이라고 생각해도 되는지요?" 이 두가지가 강의 도중 궁금하여 질문 남깁니다~!! 고맙습니다!!!!
안녕하세요 강의 너무 잘 듣고 있습니다! 상태코드와 관련해서 이를 어떻게 설정하는지 이해가 잘 되지 않습니다.. 예를들어 303 코드를 지정하려면 특정 post요청이 올 경우 특정 get으로 보내주어야 하는데 이에 대한 설정들은 어떻게 이루어지나요? 응답에 Location 헤더가 존재할 경우 알아서 3XX을 반환하는건가요..? 이제껏 개발자가 직접 지정하는 영역이 아니라 브라우저가 알아서 판단 후 내보낸다고 생각했는데.. 예를들어 말씀하신 것처럼 302가 아닌 303으로 지정하려면 어디에 어떠한 설정을 해주어야 하는건지 질문드립니다. 항상 좋은 강의 감사합니다.
안녕하세요 강사님 스프링 부트 JPA 활용 부분에 설계부분을 보고 있는대요 Entity 맵핑에 사용하는 기본 값 타입이 갑자기 궁금해서 질문을 드리게 되었습니다. (여기에 질문을 남기는게 적절하다고 생각이 되었습니다^^) Entity Class를 생성하면 결국 DB에 테이블과 매칭이 되는데 이때 아래 2가지 타입 중에서 강사님이 사용하시는 방법이 궁금합니다. primitive 타입 @Column private long count; Wrapper 타입 @Column private Long count; 이 경우 신규로 테이블을 생성할 경우와 운영 중 테이블에 컬럼을 추가할 경우가 발생할 것 같은데요 강사님이 실무에 자주 사용하는 방법이 궁금하네요^^; 테이블에 not null 제약 조건이 걸리면 long을 사용해도 될 것 같은데 null 제약 조건이 없다면 long을 사용 시 문제가 발생할 것 같아서요 데이터가 어떤 값을 가져야 하는지 먼저 생각하는 게 가장 중요하다고 생각 되긴 하는데 강사님이 활용하시는 방법이 궁금해서 질문 드립니다. (어떻게 보면 너무 당연한 질문 같아서;; 괜히 질문 드렸나 하는 마음도 있네요;;) 관련해서 구글링을 해보았는데 저랑 비슷하게 생각하시는 글이 있어서 질문 드리게 되었습니다. https://chanwookpark.github.io/jpa/2016/10/13/jpa-note/#%EC%9E%90%EB%B0%94-%EA%B8%B0%EB%B3%B8-%ED%83%80%EC%9E%85-%EC%82%AC%EC%9A%A9-%EC%8B%9C-primitive-%ED%83%80%EC%9E%85%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%A0-%EA%B2%83%EC%9D%B8%EA%B0%80-wrapper-%ED%83%80%EC%9E%85%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%A0-%EA%B2%83%EC%9D%B8%EA%B0%80 감사합니다.
영속성 컨텍스트에 1번 thread에서 A object를 persist( ) 2번 thread에서 B object를 persist( ) 이런 상황에서 1번 thread에서 commit을 해버리면 영속성 컨텍스트에 있는 모든 값들이 DB에 반영되고 clear( ) 될텐데 이런 상황에서 컨텍스트에 있는 B object 도 같이 clear 되나요 ? 아니면 B object는 남아있나요?
안녕하세요 기선님 좋은 강의 감사합니다 :) 스피링 코어 모듈을 개발할 때, Commons Logging 을 사용하고 있었기 때문에, 현재까지도 Commons Logging 이 남아있다고 하셨는데 스프링 5 버전을 만들 때 JCL이란 모듈을 만들어 가며 Commons Logging 코드를 컴파일 타임에 Slf4j 로 바꾸는 이유가 궁금합니다. 짧은 생각으로는 그냥 commons logging 을 빼버리고 slf4j 를 넣었으면 되지 않았나 싶은데 .. 내부적으로 스프링코어의 코드가 commons logging 과 깊게 얽혀있어서 그것보다 JCL을 만드는게 더 비용이 적어서 였을까요??
안녕하세요, 강의 듣다 궁금증이 생겨 질문 남깁니다. 질문 1. domain == vo, repository == dao 이렇게 똑같이 봐도 괜찮은 건가요? 같은 것이라면 왜 vo, dao가 아닌 다른 이름을 사용한 것인지, 다른 것이라면 (vo, dao)와 (domain, repository)의 차이점에 대해서도 알려주시면 감사하겠습니다. 질문2. 강의자료에 나오는 Memberservice, MemberRepository, MemoryMemberRepository들의 클래스 의존관계 그림은.. 이번 예제의 상황을 고려하여 만들어진 그림인가요? 아니면 실제 업무에서도 저런식으로 구성된다고 보면 되나요? + 어떤 디비를 사용할지 모르기 때문에 인터페이스로 만들었다는 말이 잘 이해가 안 되는데.. 디비접근방식을 탑재하지 않은 인터페이스를 만들어놓고 사용할 디비에 따라서 implements해서 사용하겠다..는 말이 맞나요?
안녕하세요. 영한님, 항상 좋은 강의 감사드립니다. 한가지 궁금한 점이 생겼는데요. 만약 http 통신을 하는 상황에서, 로그인을 한 후에 set-cookie로 발급받은 sessionId를 해커에게 탈취당하면 해커는 해당 sessionID를 이용하여 제 아이디로 로그인이 가능한 상황이 되는 건가요??
굳이 Ajax로 인증을 해야되나 싶은 생각이 들었는데 아래 생각이 맞을까요? 프론트를 타임리프, jsp 등을 이용했을 때는 인증, 인가를 Form 형식으로 구현하고 프론트를 React, Vue 와 같은 웹 클라이언트로 구성했을 때는 인증, 인가를 Ajax 형식으로 구현해서 사용하는건가요?
안녕하세요 ㅎㅎ 강의를 보다가 또 다른 질문이 생겨서 이렇게 질문 남깁니다.ㅎㅎ 1. 유저A 가 유저 B의 order id를 요청하는 경우 URL-GET orders/2-(유저 B order id) 403,404? 어떤 상태 코드를 실무에서는 많이 쓰고 이유가 있을까요? 2. PRG POST /orders -주문 API 주문생성을 예로 들어 PRG를 중복 주문을 막기 위해 쓰신다고 하셨는데 혹시 그렇게 되면 주문생성 API 사용성이 떨어지는 문제는 없나요? 가령 모바일에서도 해당 API를 사용한다든지, 여러 클라이언트(모바일, 웹)등 에서 redirect 하려는 페이지가 다르다든지.. 차라리 서버에서 중복을 잘 막고 나머지는 클라이언트 처리하는 방식은 실무에서 자주 쓰는 방법은 아닌가요? 이번에도 좋은 강의 감사합니다. ㅎ
안녕하세요 강사님 강의를 보다가 tdd라는 명령어로 테스트 메서드를 생성하는 방법이 궁금해서 관련 가이드를 만들어 보았습니다. https://blog.naver.com/nateen7248/222184184776 혹시 궁금하신 분은 참고해 보시면 될 것 같아요 감사합니다.
.defaultSuccessUrl("/success", true) .failureUrl("/fail") 직접 따라해보다가 defaultSuccessUrl 메서드의 두번째 인자의 true를 꼭 넘겨줘야 login이 성공했을 때 /success url로 이동하는 것을 알게 되었는데요. .defaultSuccessUrl("/success")처럼 두번째 인자 없이 쓰는 경우는 어떤 경우인가요? .failureUrl은 왜 두번째 인자가 필요 없는건가요?