inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

필드에 있는 컬렉션을 초기화 시키는 이유가 뭔가요?

미해결

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

List<Order> orders = new ArrayList<>(); 이렇게 컬렉션만 초기화 해주는 이유가 궁금합니다. 단순히 NPE 방지를 위해서인가요? 그렇다면 왜 래퍼 클래스는 초기화 하지 않나요?

  • java
  • spring-boot
  • 웹앱
  • JPA
  • spring
Gareeo 댓글 1 좋아요 1 조회수 1951

강의 업로드 일정 질문있습니다.

미해결

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

영한님 강의 매우 잘 듣고 있습니다. 9월까지 모든 강의를 다 들을 것 같은데 혹시 "스프링 DB 접근 기술"과 "스프링 부트"는 언제 쯤 나오나요? 감사합니다.

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

이 강의를 다 들은 후 어떤 로드맵을 따라갈까요?

미해결

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

이 강의를 들으며 스프링을 처음 공부해봤습니다. 이 강의를 다 들은 후 [스프링 완전 정복]로드맵을 들을지 [스프링부트와 JPA 완전 정복]을 들을지 고민이 되는데, 추천해주실 수 있나요? 현재 저의 상황을 말씀드리자면 이 강의를 듣기 전 장고로 간단하게 개인 프로젝트를 해본 적이 있습니다. 규모는 크지 않고 간단한 CRUD 정도 해봤습니다. 현재 앱개발 외주를 받았는데, UI를 만드는 사람은 따로 있고 저는 백엔드 서버만 개발하면 됩니다. (외주 개발 기간은 2달 +@ 입니다. 기능은 로그인, 회원가입, 결제.. 등이 있고 택배 어플과 유사한 기능을 하는 앱입니다) 이런 상황을 전체적으로 고려했을 때 어떤 로드맵이 더 좋을까요? 참고로 김영한님의 모든 강의는 이미 구매했습니다.

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

@EmbeddedId 관련 질문

미해결

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

안녕하세요 선생님, DDD 공부하면서 적용해보던 중 JPA 관련 궁금한 점이 생겨 질문드립니다. 애그리거트 루트에 해당하는 엔티티의 @Id 필드를 아래와 같이 작성하는 것보다, Member 엔티티 @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "members") @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String email; private String password; @Builder public Member(String email, String password) { this.email = email; this.password = password; } } 아래와 같이 값 타입을 만들어 사용하는 것이 의미상 명확하고, 다른 애그리거트에서 해당 애그리거트 루트의 Id를 참조할 때도 직관적이겠다 생각했습니다. MemberId 값 타입 @EqualsAndHashCode @NoArgsConstructor(access = AccessLevel.PROTECTED) @Embeddable public class MemberId implements Serializable { @Column(name = "member_id") private Long id; public MemberId(Long id) { this.id = id; } } Member 엔티티 @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "members") @Entity public class Member { @EmbeddedId @GeneratedValue(strategy = GenerationType.IDENTITY) private MemberId memberId; private String email; private String password; @Builder public Member(String email, String password) { this.email = email; this.password = password; } } 그런데 문제는 @Id에 해당하는 필드에 값 타입을 사용하면 @GeneratedValue가 정상적으로 동작하지 않았습니다. 찾아보니, @Id에 해당하는 필드에 값 타입이 쓰이면 복합키로 인식해 @GeneratedValue를 무시한다는 것을 알았습니다. 제가 여쭙고 싶은 질문은 다음과 같습니다. 1) 위와 같이 애그리거트 루트의 Id를 값 타입으로 만들어 사용할 때, auto_increment 기능 또한 사용할 수 있는 방법이 있는지 궁금합니다. 2) 선생님께서는 위와 같이 값 타입을 생성해 애그리거트 루트의 Id로 사용하는 것에 대해서 어떻게 생각하시는 지 궁금합니다. 항상 좋은 강의 감사합니다.

  • jpa
  • JPA
  • 값타입
  • java
park 댓글 2 좋아요 0 조회수 1120

이해가 안가는 부분이 있습니다.. 선생님들.. 도와주세요..!!

미해결

자바 프로그래밍 입문 강좌 (renew ver.) - 초보부터 개발자 취업까지!!

