묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
데이터 베이스 파일 생성이 되지 않습니다.
안녕하세요? 강사님. 항상 강의 잘 듣고 있습니다. 다름이 아니라, 제가 window installer 로 다운받은후에 H2 콘솔을 열어서 , 여러방법을 사용해서 데이터 베이스 파일 생성을 해보려고 했는데 되지가 않습니다. 주소창에 localhost:8082 도 해보고 저장한 설정 에서 server 대신 embedded 도 해보고, JDBC URL 에서 ~/test로 변경도 해보고 다 해봤는데 계속 똑같이 아래와 같은 것만 뜨네요... Database "C:/Users/user/test" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149
-
해결됨스프링 웹 MVC
세션에서 넘어오는 데이터 바인딩
강의 3분 정도의 설명에 session 에 있는 데이터를 받아와 @ModelAttribute 의 객체에 바인딩이 가능하다고 하셔서, 테스트를 작성해봤지만 실패해 테스트를 어떻게 작성해야하는지 질문드립니다.. 제가 시도한 방법은 다음과 같습니다. <컨트롤러> @Controller public class TestController { @PostMapping("/session") @ResponseBody public Event sessionTest(@ModelAttribute Event event){ return event; } } <테스트 코드 > @WebMvcTest class TestControllerTest { @Autowired MockMvc mockMvc; @Test void sessionTest() throws Exception { MockHttpSession session = new MockHttpSession(); session.setAttribute("name", "jaden"); mockMvc.perform(post("/session") .session(session) .param("limit", "10")) .andDo(print()) .andExpect(status().isOk()); } } <실행결과> 세션을 목업해서 넘겨봤는데, 바인딩이 되지 않아 null 이 찍힙니다. 또한, 두번째로 시도한 방법은 mockMvc 에 .sessionAttr 을 넣을 수 있어서 사용해 봤습니다. <테스트코드> @Test void test2() throws Exception{ mockMvc.perform(post("/session") .sessionAttr("limit", "10") .param("name", "jaden")) .andDo(print()) .andExpect(status().isOk()); } <실행결과> 하지만 마찬가지로 바인딩이 잘 되지 않는 것 같더라구요.. 어떻게 테스트 코드를 작성해야 제대로 바인딩을 할 수 있을까요? --- 아니면 혹시, session 에서 값을 받아와 setter 를 통해 직접 바인딩 해줄 수 있기 때문에 그렇게 말씀하신걸까요? 좋은 강의 감사드립니다!
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
8:00 getter/setter 윈도우 단축키는
alt+Insert 하면 getter and setter를 생성 할 수 있습니다,
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
cannot find symbol class Model 오류가 발생합니다
@Controller public class HelloController { @GetMapping("hello") public String hello(Model model) { model.addAttribute("data", "hello!!"); return "hello"; } } 위를 복사하여 실행할때, cannot find symbol class Model라고 오류가 발생합니다!ㅠ
-
미해결스프링 핵심 원리 - 기본편
안녕하세요!! 영한님 향후 강의에 대한 질문이있습니다
안녕하세요 현재 1학기만 남은 졸업예정학생입니다 2개월뒤에 졸업작품으로 스프링부트로 웹사이트 개발예정이있습니다. 3학년때 스프링 ( jsp, oracle, mybatis) 으로 근본적인 이해없이 그냥 복붙으로 뚝딱뚝딱 사이트를 만들었던 경험이있는데 이번 졸업작품은 프론트단/백단 모두 혼자서 완벽히 이해하며 만들어 보는것을 목표로 하고있습니다. 제가 궁금한점은 1. 영한님의 스프링입문,기본 편 강의를 수강했고 현재 활용1편(야생형)까지 들은상태입니다. 스프링 기본편은 알려주시는것들이 너무 많은데 제가 제대로 소화하지 못하는것같아서 한번 듣기는 했지만 나중에 다시 꼭 들어야겠다고 생각하고있습니다. 제가 많이 부족한것인지는 몰라도 아직까지 선뜻 스프링부트로 사이트를 만들어 봐야지 하는 정도의 개념은 잡히지 않은것같습니다. 향후계획은 JPA기본편을 수강-> 활용1편 복습-> 그후 야생형 순서 로 가려고하는데 어느정도 강의를 듣고나서 시작해보시는걸 추천하시나요?? 2. 오픈예정인 실전MVC, db접근 등의 강의는 야생형 로드맵 까지 완료한후에 듣는것을 추천하시는건가요??? 당장 웹사이트를 만들어야하는 상황이면 JPA를 깊게 파는것보다 실전 MVC, DB 강의를 듣는것이 조금더 효율적일까요? 제가 생각하는것은 야생형 로드맵을 다 듣고나면 강의가 추가로 오픈될것같아서 그후에 듣고싶지만 빨리 여러강의를 수강하면 제가많이 부족한탓에 흡수를 못할것같아 걱정이됩니다 강의가 정말좋아서 처음으로 강사님의 모든 로드맵의 과정들을 전부듣는다는것을 전제하에 질문드리게되었습니다 ㅠㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Controller에서 Repository 접근
DDD 자료를 찾아보면 강의 자료와 같이 Domain이 전체 레이어를 아우르고, Controller에서 Repository를 접근 하도록 설계되어 있습니다.기초 강의에서는 Entity를 Controller에 넘기지 말라고 말씀 하셨고 그 이유도 충분히 이해 했었습니다. 지금 예제에서는 Controller가 Repository를 호출하게 된다면 Entity가 넘어가게 될텐데... 강의상 편의를 위해서 하신건가요? 실무에서도 빈번하게 사용하는 구조인가요? 추가적으로 DTO를 사용한다면, 아래 예제 계층에서 오고가는 DTO에 대한 표현(naming rule, suffix, package 등등)을 어떻게 하시는지 궁금합니다.- web <-> controller- service <-> repository
-
해결됨스프링 핵심 원리 - 기본편
클라이언트 코드란 뭘까요..?
정리하는 내용에서 클라이언트 코드라는 단어가 나오는데, 정확히 클라이언트란 무엇일까요..? client라는 단어가 사실 여기저기서 자주나오다 보니 헷갈립니다. 저는 프론트엔드 개발자라서 그런가 client 코드라고 하면, 브라우저에서 작동하는 프론트 코드가 떠올라서요.. 어떻게 이해를 하면 좋을까요? 소프트웨어 공학 관점에서 말하는 Actor, 특정 Actor(여기서는 주문을 하는 손님)에 대한 코드라고 보면 되는걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
단위테스트가 어떤 것인지 좀 더 구체적으로 설명 부탁드려도 될까요?
안녕하세요. 좋은 강의 항상 감사드립니다. 단위 테스트의 중요성을 강조해주셨는데 제가 아직 초보라서 잘 이해가 가지 않습니다. 제 수준으로 테스트를 이해한 것을 말씀드리자면, 만약 수량이 2개가 추가되면, 그것이 데이타베이스에 2개가 추가 됐는지를 확인하고, 그것이 화면으로 제대로 출력되는 것을 확인하는 것이 가장 최소한의 테스트라고 생각하기 때문입니다. 그런데 DB를 거치지 않고 한다는 것이 어떤 의미인지 사실 잘 모르겠습니다. 지금 in memory를 DB로서 사용하고 있는데, 이것조차 사용하지 않게 되는건가요? 혹시 가능하시다면 지금의 예제에서 단위테스트를 한다면 예시를 짧게라도 한 줄 부탁드려도 될까요? 그런 측면에서 제가 테스트에 대하여 이해도가 너무 낮은 것이 아닌가 싶습니다. junit이란 것도 선생님 수업 들으면서 이번에 처음 알게 됐거든요. 그래서 혹시 가능하다면 테스트와 관련하여 참고할만한 책이나 자료가 있으면 추천 부탁드려도 될까요? 감사합니다.
-
미해결스프링 핵심 원리 - 기본편
강의를듣다보니 궁금증이생겼습니다
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 으로하셨는대 ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 이렇게 하지 않으신 이유가 궁금합니다 이전까지는 이방법으로 했기때문에 궁금해졌습니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
비지니스 로직구현 Entity VS Service
안녕하세요 강사님! 이번 강의에서는 Item.class에 다음과 같이 해당 변수에 대한 접근은 해당 entity에서 작성하여 주셨는데요, /* * 재고 수량 증가 */public void addStock(int quantity){ this.stockQuantity += quantity;}/*재고 수량 감소 */public void removeStock(int quantity){ int restStock = this.stockQuantity - quantity; if(restStock < 0){ throw new NotEnoughStockException("need more stock"); } this.stockQuantity = restStock;} 1. 그렇다면 만약 회원의 주소를 변경하는 로직을 만든다고 하면 이 또한 memberRepository.class가 아닌 member.class에서 변경하여 주는 것이 맞을까요?? 2. 또 비슷한 맥락으로 service 구현과 entity에서의 로직 구현의 차이는 객체의 맴버변수에 접근하는지/ 맴버 자체에 접근하는지의 차이로 이해하면 될까요?? 감사합니다^^!
-
미해결스프링 핵심 원리 - 기본편
테스트 코드 작성에 대한 질문
실무를 하다보면, 개발기간내 시간에 쫒겨 비지니스 로직 구현만 하고, 테스트 코드 작성은 미뤄두다 결국 못하는 경우가 많습니다. 강사님 강의를 듣다보면 로직 구현 이상으로 테스트 코드 작성에 시간을 할애해야 할 정도로 중요하게 얘기를 하시는걸 느낄수 있는데요. 꼭 테스트 코드를 작성해야 하는 이유를 뭐라고 생각해야 할까요? 사실, 그동안은 테스트 코드는 형식상 작성하는거다라고 우선순위를 낮춰 생각해왔거든요. 제가 잘못생각하고 있었다면 조언 부탁드립니다.
-
미해결스프링 핵심 원리 - 기본편
다이어그램 그리실때 툴은 어느거 사용하셨나요?
수업 내용에 대한 질문은 아닙니다.^^ 다이어그램이 간단해보여 업무 정리로 좋을꺼 같에요. 어느 툴 사용하셨는지 여쭤봅니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Book이 준영속 엔티티
updateItem 메소드에서 Book이 DB에 저장된적이 있어서 식별자가 존재하여 영속성 컨텍스트에서 관리하지 않는다고 하셨는데요. 1. 그러면 Book을 new Book()으로 생성하고 setId에서 임의로 현재 DB에 존재하지 않는 id를 입력하면 어떻게 될까요?? 2. 준영속 엔티티가 된 이유가 id가 존재해서 라기 보다는 Book 객체의 생성시 영속성컨텍스트를 거치지 않고 생성자를 거쳤기 때문에 준영속 엔티티가 된건 아닌가요??
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
질문드립니다.
안녕하세요!강의 정말정말 잘 듣고있습니다! 예제에서는 모두 MemberRepository의 인터페이스를 통해 의존성 주입을 받도록 되어있는데, 그렇다면 스프링 데이터 JPA에서 제공하는 여러 기능들을 이용하기 위해서는 memberRepository에 사용할 기능을 추가해야 하는 건가요~? 새해복 많이받으세요!
-
미해결스프링 핵심 원리 - 기본편
@Configuration에 관한 질문입니다.
@Configuration 에노테이션 없이 싱글톤이 보장되지 않는다는 것을 테스트코드로 확인하기 위해서 테스트코드 작성을 하였습니다. 그런데 테스트코드를 실행하니 @Configuration이 없음에도, Singleton으로 생성한다는 문구가 보이고, 테스트코드 또한 실패하였습니다. 무엇이 원인인지 잘모르겠습니다..
-
미해결스프링 핵심 원리 - 기본편
스프링과 SOLID 질문
안녕하세요 강사님, 질문 있습니다. 다형성만으로는 OCP, DIP를 위배할 수밖에 없다고 설명하시며 그에 대한 대책으로 스프링이 나온 것이라고 말씀해주셨는데요. 아마 이는 이전 강의에서 진행하셨던 @Configuration, @Bean을 통한 스프링 컨테이너에 객체를 등록하는 방식을 말씀하는 것일 거라고 생각합니다. 다만 의문점이 드는 부분은.. "스프링을 개발한 개발자들 또한 OCP, DIP 위배 문제에 대한 고민을 하였고 그 해답으로 스프링 프레임워크를 만들었다." 라고 함은.. 스프링이 등장하기 전에도 SOLID라는 개념은 존재했다는 것이겠지요? 그런데 OCP, DIP 위반 문제를 해결하기 위해 스프링을 만들었다? 그렇다면 스프링이 등장하기 전에는 어떤 방식으로도 SOLID를 모두 충족시킬 수 없었다는 말인가요? 그렇다면 저 SOLID라는 개념을 처음 제시했을 사람은.. 문제에 대한 해결책도 없이 그냥 객체지향 설계의 이상향만 제시했을 뿐인 건가요? 알쏭달쏭 하네요; 이번 강의도 잘 듣겠습니다. 감사합니다! ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 바로 다음 강의에서 스프링 등장 이전 배경에 대한 설명이 다시 간략하게 나오네요. 스프링이 없이 OCP, DIP를 지켜가며 개발을 하다보니 배보다 배꼽이 커지는 일이 발생했고 그래서 스프링을 만들었다구요. 이로써 첫 질문에 대한 답은 해결이 되었는데.. 음.. 저 스프링 없이 SOLID를 유지하는 코딩 방식에 대한 건 너무 지엽적인 부분이겠죠??ㅠㅠ
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
@lob 관련하여 질문 드립니다.
안녕하세요!JPA를 활용하여 여러가지 조회테스트를 해보고 있는데 @lob 컬럼이 존재하는 경우 select시 쿼리가 매우 느린현상을 발견했습니다. @lob 컬럼이 존재하는 경우에 쿼리를 빠르게 수행할 수 있는 방법이 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
9분30초 findOrderDtos()관련 질문입니다.
안녕하세요 팀장님 프로그래밍 강의를 재미있게 듣기는 처음입니다. ^^ findAllWithMemberDelivery()과 달리 findOrderDtos()에서는 fetch join을 사용하면 에러가 발생합니다. return em.createQuery( "select new jpabook.jpashop.api.dto.OrderSimpleQueryDto(o.id, m.name, o.orderDate, o.status, d.address) " + " from Order o" + " join o.member m " + " join o.delivery d ", OrderSimpleQueryDto.class ).getResultList(); <자바 ORM 표준 JPA 프로그래밍>에서는 SELECT m FROM Member m JOIN FETCH m.team 은 다음 SQL문과 같고 SELECT M.*, T.* FROM MEMBER M INNER JOIN TEAM T ON M.TEAM_ID=T.ID 일반 JOIN인 경우 SELECT m FROM Member m JOIN m.team t 다음 SQL과 같다 하셨는데 SELECT M.* FROM MEMBER M INNER JOIN TEAM T ON M.TEAM_ID=T.ID 위에서는 join만 사용했는데 어떻게 member나 delivery를 별도 query로 참조하지 않고 가져왔는지 궁금합니다. 답변하신 내용중 https://www.inflearn.com/questions/23847를 참고하면 "fetch join을 사용하는 이유는 엔티티 상태에서 엔티티 그래프를 참조하기 위해서 사용하는 것입니다. 따라서 당연히 엔티티가 아닌 DTO 상태로 조회하는 것은 불가능합니다. 이 경우 fetch join을 사용하지 마시고, 그냥 순수한 join을 사용하시면 원하는 결과를 얻을 수 있습니다" 라 하셨는데 만약 위의 jpql에 fetch가 있었다면 엔티티 상태이기 때문에 에러가 나지 않고 추후 new를 통해 DTO로 변환해야 하는 것 아닌지요?
-
미해결스프링 핵심 원리 - 기본편
빌드 오류메시지가 있는데요
start.spring.io에서 프로젝트 생성해서 오픈했는데 바로 오류가 떠서 이것저것 확인해보고 에러메시지 검색해봤는데 잘 못찾겠네요 ㅜ 어떤게 문제일까요??..
-
해결됨스프링 부트 개념과 활용
spring boot 2.4.1 기준
몇 버전부터 인지는 모르겠으나 2.4.1버전 기준으로는, <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-actuator-autoconfigure</artifactId> </dependency> spring-boot-actuator 의존성 뿐만 아니라 spring-boot-actuator-autoconfigure 의존성을 추가하시고 따라하시면 됩니다.