묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결예제로 배우는 스프링 입문 (개정판)
안녕하세요
스프링을 처음 접하는데 수준이 너무 높은것같은데 토비의 스프링이라도 읽으면서 정리하는게 좋을까요 아니면 그냥 수업을 들으면서 모르는걸 바로바로 찾아보면서 공부하는게 좋을까요p.s(로드맵 순서대로 배울 생각입니다)
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
인텔리제이 초록색 단축키 알리미 질문
안녕하세요 강의 듣고 따라해보고 있는 학생으로서 IDE에 대해 간단한 질문인데요..! 강의 중간에 보면 인텔리제이 하단에 초록색으로 어떤 단축키를 통해서 무엇을 할 수 있다고 뜨는 것 같은데 제 인텔리제이에서는 그게 안뜨더라구요. 혹시 어떻게 나올 수 있게할 수 있는지 여쭤봐도 될까요...? 강의 잘 듣고 있습니다!
-
미해결스프링 핵심 원리 - 기본편
AppConfig에서 생성자로 주입되는 원리
안녕하세요. 비전공자 백엔드 개발자 준비중입니다. 강사님 좋은 강의 덕분에 spring 공부에 큰 도움이 되고 있습니다. AppConfig에서 역할과 구현을 나누어 구현체를 쉽게 바꿀 수 있다는 원리는 이해하였습니다. 여기서 제가 궁금한게 어떻게 AppConfig에서 메소드를 만들어 구현체를 넣어주면 생성자를 통해 받을 수 있는지, 그 원리가 궁금합니다. 생성자에서 this.객체 = 객체 이런식으로 받는데, AppConfig에서 넣어준 값이 어떻게 해서 이런 원리로 주입이 되는건가요? 제가 생성자 개념이 부족해서 이해가 안되는 것 같기도 하네요... 그리고 Test에서는 AppConfig 인스턴스를 생성해서 넣어줬는데, 왜 실제로는 그렇게 해주지 않은건가요? 메모리 낭비 때문에 그런걸까요? 인스턴스 생성 해서 넣어주는 부분은 이해가 되는데, 생성자로 주입해주는 부분은 원리가 이해가 되질 않네요.
-
미해결스프링 핵심 원리 - 기본편
자동등록에서는 이 방법을 사용할 수 없나요?
@Component에서도 적용이 될까 싶어서 @Component(initMethod = "init", detroyMethod = "close") 를 해봤는데 컴파일 에러가 나네요. 이 방법은 수동 등록에서만 가능한 방법인건가요?
-
해결됨스프링 핵심 원리 - 기본편
안녕하세요!
안녕하세요~ 강의를 듣다가 궁금한 점이 생겨서 질문 남깁니다! @Bean의 initMethod, destroyMethod 속성을 사용하면 외부 라이브러리에도 초기화, 종료 메서드를 적용할 수 있다고 하셨는데 외부 라이브러리 코드를 고칠 수 없는 상황에서 어떤 의미로 적용이 가능한지 궁금해서 질문 드립니다!외부 라이브러리에 이미 구현되어있는 메소드를 초기화나 종료 시 구현해야하는 메소드로 지정해준다는 뜻인가요?? 답변 주시면 감사드립니다! 또, 항상 강의 너무 잘 보고있습니다! 좋은 강의 찍어주셔서 정말 감사드려요 :))
-
미해결스프링 핵심 원리 - 기본편
@Primary방법과 @Autowired 필드명 방법 간의 우선순위
안녕하십니까 강의 항상 감사드립니다. 다름이 아니오라 생성자 주입을 사용하는 경우에 생성자의 Parameter 명을 rateDiscountPolicy로 네이밍하였고 동시에 테스트를 위해 FixDiscountPolicy 클래스 정의 위에 @Primary를 작성하여 과연 '@Primary방법'과 '@Autowired 필드명 방법'이 동시에 사용되었을 떄 어떤것이 적용 되는지 확인을 해보았습니다. 그 결과로 아무리 생성자의 Parameter명을 'Spring Container의 Bean Naming'에 따라 네이밍 했다고 하더라도 @Primary 애노테이션이 기재된 타입이 우선순위로 책정되어 OrderServiceImpl은 RateDiscountPolicy가 아닌 FixDiscountPolicy에 의존하게 되더군요 제가 아직 단위 테스트 코드 작성에 단련되지 않은터라 제가 한 테스트 결과가 맞는 것인지 여쭙고자 질문 남기게 되었습니다. 답변 부탁드립니다. 항상 현업에 바쁘신 와중에도 늦은시각 까지 강의질문 답변에 신경써주셔서 감사합니다. ^^
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO class 선언 및 update 시 id 조회 질문
안녕하세요. 두 가지 질문이 있어 이렇게 질문을 적어봅니다. 1. inner class를 왜 static으로 선언하나요? private으로 하면 물론 코드가 돌아가는 방식은 다르지만, 잘 돌아가더라구요. 혹시 실무에 적용한다면 어떤 문제점이 있나요? (다음 강의에서는 아무 것도 붙이지 않은 상태로 작성하신 것을 보니, 별로 임팩트 있는 부분은 아닌가보군요 ^^;) 2. 이건 간단한 질문인데, updateMemberV2 메서드에서 merberService.update 후, id로 update를 날렸음에도 id를 다시 찾아오시더라구요. id로 Member를 찾고 그로부터 getId를 다시 하는 이유가 있을까요? (수강자료에서 updateMemberV2 메서드 부분에 fineOne이라고 오타 있습니다.!) 항상 좋은 강의 감사드립니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문 목록 검색 시, 랜더링 과정에서 LAZY 로딩 발생에 대한 질문
안녕하세요. 김영한 강사님! 기본편부터 이번 챕터까지 덕분에 잘 배우고 있습니다! 제가 배웠던 내용을 되짚어 보면 프록시 객체가 초기화 되는 시점이 영속성 컨텍스트가 관리하는 중에 해당 프록시의 id를 제외한 다른 속성들을 호출하면 되는 것으로 이해하고 있는데요. 아니면 초기화 메소드를 사용하던가. 여기서 의문이 orderService를 통해 조회해서 받아온 List<Order> orders는 프록시 객체를 담은채로 반환이 되는 걸로 추측이 되는데. model.addAttribute()로 orders를 담은 후 "orders/orderList" 페이지를 렌더링 하는 과정 중에 <table class="table table-striped"> <thead> <tr> <th>#</th> <th>회원명</th> <th>대표상품 이름</th> <th>대표상품 주문가격</th> <th>대표상품 주문수량</th> <th>상태</th> <th>일시</th> <th></th> </tr> </thead> <tbody> <tr th:each="item : ${orders}"> <td th:text="${item.id}"></td> <td th:text="${item.member.username}"></td> <td th:text="${item.orderItems[0].item.name}"></td> <td th:text="${item.orderItems[0].orderPrice}"></td> <td th:text="${item.orderItems[0].count}"></td> <td th:text="${item.status}"></td> <td th:text="${item.orderDate}"></td> <td><a th:if="${item.status.name() == 'ORDER'}" href="#" th:href="'javascript:cancel('+${item.id}+')'" class="btn btn-danger">CANCEL</a></td> </tr> </tbody> </table> item.member.username에서 member를 lazy 로딩하고 item.orderItems[0].item.name에서 orderItem과 item을 lazy 로딩을 하는 것을 확인할 수 있었습니다. 저는 이번 과정을 통해서 @Transactional 어노테이션이 붙은 Service 로직 내에서만 영속성 컨텍스트가 엔티티를 관리해준다고 나름대로 이해를 했었는데, Service 영역을 벗어난 곳에서도 영속성 컨텍스트가 지연 로딩을 하는 것을 보니 조금 당혹스럽더라구요! 그래서 핵심 질문은 프록시 객체들이 @Transactional이 붙은 Service 로직 내를 벗어났는데 왜 lazy 로딩이 신기하게도 잘 발생하는지?가 궁금합니다 ㅎㅎ! 추가) 같은 member, 같은 item을 가진 order를 2개 조회해봤는데요! 1차 캐시에 의해 lazy 로딩이 첫번째 table 목록을 구성하는데만 발생하고 두번째 목록을 구성할 때는 member와 item 엔티티를 받는데에 select 쿼리를 새로 DB에 안 날리고 영속성 컨텍스트의 1차 캐시에 등록된 엔티티를 반환 받는 것도 확인이 되네요.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
OSIV OFF 에 대한 질문
영한님 강의 언제나 감사한 마음으로 들으며 공부하고있습니다! 질문이있습니다. OSIV OFF 를 하여 영속성컨텍스트 생존 범위를 Service까지로 제한하게되면, Lazy 초기화를 하는 코드들을 전부 Service로 밀어 넣으면 되는 것인가요? 저는 초보 프론트엔지니어라서 그런지,, 서버는 보통 템플릿을 사용하지않고, RestAPI 를 만드는 쪽에 익숙하여서 강의내용과 이부분이 조금 다른것같아 혼동이 옵니다. 다시한번 정리하면, 저같은 경우에는 (Restful api 를 만드는 경우) 모든 지연로딩 초기화 코드는 service 혹은 repository에 밀어넣고 여기서 끝내어, Controller에서는 service에서 넘어온 것을 반환하는 것 정도까지 하면 될까요? 언제나 영한님의 친절한 답변 감사합니다 !!+ 추가질문으로 이런 코드는 service, repository 둘중 어디에 넣는 것이 더 좋을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
JPA와 Java 주의사항에 대한 여러 가지 질문
이번 강의에서는 평범한 도큐먼트만으로는 알 수 없는 정보를 알게 된 것 같아, 감사의 말씀드립니다.! 이 강의에서 몇 가지 JPA와 Java 사용에 대한 질문이 있습니다. 1. 전부 지연로딩으로 바꾸는 것이 좋다고 거듭 강조 주셨는데, 그렇다면 JPA는 왜 default로 EAGER를 사용하는 것인가요? EAGER를 default로 사용한다는 것은, 이렇게 사용하는 경우도 있고 장점도 있다는 것을 의미하는 것 같아 여쭤봅니다.! LAZY를 쓰지 않았을 때의 장점은 어떤 것들이 있나요? 2. Setter를 사용하지 않는 멤버변수에 한해 final을 사용하지 않는 이유는 무엇인가요? 아래 컬렉션 질문과 별개로 setter가 없는 모든 변수에 대해 궁금합니다. 3. 지금까지 필드 초기화는 생성자에서의 초기화와 다른 점이 우선순위만 다르다고 알고 있었습니다. 필드 초기화 -> 생성자 순으로 호출된다고 알고 있고, 단지 스타일 차이라고만 알고 있었습니다. 혹시 필드 초기화가 생성자 초기화보다 안전한 이유가 있을까요? 단순히 여러 생성자가 있을 때에 코드가 빠지는 실수를 막아준다는 이유 밖에 떠오르지 않는데, 다른 이유가 있는지 궁금합니다. 4. 양방향 연관관계 메서드에서 한 쪽만 연관관계 메서드를 적용시키면, 이를 모르고 호출하는 입장에서는 연관관계 메서드가 적용되지 않은 쪽을 호출하여 문제가 될 수도 있을 것 같다는 생각이 듭니다. Delivery <-> Order 관계를 예를 들면, 지금은 Order쪽에만 넣어서 Order에서 setDelivery할 때 자동으로 Delivery쪽도 해주었는데, “연관관계 메서드 해놨겠지”하며 Delivery에서 setOrder를 호출하면 문제가 될 것 같습니다. 물론 의미상 Order에서 Delivery와 OrderItem을 관리하는 것이 맞지만, 이렇게 직관적인 관계만 있지는 않을 것 같아서 그럴 때엔 어떻게 하는지 궁금합니다. 5. Address 부분 설명하실 때, 가볍게 "기본 생성자는 안 썼으면 좋겠지만 private으로 하면 안 되니 protected로 한다."라고 말씀주셨는데, 이러한 부분은 실제로 document를 읽지 않는 이상 알 수 없을 것 같아요. 강의를 듣는 사람 입장에서는 그렇구나 하고 넘길 수 있지만, 처음에 protected를 써야한다는 것은 그냥 단순히 private을 썼을 때 컴파일 오류를 통해 알게 되신건가요? (JPA에서 protected를 써야하는지 어떻게 알았냐가 메인 질문이라기보단, 이렇게 minor하지만 직관을 깨는 것들을 어떻게 보통 알게 되시는지가 궁금합니다.) 이 부분은 개인적으로 백엔드 팀장님으로의 김영한 선생님께 드리는 질문인데, 백엔드 쪽 공부를 하면서 느끼는 부분 중 하나가, 이렇게 tool을 사용하다보면 제 로직을 논리적으로 단단하게 짜는 시간도 있겠지만 그에 못지 않게 tool을 사용하기 위해 알아보는 시간도 적지 않게 쓰일 것 같은 느낌이 듭니다. 이러한 부분은 백엔드 개발이면 당연하게 받아들이는 부분인지 궁금합니다. 정말 길지만, 업무에 차질이 가지 않는 시간에 답변주시면 정말 감사하겠습니다. :)
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
DTO 와 Form
Controller DTO SERVICE Book Entity 위와 같은 DTO를 만들어 넘겨주는 형태가 1.Controller->Service로 넘어가는 파라메터가 많을경우 최적화가 잘 되어있는 형태가 맞는지 궁금합니다! 2.BookForm 과 DTO의 분리 이 예제에서는 BookForm 과 ItemUpdateDTO 과 같지만, 실무에서는뷰에서 사용하는 객체와, DTO 객체는 필드가 다르거나 다른 로직이 들어가게 되므로 분리하는것으로 이해하였습니다. 만약 뷰와 서비스에서 필요로하는 필드가 같다면, 뷰에서 받는 파라메터를 BookForm이 아닌 UpdateItemDTO로 받아도 괜찮은지 궁금합니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
SpringConfig파일 dataSource 밑줄 오류
안녕하세요 강사님 강의 잘 듣고 있습니다. 아래 사진처럼 밑줄 오류가 뜨는데 실행해보니 별 이상은 없습니다. 정확인 무슨 이유인지 알 수 있을까요? 이것 뿐만 아니라 tymeleaf의 model 데이터 인식 오류로 인해 model 데이터에도 밑줄 오류가 뜨네요 인텔리제이가 약간 이런 오류가 많나봐요 ㅠㅠ
-
미해결스프링 핵심 원리 - 기본편
AppConfig, ApplicationContext 에 대한 질문
안녕하세요 강사님, 몇가지 질문 드리겠습니다. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ- 질문 1. 제가 지금까지의 흐름을 맞게 이해하였는지 궁금합니다. 이전까지의 강의에서는(@ComponentScan 등장 전) AppConfig에서 @Configuration을 달았고, @Configuration에 의해 그 밑에 있던 @Bean들을 조회하여 빈을 생성하고 등록하는 방식으로 진행이 됐습니다. 테스트 코드에서 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);위 코드를 통해서 AppConfig의 빈이 등록될 수 있었고 거기에서 @Configuration을 인식하여 그 안에 있는 @Bean들을 모두 인식해 필요한 빈들을 등록하였습니다. 결론적으로, 지금까지는 어떠한 컴포넌트 스캔도 이뤄지지 않았으며 모든 빈 등록은 new Annotation~~Context(AppConfig.class)에 의해 생성된 AppConfig 빈에 의해 이루어졌습니다. 제가 맞게 이해한건가요? ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 질문 2. @ComponentScan을 사용한다면 ApplicationContext 가 굳이 필요없지 않나 하는 생각이 듭니다. AppConfig와 @Configuration을 통해 수동으로 빈을 등록한다 하더라도.. 컴포넌트 스캔의 범위에 AppConfig를 두면 알아서 모든 빈들이 문제없이 생성될 것입니다.(굳이 new Annotation~~Context(AppConfig.class) 를 통해 AppConfig 빈을 등록하지 알아도 알아서 스캔되어 등록될 테니까) @Component, @Autowired를 통해 의존성 주입을 해결해도 컴포넌트 스캔의 범위만 잘 설정해준다면 모든 빈들은 문제없이 생성되고 주입될 것입니다. 그렇다면 실제 프로그래밍에서는 ApplicationContext는 쓰이지 않는다고 봐도 되나요? 아니면 강의에서 해오셨던 것처럼 테스트 코드에서 getBean을 사용하기 위해서만 사용된다고 보면 될까요? 그것도 아니면 실제 프로그래밍에서도 사용되는 어떠한 용도가 있을까요? ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ질문 3. 다른 질문에서 지금까지 CoreApplication을 전혀 사용하지 않았기 때문에 CoreApplication 없이 프로젝트를 돌려도 똑같이 돌아갈 것이라고 말씀하셨는데요. CoreApplication에 대한 직접적인 사용은 없었지만 CoreApplication에 @SpringBootApplication이 있고 그 안에 @ComponentScan이 있고CoreApplication은 hello.core 하위에 존재하니까 hello.core 하위의 패키지를 모두 컴포넌트 스캔 할 것이고.. 그럼 CoreApplication은 컴포넌트 스캔으로 프로젝트에 영향을 미치고 있던 게 아닌가요? 어떻게 이 중요한 녀석을 빼놓고도 똑같이 동작할 수 있는 것인가요? 이에 대한 해답으로 new Annotation~~Context(AppConfig.class)를 통해 모든 빈 등록을 했으니 CoreApplication의 @ComponentScan이 없어도 되는 것인가? 라는 생각이 드는데요. 만약 이게 맞다면 하나 더 궁금해지는 것이.. 이대로라면 빈 등록이 CoreApplication의 @ComponentScan에 의해 한 번, AppConfig의 @Configuration에 의해 또 한 번. 총 두 번의 빈 등록이 일어나는데 이것에 의한 에러가 발생하지 않는 이유가 무엇인가요? 이번 실습에서 이와 같은 오류를 막기 위해 @Configuration을 컴포넌스 스캔 범위에서 제외하는 코드를 따로 작성해줬던 것이 아니었나요? ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 질문 4. 이전 강의에서 스프링 컨테이너가 @Configuration을 통해 싱글톤을 가능하게 하는 방법을 설명해주셨는데요.(@Configuration이 동록된 클래스를 상속받아 AppConFIg@@@CGLIB으로 사용하는 방법) 만약 AppConfig와 @Configuration이 없이 @ComponentScan을 통해서만 빈 등록과 의존성 주입을 모두 처리할 경우에는 어떤 식으로 싱글톤을 유지할 수 있게 되나요? 혹시 이게 너무 지엽적인 부분이라면 "그냥 스프링 컨테이너가 알아서 잘 해준다." 정도로 받아들이고 넘어가도 괜찮을까요? ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 지식의 소용돌이가 아직 완벽히 정리되질 않아 질문이 너무 길고 횡설수설 합네요. 죄송합니다. 강의 재밌게 잘 듣고 있습니다. 감사합니다!
-
미해결스프링 핵심 원리 - 기본편
강사님 스프링 컨테이너에 관한 질문이있습니다.
강의 내용을 복습하다가 막힌곳이 있는데 AppConfig 클래스에 Configuration 애노테이션이 있으니깐 결론적으로 스프링 컨테이너가 되고 그 이하의 Bean들을 관리해주는 건가요?? Configuration 애노테이션이 붙어있으면 붙어있는 클래스가 모두 스프링 컨테이너가 되는건가요??
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
junit으로 회원등록 API 테스트 코드를 만들어 보았습니다.
junit으로 회원 등록 API 테스트 코드를 만들어 보았습니다. @ExtendWith(SpringExtension.class)@SpringBootTest@AutoConfigureMockMvcclass MemberApiControllerTest { @Autowired MockMvc mockMvc; @Autowired ObjectMapper objectMapper;// @BeforeEach// void setUp(@Autowired MemberApiController memberApiController){// mockMvc = MockMvcBuilders.standaloneSetup(memberApiController).build();// } @Test @DisplayName("회원_등록API_V1") void 회원_등록ApiV1() throws Exception { //given MemberDto memberDto = new MemberDto("회원1"); final String jsonStr = objectMapper.writeValueAsString(memberDto); //when final ResultActions resultActions = mockMvc.perform(post("/api/v1/members") .contentType(MediaType.APPLICATION_JSON) .content(jsonStr) ).andDo(print()); //then resultActions.andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON)) .andExpect(jsonPath("$.id").value("1")); } @Data @AllArgsConstructor static class MemberDto { private String name; } @Test @DisplayName("회원_등록API_V2") void 회원_등록ApiV2() throws Exception { //given MemberDto memberDto = new MemberDto("회원2"); final String jsonStr = objectMapper.writeValueAsString(memberDto); //when final ResultActions resultActions = mockMvc.perform(post("/api/v2/members") .contentType(MediaType.APPLICATION_JSON) .content(jsonStr) ).andDo(print()); //then resultActions.andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON)) .andExpect(jsonPath("$.id").value("1")); } @Test @DisplayName("회원정보_업데이트V2") void 회원정보_업데이트V2() throws Exception { //given MemberDto memberDto = new MemberDto("회원3"); final String jsonStr = objectMapper.writeValueAsString(memberDto); //when final ResultActions resultActions = mockMvc.perform(post("/api/v2/members/1") .contentType(MediaType.APPLICATION_JSON) .content(jsonStr) ).andDo(print()); //then resultActions.andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON)) .andExpect(jsonPath("$.id").value("1")) .andExpect(jsonPath("$.name").value("회원3")); } } 감사합니다.
-
해결됨스프링 핵심 원리 - 기본편
싱글톤이 DIP를 위반한다는 점에서 질문있습니다.
안녕하세요. 수업을 듣다가 Singleton이 DIP를 위반한다는 점에서 여쭤보고 싶은 점이 생겼습니다. 클라이언트에서 의존성을 주입받는 다고 하고, A, B 두 클래스가 있을 때 B가 A를 상속받는 Singleton이라 가정하겠습니다. 클라이언트가 생성자 주입을 받든, Setter 주입을 받든 A에 의존하게 하고, 클라이언트에 의존성을 주입하는 Config(?)가 A를 넣는자리에 B를 넣어주면 DIP 문제가 해결되는 것이 아닌가요? 어째서 Singleton을 쓰면 DIP가 위반되는지 궁금합니다
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
Whitelabel Error Page
안녕하세요 강사님 강의보고 그대로 했는데 http://localhost:8080 에서 회원가입이나 회원목록을 누르면 Whitelabel Error Page 요런 에러가 나오는데 어디서 잘못된건지 찾아도 잘모르겠어서요.. 요 캡쳐화면으로 찾을수있는걸까요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
~/test.mv.db 요파일 생성 여부는
안녕하세요 강사님 ~/test.mv.db 요파일 생성여부는 윈도우이용자는 어떻게 조회할수있는지 알수있을까요..??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
findByName의 result를 List로 받는 이유가 있나요?
service 코드를 개발 할 때 중복 되는 member_name이 있는지 validate를 해줘서 결국 member_name이 unique 값이 될텐데 , getSingleResult를 이용하여 아래와 같이 작성하지 않는 이유가 있나요? public Member findByName(String name){ return em.createQuery("select m from Member m where m.name = :name",Member.class) .setParameter("name",name) .getSingleResult();}
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
질문 있습니다!!
안녕하십니까 강의 진짜 정말 유익하게 잘 듣고있는 졸업예정 취준생입니다. 컴퓨터공학이라는 전공의 수 많은 분야 앞에서 적성을 찾다가 최근에 웹개발로 마음을 굳혀서요.. 지금이라도 스프링을 배워보면서 포트폴리오용으로 CRUD 기능을 구현해보려고 하는데 바보같은 질문이지만 인정받으려면 html css javascript처럼 완전 기초의 언어가지고 만들어야 인정해주나요?.. 왜냐하면 지금 강의 앞부분만 들은 시점에서 스프링데이터 JPA가 CRUD기능도 다 제공을 해준다고 하더라구요... 그럼 구현 난이도도 그만큼 쉬워진다는건데 과연 스프링으로만 CRUD를 구현하는것과 프레임워크 없이 구현하는것과 회사 입장에서 많은 구분을 두는 편인가요?? 만약 그렇다면 JPA까지만 배운 상태로라도 CRUD를 구현해보려고 합니다.. 아예 이번 강의는 듣지 않은채로... (스프링 데이터 JPA를 귀에 담지 않은채로 라는 말입니다) 강의 정말 잘 듣고있습니다. 감사합니다.