지금 배우고있는 배열 관련해서 입니다. 영상에서는 아직 Scanner에 관해서는 정확히 알려주지 않았지만 너무 궁금하고, 왜 마지막에 scanner. close(); 를 하는지도 잘 모르겠습니다. 그리고 Scanner scanner = new Scanner(System.in); 이 코드에 적혀있던데, Scanner(System.in) 인지도 잘 모르겠어요 ㅠㅠ 그리고 System.out.printf("%s의 점수를 입력하시오 : " ,name[0]); score[0] = scanner.nextInt();을 사용하던데 nextInt(); 이 부분을 왜 사용하고, 무슨 의미인지 이해가 안갑니다... 정말정말 마지막으로 ㅠㅠ 마지막 출력할 때 System.out.printf("%s 점수 : \t%.2f\n", name[0], (double) score[0]); 이 부분에서 \t%.2f\n 에서 \t은 칸을 띄어 주는거는 알겠고, %.2f 이 부분은 소수점을 두자리까지 보여주겠다는걸로 추측중이긴한데, 아직 잘 모르겠어서... 헷갈립니다..ㅜㅠ \n 이 부분은 개행(?) 으로 알고있는데 정확히 찾아봐도 개행의 뜻을 잘 모르겠고, 개행이란것을 어떨 때 사용하는지도 잘 모르겠습니다 ㅜㅠ printf 일때는 무조건 사용하는건가요?? 그리고 ㅠㅠ system.out.printf("--------------- 평 점" : \t%.2f" , ave); 마지막 이부분에서 평점앞에 ------ 이것들은 왜 붙여주는건가요?? 이제 막 입문이라서 정말 아무것도 몰라서... 궁금한것이 굉장히 많아요..ㅜㅜ 많은 개발자 형누님들... 불쌍한 어린양 한번만 구해주세요.. 부탁드립니다..

  • 자바
  • java
츄르보단캣닢 댓글 1 좋아요 0 조회수 336

Notion 엑세스 질문

해결됨

Java 디자인 패턴

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! PDF 파일에 Notion관련 하이퍼링크가 있어서 들어갔는데, access 권한이 없어서 글을 읽을 수가 없습니다. 혹시 Notion의 Share 기능을 통해 웹 공유 체크하지 않으셨는지 궁금합니다.

  • notion
  • 디자인-패턴
  • access
  • java
Seungwoo Ham 댓글 1 좋아요 0 조회수 285

EntityManager 싱글톤

미해결

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

https://www.inflearn.com/questions/158967 먼저 다른 여기 부분에서 질문이 있습니다. " 스프링 프레임워크는 여기에 실제 EntityManager를 주입하는 것이 아니라, 사실은 실제 EntityManager를 연결해주는 가짜 EntityManager를 주입해둡니다. " 말씀을 하셨는데 풀어서 제가 이해한내용은 가짜로 주입을 하고 실제 비즈니스 로직을 탈때 예시를 들면 사용자A가 사용을 하고 EntityManager 가 실행 될때 실제로 EntityManager를 호출하고 로직이 끝나면 가짜 EntityManager를 주입하고 사용자B가 호출을 하면 가짜 EntityManager가 실제 EntityManager를 호출하여 실행이 되서 싱글톤이긴 하나.. 분기(?) 처리해서 EntityManager를 사용하고 있다라고 이해를 하고 있는데 맞을까요.. 아니라고 하면 풀어서 설명이 가능할까요? 초보적인 질문을 드려서 죄송합니다..

  • 싱글톤
  • java
  • spring-boot
  • JPA
  • spring
  • 웹앱
오개발 댓글 1 좋아요 0 조회수 701

validateDuplicateMember 부분 질문입니다

미해결

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

안녕하세요. 요즘 강사님 덕분에 재밌게 공부하고 있습니다 ^^ 강의 듣다가 궁금한 부분이 생겨서 질문 남기게 되었습니다. 강의 5: 10초 부분에서 findMembers.size() > 0 으로 바꾸는게 좀 더 최적화 될 수 있다고 말씀하셨는데 isEmpty()의 시간복잡도가 O(1)이고 size()는 O(n)으로 알고 있습니다. 그래서 isEmpty()를 주로 썼었는데 단순히 조건에서의 효율만 말씀하신 것이 아니라는 생각이 드네요. 혹시 실제 실무에서는 저런 경우 어떤식으로 최적화 하는지 대략적으로라도 알 수 있을까요?

  • JPA
  • 웹앱
  • spring-boot
  • java
  • spring
이동현 댓글 1 좋아요 1 조회수 363

RequestCache 가 있는 상태에서 뒤로가기 문제

해결됨

스프링 시큐리티

안녕하세요, 강의 너무너무 재밌게 듣고 있는 수강자입니다 :) 오늘 인증 성공 핸들러 강의 듣다가 몇가지 테스트를 해봤는데, 정말 난감한 상황을 마주쳤습니다. 어떤 사용자가 아래처럼 행동한다고 가정하겠습니다. 1. 메인페이지( = "/" ) -> 마이페이지 메뉴 클릭 2. 로그인 화면 뜸 (이때 세션에 RequestCache 가 생성) 3. 뒤로가기 4. 화면 상단의 로그인 버튼 클릭 5. 로그인 화면 뜸 (여전히 세션이 2번의 RequestCache 를 간직함) 6. 로그인을 성공 7. 마이페이지로 이동 이럴 때는 어떻게 해야할지 정말 난감하네요. 그냥 로그인 버튼을 클릭해서 로그인에 성공했으니, 로그인 성공 디폴트 경로인 "/" 로 보내고 싶습니다. 어떻게 하는게 좋을까요?

  • spring-boot
  • java
  • Spring Security
