inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

findByName 메소드 작성 질문 있습니다.

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

안녕하세요. 제가 람다랑 optional, 컬렉션 그런부분을 아직 잘몰라서 자바 공부가 더 필요한데요. 이 부분 듣다가 궁금증이 있어서 질문 남기게 됐습니다. - 중점적인 내용은 `findName 메소드를 findById메소드 처럼 구현하면 안되냐`입니다. -> 다른 질문글을 통해 id는 유일한 기본키로 사용되서 중복이 없고, 이름은 중복이 있을 수 있다고 하셨습니다. 제가 코드는 정확히 모르겠지만 영한님의 강의를 들어보며 추측해보면 -> store - 객체 -> , values() - 값들중 -> . stream() - 모두 돌리는데 -> .filter() - 가로안에 있는 조건에 해당하는 값이 걸리면 -> .findAny() -리턴해라 이런 의미의 식 같습니다. 또 filter 안에 있는 람다표현식?은 member를 받아서 받은 멤버 객체의 name이 findByName 메소드 호출시 매개변수로 받은 name과 같은지를 체크한 것 같구요. 여기서 궁금한점이 store의 member를 하나씩 쭉 돌리는데 우리가 매개변수로 넘겨준 name과 같은 member를 모두 optional에 담아서 반환하는건가요? 즉, findById는 중복 없이 Optional에 하나의 Member 객체만 담아서 반환되어 코드를 저렇게 짠 것이고 findByName은 중복이 있을 수 있어, 매개변수로 받은 name과 같은 모든 member 객체를 optional에 담아 반환해주는 코드인건가요?

  • spring
  • spring-boot
  • java
  • MVC
댓글 1 좋아요 5 조회수 495

서버 기동 후 루트 접근 시 `/` AccessDeniedException 질문입니다

미해결

스프링 시큐리티

예제에서는 DB 리소스 설정 이후에도 루트접근이 가능해 보이는데, 저의경우는 접근이 불가능합니다 아래 이미지는 서버 기동 직후, 브라우저를 통해 루트 접근시 차단이 되는 부분에 BreakPoint 를 잡아 캡쳐했습니다. 익명 사용자의 경우에 허용되어야 할 `/` 웹 루트 경로가 Denied 되는 것은 어느 부분이 문제일까요.. DB 연동은 잘 처리가 되었으나 이부분에서 막힙니다. 특별히 설정을 바꾼것이 없는데 DB 연동 처리 이후, 계속 여기서 부터 막힙니다. 어느 부분부터 살펴봐야 해결이 될까요..? 혹시 정상인가요? ( 지난 강의 돌려보다가 문뜩 생각이 듭니다) 혹제 제가 놓친부분에 대해 조언을 구합니다. 읽어주셔서 감사드립니다.

  • spring-boot
  • java
  • Spring Security
Truestar 댓글 5 좋아요 0 조회수 768

send 에 lock걸어 주는 것에 질문있습니다.

미해결

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

wsasend가 멀티쓰레드환경을 보장하지 않아 lock을 걸어준다고 하셨는데 어떤부분을 보장하지 않는 건가요? 버퍼문제라면 혹시 이번 수업의 코드는 임시로 event마다 독립적인 버퍼를 가지게 했으니 lock을 안걸어주어도 되나요? wsarecv 는 멀티쓰레드환경에서 문제가 발생하지 않나요?

  • network
  • MMORPG
  • windows-server
fhan 댓글 1 좋아요 0 조회수 657

일대일: 대상 테이블에 외래 키 단방향 관계를 JPA가 지원하지 않는 이유?

해결됨

자바 ORM 표준 JPA 프로그래밍 - 기본편

안녕하세요 강사님. 그림으로만 봐서는 일대다 단방향 과 비슷한 것 같은데, 왜 일대일: 대상 테이블에 외래 키 단방향 은 JPA가 지원하지 않는지 이해가 잘 안됩니다😭 일대다 단방향 일대일: 대상 테이블에 외래 키 단방향

  • JPA
  • java
만두 댓글 2 좋아요 0 조회수 709

port 에대한 질문..

미해결

모든 개발자를 위한 HTTP 웹 기본 지식

안녕하세요 ㅎㅎ 웹 서버의 경우 포트가 http는 80 https 는 443이라고 하셨는데 , 우리가 유튜브로 음악을 듣는 동시에 네이버로 검색을 한다면 둘다 웹 서버를 이용하는 것이고 창이 2개 띄어져 있을텐데 둘다 80 또는 443으로 접속하는 건가요?(중복으로) 아니면 중복 포트는 불가능하니 다른 포트로 접속을 하게 되는건가요? 예를들어 하나는 80 하나는 xx

  • network
