이야기를 나눠요
137만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
실전! 스프링 데이터 JPA
프로젝션 사용 이유
엔티티 전체를 조회 하는 것이 아닌 이름만 조회하기 위해, 프로젝션을 사용하는것 으로 알고 있습니다.하지만, 단순 jpa + jqpl로도 이름만 조회가 가능한데, 다음과 같이 구현하면, 내부적 동작방식이 다른지? 여부가 궁금합니다. MemberRepository.java@Query("select m.name from Member m where m.name = :name") String findOnlyOneName(@Param("name") String name); MemberRepositoryTest.java@Test public void 간단하게_이름만조회() throws Exception{ //given Team team = new Team("teamA"); teamRepository.save(team); Member m1 = new Member("kim1",10,team); memberRepository.save(m1); em.flush(); em.clear(); //when String findMemberName = memberRepository.findOnlyOneName("kim1"); //then assertThat(findMemberName).isEqualTo("kim1"); }
-
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
mvc 2편까지 완강 후 토이프로젝트 진행중에 고민이 있습니다
안녕하세요 mvc 2편까지 강의 듣고 혼자서 프로젝트를 연습해보고 있는 와중에 막히는 부분이 생겨서 글 남겨봅니다.영한님한테 배운 타임리프+스프링 활용하여 진행을 해보고 있는데, 뷰 컨트롤 부분에서 제가 아직 배움이 부족해서 그런거겠지만 뭔가 한계가 있는 느낌이 들어서요. 간단한 매핑 처리는 수월했는데, 예를들면<section> <article> <button>대여</button> <button>예약</button> <button>반납</button> </article> <article><!-- 검색 ui --></article> <article> <ul><li><!-- 체크박스가 들어있는 리스트들 (대여,예약가능) --> ...</li></ul> </article><section> 이런 식의 ui가 있다고 가정하고, 체크박스 처리에 따른 form 처리를 하고싶은데, 스프링 + 타임리프로 post 처리하려면 <form> 태그의 범위를 어떻게 해야될지 모르겠달까 그런 부분이 계속 고민이 됩니다..제가 프론트쪽을 예전부터 많이 다뤘었는데 이런 경우들이 있을땐 가능하다면 자바스크립트 기반으로 제어해서 스프링과 연계하는게 맞을까요??
-
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
학습 방법
안녕하세요.현재 저는 김영한 강사님이 올려놓으신 스프링 완전 정복 시리즈 로드맵(고급편, 핵심 원리와 활용 제외)과 JPA 실무 정복 로드맵(스프링 데이터 JPA, QueryDSL 제외)을 수강(1회 수강)했습니다.저는 지금까지 배운 기술들로 간단한 개인 프로젝트를 진행하려고 하는데 프로젝트 진행 방법에 대해 궁금한 점이 있습니다.첫 번째 질문저는 일단 지금까지 들었던 강의들을 빠른 배속으로 다시 들으면서 프로젝트를 진행하려고 하는데 이게 맞는지 아니면 프로젝트 도중에 헷갈리는 개념들을 찾아서 복습하는 식으로 진행하는게 맞는지 궁금합니다. 아니면 더 좋은 방법이 있으시다면 추천 부탁드립니다.두 번째 질문그리고 강사님 강의들을 처음 들을 때는 라이브 코딩을 진행하면서 강의를 들었었는데 복습할 때는 라이브 코딩 말고 그냥 빠른 배속으로 들으면서 복습하는 것도 괜찮은 건지 궁금합니다.
-
실전! 스프링 데이터 JPA
현재 공부방향이 괜찮은지 궁금합니다
안녕하세요 현재 개발자를 준비하고 22살 남성입니다,저에게는 한 가지 고질적인 고민이 있습니다, 바로 제대로 된 네트워킹이 이루어지고 있지 않다는 점 인데요, 고졸이라는 학력과 주위에 아무런 인맥도 없는 상황에서 20살부터 혼자서 2년간 공부를 했기에 불안함이라는 감정이 아무리 공부를 하더라도 지워지지 않는 거 같습니다, 아마 객관적으로 현재 저가 어느정도 수준인지 파악이 안되는 상황이라서 생기는 감정이라고 생각하고 있습니다. 사실 개발자를 준비하면서 여러 차례 네트워킹을 노력 했지만 뜻대로는 안 된 거 같습니다, 하지만 지속적인 불안함 때문에 2년간 계속해서 공부방식에 대한 의심이 많았고, 누가봐도 좋은 방식이라는 생각이 들 수 있도록 방향에 대한 교정을 이어나가고 있습니다. 본론은 지금부터 입니다, 현재까지 몇 번의 서비스를 만들어 왔으며, 매번 서비스를 만들면서 백엔드 개발 관점에서 더 좋은 코드를 만들고자 노력하고 있습니다. 그리고 지금은 새로운 서비스를 만들면서 이전에는 구현하기 바빴다면, 이번에는 개발서적을 읽고 여러 레퍼런스를 보면서 개발을 하고있는 상황입니다. 예를 들어, JPA의 경우 현재 내 코드가 선택적 비식별관계인지 필수적 비식별관계인지 점검하고 만약 필수적 비식별 관계일 경우 N + 1 문제를 해결하기 위해, 연산이 상대적으로 더 빨라서 성능 면에서 외부조인보다 더 좋은 내부조인을 사용할 수 있고 이러한 내부조인을 사용하여 N + 1 문제를 해결하는 등 서적을 읽으면서 문제점을 계속해서 찾다보니 점검 해야하는 체크 리스트가 약 150개 정도 되는 상태입니다.(근데 말이 저렇다는거지 실제로는 요구사항에 따라서 @EntityGraph나 Fetch Join이 더 좋을 수도 있을거라고 생각하고 있습니다) 또한 책을 읽다보니 간단한 CRUD을 구현하는 것도 사실 간단한게 아니라 저가 놓치고 있는게 정말 많이 있다는 사실을 알 수 있었고, 지금은 한 가지 기능을 구현할 때 많은 고민을 가지면서 개발하는 습관이 생겼습니다, 이외에도 빨리 데이터베이스와 아키텍처 그리고 네트워크에 대한 내용도 서적을 읽으면서 제 기준으로 최대한 깊게 공부하고 싶은 생각이 들고 있습니다. 그리고 저는 이러한 부분에서 "다른 개발자들은 기본적으로 알고 있는거면 어떡하지?" "지금 고치고 있는게 의미 없는거면 어떡하지?" "열심히 서적을 읽고 정리하고 코드에 적용하고 그걸 기록하고 남들이 읽기 쉽도록 PR하는데 이게 아무 가치가 없는거면 어떡하지?" 같은 불안함을 느끼고 있습니다, 그래서 지금 방식이 괜찮은지 김영한님의 조언을 듣고 싶습니다, 되도록이면 쓴소리를 듣고 더 좋은 방향으로 발전하고 싶습니다, 긴글 읽어주셔서 감사합니다. + 그리고 마지막으로 지금 만드는 서비스가 저가 이전에 일했던 시장에서 불편한 점을 개선하는 서비스입니다, 랜딩 페이지를 만들어서 약 이틀간 수요 조사를 했는데 200분이 방문하시고 80분 정도가 이 정보를 원하고 계신 상태이기에, 최소한 한달에 1,000명 정도는 사용하지 않을까..? 하는 생각이 있습니다, (과거 수익형 블로그 운영 경험이 있어서 사이트 노출에 대한 이해도가 좀 있음) 그래서 신입이 최선을 다해서 만든 서비스가 사용자 피드백을 받고 개선한것도 있다면 좀 좋게 봐주실까요....?
-
실전! 스프링 데이터 JPA
강의 질문 드립니다.
해당 강의 말고 Query DSL 로 바로 넘어가도 될까요..?2개의 기술 모두 JPQL 작성하는 방법에 대해서 다루는 거라면..Query DSL 을 사용하는게 더 낫고 편하다면 그냥 그것만 듣고 싶어서요...
-
스프링 핵심 원리 - 고급편
동시성 문제에 대해 질문합니다.
안녕하세요!.. 강의와 무관한 내용이지만 마땅히 스프링 관련된 질문을 아는 곳이 없어 평소 스프링 강의를 들은 선생님께 질문을 하게 되었습니다.질문에 대한 전체 코드는 아래 링크에 작성했습니다.https://www.notion.so/7iwook/userVolunteerService-1d911afe2d6545bfa1e8247cc6006748?pvs=4 @Lock(LockModeType.PESSIMISTIC_READ) @Override public Optional<UserVolunteerWork> findByVolunteerWorkIdAndUserId(Long volunteerWorkId, Long userId) { return Optional.ofNullable(queryFactory .selectFrom(userVolunteerWork) .join(userVolunteerWork.volunteerWork, volunteerWork) .join(userVolunteerWork.user, user).fetchJoin() .where( userVolunteerWork.volunteerWork.id.eq(volunteerWorkId) .and(userVolunteerWork.user.id.eq(userId)) ).setLockMode(LockModeType.PESSIMISTIC_READ) .fetchOne()); }위 코드를 순차적 시행하면 문제없이 원하는 결과값을 반환하지만 (테스트 코드가 길어 똑같은 부분을 제외하고 차이점만 올립니다.)for (int i = 0; i < tryCnt; i++) { User user = users.get(i); try { volunteerService.approve(adminEmail, volunteerWorkId, user.getId()); successCount++; // 성공한 신청 수 증가 } catch (Exception e) { failedCount++; } }동시성 테스트를 위해 아래와 같이 구성을 하면 쿼리 결과 값이 null로 나와 EntityNotFoundException을 던지게 됩니다..int numThreads = 50; // 50명의 유저가 동시에 신청 CountDownLatch doneSignal = new CountDownLatch(numThreads); ExecutorService executorService = Executors.newFixedThreadPool(numThreads); AtomicInteger successCount = new AtomicInteger(); AtomicInteger failCount = new AtomicInteger(); for (int i = 0; i < numThreads; i++) { User user = users.get(i % users.size()); // 유저 목록에서 순차적으로 유저를 가져옴 executorService.execute(() -> { try { log.info("approved userId = {}", user.getId()); volunteerService.approve(adminEmail, volunteerWorkId, user.getId()); successCount.getAndIncrement(); // 성공한 신청 수 증가 } catch (Exception e) { e.printStackTrace(); failCount.getAndIncrement(); // 예외 처리 } finally { doneSignal.countDown(); // 쓰레드 작업 완료를 알림 } }); }인터넷에 나와있는 비관적, 낙관적 락을 모두 시도해보았으나 null로만 반환되는 현상이 나오는 데 이 현상이 동시성에 있는건지도 아직 모르겠습니다... 원인에 대해 찾아주신다면 정말 감사합니다!!좋은 강의 항상 잘 듣고 있습니다!!
-
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
개인 프로젝트 관련 고민이 있습니다..
이번에 배포까지 완료 하였고, 많이 부족하지만 이 강의를 통하여 배운 것을 기반으로 응용 프로젝트를 하려고 합니다. 목표는 웹 앱 하이브리드 형식으로 웹에서는 관리자 관리 기반 기능 (책 등록, 회원 승인, 기록 관리)앱에서는 로그인이나 ai 가 책을 추천하고, 책에 대한 소통하는 게시판, 웹에서 등록된 책을 앱에서 대출 및 반납 을 목표로 하고 있습니다.예전에 js, css 를 다뤄서 html 을 만들어본 경험과안드로이드 스튜디오를 통해 heidiSQL 을 사용하여 알람 앱을 만들어 본 적도 있는데, 다 까먹었지만, 다시 한번 기억을 되살려 써먹어보고 싶습니다. 문제는 일단 프론트 쪽 부터 뜯어보고 싶은데, 제가 배웠던 것은 js와 css 파일을 나누어서 그것을 이용해 body에 때려박는 무식한 방식으로 했는데 idex.html 에 있는 body 에 id="root" 만 있고이 root 에 대한 값을 못찼겠네요... 일단 제가 알고 싶은 것은 버튼이나 여러 ui를 추가 하고 싶은데 혹시 강의에서 주신 html 을 건들려면 어떻게 해야 할지 알 수 있을까요? 서버 실행 후 index.html 에 있는 저장 버튼이 어떻게 저희가 작성한 코드와 상호작용 되는지 알 수 있을까요?
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
이해관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]입문 강의 듣고 스프링 완전 정복 로드맵을 구매하려고 했는데, 입문강의에서 JPA까지 다루는 법을 알려주시는데, 이해하고 넘어가려고 하니 갑자기 개발자를 해도 될지 의문을 가질정도로 어렵게 느껴집니다. 로드맵 강의를 구매해도 괜찮을까요...
-
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
연관관계를 많이 가지는 엔티티의 테스트
안녕하세요 영한님영한님 강의들을 통해서 스프링이 무엇인지도 몰랐던 저는 이제 팀을 만들어 프로젝트를 하고 개발이라는 것에 즐거음을 느끼고 있는 개발 취준생입니다.최근 프로젝트를 진행하면서 JPA 사용하는 중에 테스트 코드에서 어려운 부분이 있어 너무 궁금하여 질문을 남깁니다. 저는 물류 관리 시스템의 주제로 프로젝트를 진행하고 있습니다.이 과정에서 엔티티과 연관관계를 복잡하게 가지고 있고 이로 인해서 서비스 테스트 코드 하나를 테스트하기 위해 많은 사전 데이터가 필요한 상태입니다.테스트 코드를 작성하기 위해서 많은 Mock 데이터가 필요한 문제점을 해결하기 위해서 실무에서는 어떤 식으로 이런 문제를 해결하는지 궁금합니다. 혹시나 이 글을 보신다면 답변 해주시면 정말 감사하겠습니다. ㅠㅠ👏👏
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
DatasourceUtils import가 안됩니다
이 버전으로 하였고 자바 버전 다 맞춰보고invalidate Cashes, 새로운 프로젝트 생성 후 만들어도 안 됩니다. 답변 글 중에 jdbc api를 의존성에 추가하면 된다고 해서 해봤는데 그렇게 하면 DatasourceUtils는 import가 되나부트 실행이 안 됩니다.
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
자바 중급2까지 끝내고 들으려는데 용어가 너무 어려워요 ㅠㅠ
API 뭐 톰캣서버내장 이런 단어조차 모르니 너무 어렵네요 ㅠㅠ비전공자 출신인 저로서는 CSS HTML 자바스크립트 이런 용어도 생소한데혹시 웹기본에 대한 지식을 먼저 쌓고 강의를 따라가야하는걸까요 ..?아니면 우선 계속 따라하면서 익숙해질 수 있을까요 ㅠㅠ 혹시 먼저 선수지식이 필요하면 어떤걸 공부하면 좋을까요
-
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
강의 보고 있는데 고민이 생겼습니다
안녕하세요. 스프링 입문, 핵심원리, HTTP, MVC 1, MVC 2까지 본 학생입니다. (너무 좋은 강의 감사합니다!)진도를 나가는 것에만 치중해서 듣다 보니 진짜 강의만 보고 끝난 느낌이라 수업에서 진행한 프로젝트도 혼자 할 수 없을 것 같습니다.. 하나의 섹션이 끝난 뒤 라이브 코딩한 코드를 읽으면 조금은 이해가 된 것 같지만 막상 혼자 코드를 작성하면 시작부터 막막한 상태니 복습도 어떻게 해야 할지 잘 모르겠습니다.이렇게 본 강의가 쌓이다 보니 이 상태로는 다음 강의를 보면 안 될 거 같아 글을 올려봅니다.이런 경우에는 강의를 다시 보고 다음으로 넘어가는 것이 좋을까요? 아니면 강의에서 진행한 프로젝트를 혼자 도전해 보면서 안 되는 부분을 강의 보고 공부한 뒤 다음 단계로 넘어가는 게 좋을까요?제가 공부는 못하고 코딩은 더더욱 못하는지라 강의를 보고 이렇게 공부하고 복습하면 안 된다는 건 알겠지만 방식을 바꿔서 어떤 방향으로 진행해야 할지는 잘 모르겠습니다.. 이런 바보 같은 질문 죄송합니다..!!
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
스프링
자바 중급편까지 완강하고 이제 스프링을 들으려고 하는데, 대학생이라 동아리를 들어가서 프로젝트도 하고싶은데 어느정도까지 수강을 해야 스프링을 통해서 웹개발하는 프로젝트를 수행할 수 있는건지 알려주실수 있나요??
-
토비의 스프링 6 - 이해와 원리
실무 하면서, 개발에 대한 흥미가 떨어져가고 있었는데
이 강의 통해서 다시 한번 불태워보렵니다 가즈아~
-
스프링 부트 - 핵심 원리와 활용
스프링 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.스프링 부트만 배워서 개인 프로젝트를 하고있는데 꼭 스프링을 배우고 와서 이걸 들어야할까요? 많은 고민이 됩니다.
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
자바 공부 후 스프링 수업 들을 예정
안녕하세요! 지금 김영한님의 자바 강의를 듣고있는 학생입니다.백엔드가 목표여서 최종적으로 스프링 강의까지 들을 예정인데혹시 자바 강의를 어느 정도까지 듣고 스프링 강의를 시작하는 것이 좋은지 궁금하여 글을 남겼습니다.
-
실전! 스프링 데이터 JPA
jpa 관련 질문
강의를 계속 듣다보면 나오는 jpa 관련 지식들이 나오는데 제가 로드맵을 계속 따라오면서 다 까먹은 거 같아요... 자바 ORM 표준 JPA 프로그래밍 - 기본편 만 들어도 다시 모든 내용이 다 담겨있을까요?
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
권장 수강기간
삭제된 글입니다
-
스프링 핵심 원리 - 기본편
계속 진행해야하나 고민입니다...
스프링 입문 처음으로 한번 다 듣고 스프링 기본편 듣는 중인데 내가 이걸 왜 따라서 만들고 코딩하고 있는지 모르겠고 그냥 영상보면서 계속 따라서 코딩중입니다... 제가 아직 처음이라 그런건지 힘들고 어렵네요 ㅠㅠ
-
스프링 핵심 원리 - 기본편
spring 처음 접근하는 대학생
안녕하세요 현재 3학년에 재학중인 대학생입니다이번 여름방학때 백엔드 자바-스프링으로 진로를 정하고강의를 듣기 시작했습니다. 하지만 김영한님 강의가 1타 강의라고 알고 있는데 전체적인 이론인 의존관계나 컴포넌트, 빈 같은것은 이해가 되지만코드 하나하나가 이해가 가질않습니다. gpt도 이용해서 코드를 분석하고 있는데요시간이 가면 갈수록 강의에서 작성하는 코드가 길어져 분석이 불가능 해지고 있습니다초반엔 이론만을 위주로 이해해도 코드가 어느정도 머리속에 들어왔는데 나중가서 코드를 이해못하니 이론도 이해가 어려워지더군요 ㅠㅠ학교에서는 자바 기본 문법밖에 안배우고 백준을 자바로 풀고 프로젝트도 안해봤는데 지금 제가 이 강의를 듣기에는 너무 이를까요?아니면 제가 이 강의의 코드를 이해하고 코드 작성을 따라가기 위해 도움될만한 방법이 있을지 궁금합니다