식빵 댓글 1 좋아요 0 조회수 448

연관관계 주인

해결됨

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

안녕하세요 강의를 듣고 있습니다... 기본편에도 보긴봤지만.. 뭔가 한마디로 표현해서 개념을 잡는게 중요한거 같아서요... 제가 공부하고 아는선에서만 나열해봅니다.. 1. 연관 관계 주인만 등록,수정,삭제 할수 있고 주인이 아닌곳은 읽기만 가능하다 여기서 주인이 아닌곳은 mappedBy 한곳이다. 2. 강의중에 자동차를 비유하시는 강의가 있으신데. 자동차와 자동차바퀴가 있을때 1:n 생각을 해보면 자동차는 변경될 필요가 없고 바퀴를 변경해야되는 경우가 있으니 연관 관계 주인이다. 라고 이해를 하면 될까요? N 값이 주인이다 라고 이해를 하고 있습니다

  • jpa
  • spring-boot
  • 웹앱
  • spring
  • JPA
  • java
오개발 댓글 1 좋아요 2 조회수 247

위임하는 클래스 구현 이유

미해결

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

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 상품 서비스는 상품 리포지토리에 단순히 위임만 하는 클래스라고 하셨는데 굳이 구현하는 이유가 있는지 궁금합니다. 감사합니다.

  • spring
  • java
  • 웹앱
  • JPA
  • spring-boot
km54277 댓글 1 좋아요 0 조회수 249

Junit5 의 Assertions.fail 에 대해 질문이 있습니다.

미해결

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