김나노 댓글 1 좋아요 0 조회수 325

패킷 순서에 대해 질문이 있습니다.

미해결

모든 개발자를 위한 HTTP 웹 기본 지식

패킷이 크면 전송할 때 조각내서 보낸다고 이해했습니다. 또한, tcp 에 조각낸 패킷의 순서정보 또한 같이 보내는 걸루요 서버 입장에서 받은 패킷과 tcp 순서 정보를 맞춰서, 순서가 잘못됬다고 패킷을 보낸 클라이언트한테 다시 요청하는 부분의 필요성이 이해가 가지 않습니다. 서버가 조각난 패킷의 순서가 잘못됬다는 걸 인지 했다면, 클라이언트 - 서버간 수많은 노드를 거쳐서 다시 보내는 것보다, 서버 내에서 순서정보를 가지고 패킷을 다시 맞추는게 더 좋은게 아닌 건가요..? 패킷이 크면 클수록 저런 왕복을 여러번 해야할 것 같아서요. http 를 공부하는게 처음이라 잘못된 질문일 수 있습니다.

  • network
ryu 댓글 1 좋아요 1 조회수 248

DIR 입력시 Desktop이 없습니다.

미해결

문과생도, 비전공자도, 누구나 배울 수 있는 파이썬(Python)!

안녕하세여. Jupyter 실행하기 부분에서. 기본위치를 Desktop 으로 하고 Python_class로 기본 위치를 설정 해주셔서 보여주시는데 제 PC같은경우에는 초기 화면에서 DIR를 입력시 Desktop 폴더가 아예 존재하질 않습니다. 이럴경우 어떻게 하면 좋을까요?

  • python
구제남(jenam) 댓글 2 좋아요 0 조회수 376

회원 리스트가 안떠요 ㅠㅠ

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

목록페이지를 그냥 들어가면 # 이름 이렇게 잘 뜹니다. 하지만 회원등록을 하고 난 후 회원목록에 들어가면 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateProcessingException: Could not parse as expression: "${member.id" (template: "members/memberList" - line 19, col 15)] with root cau member.id 를 찾을수없다고 나옵니다 ㅠㅠ

  • MVC
  • spring
  • java
  • spring-boot
부산해미 댓글 1 좋아요 0 조회수 263

부트스트랩 관련 질문

미해결

Do It! 장고+부트스트랩: 파이썬 웹개발의 정석

근데 강의에서 부트스트랩 4.x 버전을 사용하시는 이유가 있으신가요? 제 개인 프로젝트 사이트에서는 부트스트랩 5.x 버전을 적용하고 싶거든요.

  • bootstrap
  • python
  • docker
  • tdd
  • javascript
  • aws
  • django
  • HTML/CSS
댓글 1 좋아요 0 조회수 335

SECRET_KEY 적용 문제

미해결

작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지