@Test public void 상품주문_재고수량초과 () throws Exception { //Given Member member = createMember() ; Item item = createBook( "시골 JPA" , 10000 , 10 ) ; //이름, 가격, 재고 int orderCount = 11 ; //재고보다 많은 수량 //When assertThrows (NotEnoughStockException. class, () -> { orderService .order( member .getId() , item .getId() , orderCount ) ; }) ; //Then fail ( "재고 수량 부족 예외가 발생해야 한다." ) ; } 안녕하십니까. 김영한님의 강의를 열심히 수강중인 학생입니다. Junit5에 대해 질문이 있어 글을 올립니다. 제가 Junit5를 배워보려고 강의 진행중 Junit4 대신 Junit5 를 써보았습니다. 그런데 Assertions.fail 때문에 위 코드가 자꾸 실패가 뜨더라고요. 제가 생각한 로직은 김영한님 강의에서 처럼 Assertions.assertThrows 안의 로직에서 예외를 던지면 fail까지 내려오지 않고 그대로 테스트가 성공으로 종료되며, 만약 예외를 던지지 않으면 fail까지 내려와 테스트 실패가 나오는 것이었습니다. 어떻게 코드를 수정하면 될까요? ------------------------------------------------------------------------------------------------------------------ 설명이 부족한 것 같아 추가로 남깁니다. 위 코드는 재고보다 많은 수량이 입력됐을때 예외를 제대로 내뱉는지 확인하기 위한 테스트입니다. 만약 예외를 제대로 뱉었다면 김영한님 강의에서처럼 fail() 까지 안넘어가고 assertThrows 에서 테스트가 종료되고 성공으로 반환되어야 했습니다. 그런데 위 코드에서는 코드 진행이 fail까지 내려가고 그대로 실패가 뜨더라고요. Service, repository와 같은 기타 다른 연관 코드들은 김영한님 코드와 동일하게 작성하였으며, fail을 주석처리하고 위 테스트를 돌렸을 경우 성공처리가 됩니다. 상기 목적을 달성하려면 위 코드를 어떻게 수정하면 될까요?

  • junit5
  • java
  • 실패테스트
  • spring-boot
  • spring
  • 웹앱
  • JPA
danaldanalcom3 댓글 4 좋아요 0 조회수 1621

38:45 에서 em.close()를 해도 Lazy 예외가 발생하지 않습니다.

미해결

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

em.detach() 나 em.clear()를 해줄시, 프록시 객체가 영속성 컨텍스트에서 지워져서 이후, 프록시 객체의 메서드를 호출했을때 Lazy 예외가 발생합니다. 하지만 수업에서 하는 것처럼 em.close()를 해도 예외가 발생하지 않고, 실제 객체가 영속성 컨텍스트에 올라와 동작합니다.

  • JPA
  • java
댓글 1 좋아요 2 조회수 230

Casecade

미해결

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

Casecade 옵션은 부모에 걸지 부모가 아닌곳에 걸지 상황에따라 다른건가요 ?

  • JPA
  • spring-boot
  • 웹앱
  • java
  • spring
adamku 댓글 2 좋아요 1 조회수 202

디버깅 방법

미해결

스프링 시큐리티

안녕하세요. 잘 듣고 있습니다. 현재 제가 사용하는 인텔리J에서는 WebSecurityConfigureAdapter.java 디버깅이 안되는데.. (찾아보니 외부 Jar 파일을 디버깅하려면 remote 디버깅을 해야한다는데 이방법으로 하신건가요? ) 인텔리J에서 어떤식으로 설정을 해야 강사님이 하는 것과 같이 디버깅이 되는건가요?

  • java
  • Spring Security
  • spring-boot
공부하는이 댓글 4 좋아요 0 조회수 657

페이징 시도 시 Out of Memory의 원인

미해결

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

안녕하세요, 김영한 강사님. 페치 조인 시 페이징을 시도하면 메모리에서 프로세싱이 이루어지기 때문에 Out of Memory가 일어날 수 있다고 말씀주셨는데요. 이 이유가 정렬 시 추가적인 메모리 공간을 사용하기 때문인가요? 대량의 데이터를 페이징 없이 쿼리하면 메모리를 거치지 않고 결과값을 내려주나요? 페이징 없이 쿼리를 하더라도 메모리를 통한다면 수 많은 데이터를 쿼리하더라도 Out of Memory가 일어날수 있는게 아닌가 싶어서요. 혹시 제가 디비 쿼리 원리를 잘못 이해하고 있는걸까요. 감사합니다.

  • spring-boot
  • java
  • spring
  • JPA
이남규 댓글 1 좋아요 1 조회수 511

Bean 등록시 EntityManager 오류 질문드립니다.

미해결

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

안녕하세요. 핵심원리를 듣고 이번 강의를 들으면서 배운 것을 적용하려고 시도해보았습니다. Service interface와 Repository interface를 생성하여, componentscan을 사용하여 빈을 등록하려고 했습니다. 기존 service와 repository를 Impl로 바꾸어 @Component 어노테이션을 붙여 의존관계를 자동 주입하려고 했습니다. ``` @Component @Transactional public class MemberServiceImpl implements MemberService { private final MemberRepository memberRepository ; @Autowired public MemberServiceImpl (MemberRepository memberRepository) { this . memberRepository = memberRepository ; } ``` @Component public class MemoryMemberMemberRepository implements MemberRepository { @PersistenceContext private final EntityManager em ; @Autowired public MemoryMemberMemberRepository (EntityManager em) { this . em = em ; }@Configuration @ComponentScan ( excludeFilters = @ComponentScan.Filter (classes= Configuration . class ) ) public class AppConfig { } @Test public void 회원가입 () throws Exception{ //given AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig. class ) ; 해당 코드를 테스트를 시도하였지만 No qualifying bean of type 'javax.persistence.EntityManager' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 이라는 오류가 발생하였습니다. 개념이 많이 부족하여 질문을 제대로 했는지도 정확하지않고, 해당 오류가 왜 나는지 잘 모르겠습니다 ㅠㅠ

  • entitymanager
  • java
  • bean
  • 웹앱
  • spring
  • JPA
  • spring-boot
댓글 5 좋아요 0 조회수 6327

회원서비스 테스트 트랜잭션과 entitymanager

미해결

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

강의를 듣고 질문들을 보면서 저나름 정리한 내용인데 확실히 맞는지가 궁금합니다. ! 1. Test에서 데이터변경이 일어나기에 @Transactional 에너테이션으로 트랜잭션시작을 지정한 상황에서 MemberService의 join메서드가 실행되면 join메서드도 @Transactional 에너테이션이 있어도, 동일한 트랜잭션으로 인식한다. (트랜잭션 내부의 트랜잭션이여도 동일한 트랜잭션) 2. 그렇다면 MemberServiceTest 트랜잭션과 MemberService의 트랜잭션이 동일한 트랜잭션이기에 스프링은 동일한 EntitiyManager를 제공하므로, 동일한 영속성 컨텍스트에 접근하기때문에, 엔티티 동일성을 보장한다. (요부분은 궁금한 내용입니다!) 3. spring boot를이용하면 @PersistenceContext로 EntitiyManagerFactory로부터 EntitiyManager를 받아오는것을 지원하는데, spring data jpa를 이용하면 스프링 컨테이너에서 스프링 빈 DI하는것과 같이 생성자주입(여타 다른 주입도 상관없음,, 필드주입,, setter주입)을 통해서 EntitiyManager를 받아올수있다고 하셨는데, 그럼 EntitiyManager가 스프링빈과같이 스프링 컨테이너에 존재한다는 의미인가요??? 항상 잘듣고있습니다. 읽어주셔서 감사합니다.

  • jpa
  • java
  • JPA
  • spring
  • 웹앱
  • spring-boot
염재선 댓글 2 좋아요 2 조회수 327

getReference의 id값 조회시

미해결

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

저랑 비슷한 고민을 하시는분의 질문들을 봤는데 "내부적으로 값을 가지고 있기에 쿼리가 안나간다" 라는 답변을글 보았습니다 ! 1.여기서 내부적이라는게 그냥 순수 자바객체를 뜻 하시는걸까 요?(영속 컨텍스트는 clear로 깨끗해졌지만 자바 객체는 아직 남아있으니) 2. name값도 내부적으로 남아있다고 생각이 드는데 제가 좀 놓친부분이 있을까요?? ㅠㅠ 3. 이미 em.getReference에 파라미터로 id값을 넣었기 때문에 이미 알고있다고 jpa가 인식해서 쿼리를 안내보내는건가요 ??

  • JPA
  • java
원석나 댓글 1 좋아요 0 조회수 212

`익명 사용자` 개념에 대한 질문

해결됨

스프링 시큐리티

`익명 사용자` 라는 것이 그냥 보기에는 접속이 가능한 것처럼 보였지만, 강의와 여러 QnA 를 다시 보다알게된 결론으로 정리를 해보았습니다. Spring Security 에서의 `익명사용자` 개념 정리 인증이 되기 전이나, 이후 의 사용자 모두 유효한 인증토큰을 갖고있지 못하면 `익명 사용자`이다 `익명 사용자`는 로그인이 가능한 경로를 통해 인증허가를 을 받게 될 경우, 일반 사용자로 등극하여, 로그인 접속 및 향후 접속유지가 가능하게된다. 인증을 받지 못한 사용자는 `익명 사용자`로 분류되어, `익명 사용자` 인증 토큰이(인증 객체) 익명 사용자 관리 명목으로 생성되지만, 로그인과 관련된 접근 권한은 없다(세션 생성이 되지않음) -> `redirect /login page` `익명 사용자` 전용으로 발급된 인증토큰을 통해, 향후 `익명 사용자` 접근 여부를 관리 할 수 있다 틀린 부분이 있다면 조언을 구합니다. 감사합니다.

  • java
  • spring-boot
  • Spring Security
Truestar 댓글 1 좋아요 7 조회수 534

인기 태그

인프런 TOP Writers

주간 인기글