안녕하세요 강의 중 잘 안되는게 있어서 질문드립니다. 강의를 따라하는 중 .env에 SECRET_KEY값을 담아서 사용하는데 다음과같은 에러가 발생합니다. C:\Users\deokpro\Desktop\Django\venv\lib\site-packages\environ\environ.py:628: UserWarning: C:\Users\deokpro\Desktop\Django\pragmatic\pragmatic\.env doesn't exist - if you're not configuring your environment separately, create one. warnings.warn( Traceback (most recent call last): File "C:\Users\deokpro\Desktop\Django\venv\lib\site-packages\environ\environ.py", line 273, in get_value value = self.ENVIRON[var] File "C:\Users\deokpro\AppData\Local\Programs\Python\Python39\lib\os.py", line 679, in __getitem__ raise KeyError(key) from None KeyError: 'SECRET_KEY' ........ django.core.exceptions.ImproperlyConfigured: Set the SECRET_KEY environment variable print문으로 env('SECRET_KEY')를 찍어보면 값이 정상적으로 들어오는게 확인되는데 python manage.py runserver만 하면 에러가 발생합니다. 혹시 해당내용 관련해서 조언을 구하고자 질문드립니다.

  • django
  • docker
  • python
Ducky 댓글 2 좋아요 0 조회수 2015

역할과 구현

해결됨

실전! 스프링 데이터 JPA

안녕하세요. 방학기간을 통해 스프링에 대해 공부하고 있는 대학생입니다. 다름이 아니라 스프링 핵심원리 강의에서 역할과 구현을 분리하라고 배웠습니다. 그래서 만약 '회원 저장소'를 만든다고 하면 pubic interface MemberRepository{ void save(Member member); Member findById(Long memberId); } 을 만들고 필요한 구현체를 따로 만들었습니다. 메모리를 이용한다면 public class MemoryMemberRepository implements MemberRepository { private static Map<Long, Member> store = new HashMap<>(); @Override public void save(Member member) { store.put(member.getId(), member); } @Override public Member findById(Long memberId) { return store.get(memberId); } } 이런 식으로 만들고, 만약 JPA를 이용한다면 public class MemberJpaRepository implements MemberRepository { @PersistenceContext private EntityManager em; public void save(Member member) { em.persist(member); } public Member findById(Long id) { Member member = em.find(Member.class, id); return member; } } 이런 식으로 만들어서 사용했습니다. 여기서 스프링데이터JPA를 사용하기 위해선 인터페이스에 JpaRepository를 상속받아야하는데 그러면 기존에 있던 MemberRepository에 상속받아서 사용하면 되나요? 그런데 MemberRepository에서 JpaRepository를 상속받게 되면 기존에 MemberRepository 구현체들이 JpaRepository까지 모두 구현해야하는 문제가 있고, MemberReposity에서 사용하는 메소드 이름과 JpaRepository에서 사용하는 메소드 이름이 같으면 MemberRepository를 주입받아 사용하는 다른 클래스에도 문제가 발생했습니다. 이래저래 글이 길었지만 그래서 어떻게 스프링데이터 JPA를 사용하면서 역할과 구현을 구분할 수 있을까요?

  • spring
  • JPA
  • spring-boot
  • java
도토리 댓글 1 좋아요 4 조회수 450

p.245 상속관계 맵핑 3가지 방법 질문

미해결

자바 ORM 표준 JPA 프로그래밍 - 기본편

조인/ 단일테이블 / 구현클래스마다 테이블 이 세가지 전략에 대한 소스코드를 교재에서 확인할 수 있는데요 세 전략 모두 Item 클래스를 추상클래스로 선언했음에도 아래와 같은 차이를 보입니다. '조인' / '단일테이블' 의 경우에는 ITEM 테이블이 생성된 반면,[그림7.3, 그림7.4] '구현클래스마다 테이블'에서는 ITEM 테이블이 생성되지 않는 것으로 이해되고 있습니다.[그림 7.5] 왜 이런 차이를 발생시키는 것인지 궁금합니다. 별개로, 강의에서는 '조인'/'단일테이블' 설명하실 때 Item클래스를 추상클래스로 선언하지 않으셔서 이 부분도 혼동을 주고있습니다.

  • JPA
  • java
창신동 장첸 댓글 1 좋아요 0 조회수 230

주문취소 테스트시

해결됨

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문취소쪽 테스트하다가 궁금한점 있어 질문드립니다. 취소할 주문ID를 조회하고 Order order = orderRepository.findOne(orderId); order.cancel(); 로 주문취소하기 전에 orderItems에 값이 넣어져 있는지 모르겠습니다. Order와 OrderItem은 @OneToMany로 기본이 LAZY 로딩이라 orderItems을 직접 호출하기 전까지는 데이터를 조회하지 않는거로 알고 있는데 어떻게 orderItems에 값이 채워져서 취소가 되는지요?... for (OrderItem orderItem : orderItems ) { orderItem.cancel() ; } 저 for문 시점에 데이터를 조회하면 이해하겠는데 디버깅해보면 order를 조회할때 이미 값이 다 채워져 있습니다...

  • 주문취소
  • JPA
  • 웹앱
  • spring-boot
  • java
  • spring
궁그미 댓글 2 좋아요 0 조회수 287

future에서 deferred를 사용하는이유

해결됨

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

future타입을 deferred로 하면 future를 get하는 시점에 future에 바인딩된 함수를 호출한다는건데 그냥 get하는 시점에 해당함수를 바로호출하면 되는거 아닌가요?

  • network
  • MMORPG
  • windows-server
먹물크림빵 댓글 1 좋아요 0 조회수 349

커맨드와 쿼리의 구분 후 쿼리문 한번 더 실행에서의 궁금증...

미해결

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

강의에서 영한님께서는 커맨드와 쿼리를 구분하는 것을 선호하신다고 하셨습니다. 그래서 알아보니 이런걸 CQRS라고 하던데 회원 정보를 update시 update command 메소드 실행 후 보통같으면 update메소드 자체의 반환값으로 member객체나 member id를 받는데, 이것을 명령과 질의를 구분해 memberService.update() 후 memberService.findOne을 실행하면 결과적으로 쿼리문을 한번 더 실행을 하게 되잖아요? update 메소드 내에서도 findOne이라는 메소드를 호출하니깐요. 이렇게 명령과 질의를 분리하였지만 그 대가로 쿼리문을 한번 더 호출하게 된 셈인데 쿼리문을 한번 더 호출해서 명령과 질의를 구분하는 것이 많이 효율적인 패턴인가요?

  • spring-boot
  • java
  • JPA
  • spring
강낭콩 댓글 1 좋아요 2 조회수 343

no-cache부분의 응답에 대해 질문드립니다.

미해결

모든 개발자를 위한 HTTP 웹 기본 지식

no-cache에서 원서버에 요청시 데이터의 변경이 일어나지 않았을시 false로 304를 내보내는걸로 이해했는데요 원서버와의 네트워크 문제로 연결이 안될시 프록시 서버가 오래된 데이터라도 보여주자라고 해서 응답을 내릴시 똑같이 데이터가 변경이 안되었으니 오래된 데이터 즉 브라우저 내의 캐시를 사용하라고 304를 내보내야되는거 아닌가요? 200을 내보내면 데이터가 수정되었다는 뜻이고 원서버로부터 다시 받아야하는거 아닌가요? 이부분이 이해가 안가서 질문드립니다.

  • network
const.takeo 댓글 1 좋아요 9 조회수 288

자바 코드로 직접 스프링 빈 등록하기 강의 질문

해결됨

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

안녕하십니까? 강사님 수업을 듣는 도 중 똑같이 따라 했는데, Error가 발생해서 질문 드립니다. 먼저 SpringConfig.java 입니다. 위의 Error 내용은 필요 Typedms MemoryMemberRepository인데, 제공된 타입이 MemberRepository여서 Error가 나고 있습니다 MemberService.java 입니다. MemoryMemberRepository.java 입니다. 이렇게 수업대로 따라 했는데, SpringConfig에서 Repository부분에서 Error가 나는데, 왜 나는지가 궁금합니다!

  • java
  • spring
  • MVC
  • spring-boot
댓글 1 좋아요 0 조회수 305

빈연결 에러!

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

SpringConfig에서 문제가 있는데 이유가 뭔지 모르겠습니다! Could not autowire. There is more than one bean of 'MemberRepository' type.Beans:memoryMemberRepository (MemoryMemberRepository.java)springDataJpaMemberRepository (SpringDataJpaMemberRepository.java)

  • spring
  • spring-boot
  • MVC
  • java
velo 댓글 3 좋아요 0 조회수 692

Update 할 때 조건검사(price >= 0) 는 어디서 하는게 좋은 방법일까요?

미해결

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

안녕하세요. 너무 좋은 강의 잘 듣고있습니다 !! :) 강의 마지막부분에서 가장 좋은 방법이라고 말씀해주신대로, Service 계층에 ItemUpdateDto 를 추가하고, 엔티티 클래스에 update() 함수도 만들어서 구현을 했습니다. 여기서 한 가지 궁금한점이 생겼는데요, - price >= 0 - stockQuantity >= 0 - name 은 빈 문자열이 아님(StringUtils.hasText == true) 등의 조건을 검사하여 exeception 을 날리거나, update 를 진행하고 싶을 때 조건검사를 어디서 하는 것이 가장 좋은지 고민이 됩니다. 제 생각에는 크게 세가지 방법이 있을 것 같은데요.. 1. Controller 에서 검사하여, 검증된 값만 DTO에 담아서 service 에 전달한다. 2. service 에서 엔티티의 update() 함수를 호출하기전에 검사한다. 3. 엔티티 클래스의 update() 함수 내부에서 검사한다. 세 가지 방법에대해 제가 고민해본 내용을 말씀드리면.. Book 클래스의 removeStock() 처럼 엔티티 내부에서 검사하고, NotEnoughStockException 같은 에러를 날리는 비지니스 로직을 넣어야할까요? (코드에 일관성이 있도록..) --> 3번 그런데, Controller 에서 미리 검사를 하면 굳이 service -> repository 를 타고 내려가서 select 쿼리를 날릴 필요가 없어지기 때문에 성능상 유리할 것 같다는 생각도 듭니다. --> 1번 두 군데에서 다 검사를 하는 것이 좋을까요? 실무에서는 보통 어떤 방법을 채택하는지 궁금합니다 .

  • 웹앱
  • java
  • spring-boot
  • JPA
  • spring
이예슬 댓글 1 좋아요 7 조회수 939

인기 태그

인프런 TOP Writers

주간 인기글