inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

repository 작성 시 , spring-data-jpa 의 jpaRepository 와 persistence manager 객체 주입의 선택 기준

해결됨

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

질문 : 실제 작업을 할때, 어떤 경우에 spring-data-jpa의 jpa repository 를 쓰고, 어떤 경우에 EntityManager 를 써야 할까요 ? 안녕하세요. 선생님 이번 강의에 spring-data-jpa 의 jpa repository 를 사용하지 않고 EntityManager 를 주입받아 repository 를 사용 하는 이유는 학습의 목표가 jpa 의 동작을 더 잘 이해하기 위함이라고 들엇습니다.( 출처 : https://www.inflearn.com/questions/549972 ) 그러면 실제 작업을 할때, 어떤 경우에 spring-data-jpa의 jpa repository 를 쓰고, 어떤 경우에 EntityManager 를 써야 할까요 ? 하나의 트랜잭션의 명령을 길게 여러개 쓰고 싶으면 jpa repository 의 함수를 직접 작성한다라고 이해해도 될까요 ?

  • jpa
  • java
  • spring-data-jpa
  • java
  • 웹앱
  • spring
  • spring-boot
  • spring
  • JPA
dankim 댓글 1 좋아요 5 조회수 1821

JPA 테스트하는 과정에서 질문드립니다!

해결됨

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

JPA 강의 17:36에서 콘솔 창에 values 값으로 null 이 들어가게 되는데, 제 출력 화면에는 default 값이 나옵니다. 문제 없는 결과일까요??

  • jpa
  • java
  • spring-boot
  • MVC
  • spring
재영 댓글 2 좋아요 3 조회수 419

예외는 언제 어디서 왜 발생 시켜야하는건가요?

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

게시판을 만들다보니 이러한 의문이 생겼습니다. '내가 지금 여기서 throw new MyException() 을 적는게 맞나?' 저는 예외를 요청에 대한 결과가 정상적이지 않을때 혹은 데이터베이스에 값이 들어가지 않을때 발생시키고 있습니다 하지만 이러한 작업들은 if만 사용해도 충분히 가능하기때문에 어느것까지 로직을 통해 처리하고 또 어디부터 예외를 던지는지에 대한 생각이 들었습니다

  • spring
  • MVC
댓글 1 좋아요 2 조회수 474

@RequestParam("name")

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. MVC 강의를 듣다가 궁금한 부분이 생겨서 질문남깁니다. public String helloMvc(@RequestParam("name") String name, Model model) 에서 @RequestParam("name")를 없애고 서버를 켰습니다. 그랫더니 이렇게 화면이 나오는데요. @RequestParam("name")가 없어도 파라미터를 잘 넘겨받는 것 처럼 보이는데, 이게 왜 필요한 건가요? 단순히 requried=true를 강제하기 위해 사용하는 건가요?

  • mvc
  • spring
  • spring-boot
  • MVC
  • java
Song HyungSeon 댓글 1 좋아요 3 조회수 705

도메인이라는게 정확히 무엇인가요 ??

미해결

스프링 핵심 원리 - 기본편

여기서 말하는 도메인과, 나중에 package로 만드는 domain은 같은 의미인가요 ??? 도메인이 정확히 무엇인지 안와닿아서 알려주시면 감사하겠습니다 !

  • java
  • spring
  • oop
  • spring
  • domain
팡휘 댓글 1 좋아요 3 조회수 914

지금 java 버전이 더 올라갔는데 그럼 수정해야하나요?

미해결

스프링 핵심 원리 - 기본편

java 버전이 지금 2.7.4인데 수업을 2.3.3때 찍으셨는데 그럼 build.gradle에서 수정하고 refresh 눌러줘야하나요?? 저번에 버전 안맞아서 오류났던적이 있어서 질문드려봅니다

  • java
  • spring
  • oop
  • spring
팡휘 댓글 1 좋아요 0 조회수 901

ResultSet Cursor 방식 관련 질문 드립니다.

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

ResultSet 은 내부에 있는 커서 "cursor" 를 이동해서 다음 데이터를 조회할 수 있는데 이 때 전체 결과 데이터는 DB 서버 내부의 메모리에 저장되는지 아니면 애플리케이션 서버 메모리에 저장되는 지가 궁굼합니다.

  • spring
bk8540 댓글 2 좋아요 1 조회수 409

libs파일이 없네요...

해결됨

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

[질문 내용] gradle환경 만드는 과정에서 말씀해주신 대로 윈도우 환경에서 gradle.build를 하여서 build successful이 나왔는데, 자꾸 cd build에 있는 libs파일이 없다고 나오네요. 실제로 들어가보니 libs파일이 없는데 재 설치해도 마찬가지입니다. 환경변수 모두 java11로 되어있고 모든 setting이 java11로 되어있는데도 에러가 나니, 다음 과정으로 넘어갈 수가 없네요..

  • MVC
  • spring
  • java
  • spring-boot
minsubrother 댓글 1 좋아요 1 조회수 1076

1:N 관계에서

미해결

특정 게시글을 조회하고 싶을 때 작성된 댓글들도 같이 보고 싶은데 InvalidDefinitionException: Direct self-reference leading to cycle 관련하여 에러가 뜹니다. @JsonIgnore로 해결하기보다 ResponseDto로 만들어서 entity -> ResponseDto로 변환해서 응답하고 싶습니다. 그래서 ResponseDto를 만들어서 entity -> ResponseDto로 변환했는데 저런 에러가 뜹니다. 어떻게 해결해야하는지 도와주세요 그리고 @Builder를 사용해 빌터패턴을 적용할 때 인자가 많아질 경우 아래처럼 인자가 저렇게 길어지는 것이 맞는 건가요?? @Builder public ArticleResponseDto(Long id, String title, String content, LocalDateTime createdDate, LocalDateTime updatedDate, List<Hashtag> hashtags, List<Comment> comments) { this.id = id; this.title = title; this.content = content; this.createdDate = createdDate; this.updatedDate = updatedDate; this.hashtags = hashtags; this.comments = comments; }

  • spring
  • springboot
jjin 댓글 0 좋아요 0 조회수 245

실무 적용 방법 질문

해결됨

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

이 수업에서 배운 방법을 프로젝트에 적용려고 합니다. item이라는 도메인에 UploadFile 타입으로 두가지 필드를 생성하고 싶은데 이런경우에 연관관계 매핑을 어떻게 해야하는지 궁금합니다.

  • spring
  • MVC
댓글 2 좋아요 1 조회수 513

404에러

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

강사님과 똑같이 했는데 저는 404에러가 났습니다. 신기한건 url창에서 jsessionid값을 지우고 실행하니까 정상적으로 들어가졌는데 왜그런 걸까요? 그리고 tracking-mode=cookie를 설정하니 url창에 jsessionid값이 나오지 않으면서 정상적으로 들어가졌습니다.

  • spring
  • MVC
alrnr3521 댓글 3 좋아요 0 조회수 693

수강 커리 질문드립니다.

미해결

스프링 핵심 원리 - 기본편

안녕하세요. 영한님~ 직장다닐때 패키지로 스프링부트 jpa 실무 로드맵 전부 구매하고 이제 취업준비하면서 시작해보려는데 커리큘럼이 많이 바뀐거 같던데 db1,2편과 고급편까지 꼭 다 들어야 하나요?? 신입으로 취업을 준비중인데 금액적인 부분에서 부담이되서 jpa로드맵에서 해결이 가능하면 결제 안하고 싶은데 답변 부탁드립니다.

  • oop
  • spring
댓글 1 좋아요 1 조회수 306

html에서 form 데이터를 받는 것에 대한 질문입니다.

미해결

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

html에서 form 데이터를 받는 것에 대한 질문입니다. html form 에서 보내는 데이터를 Controller에서 ModelForm으로 받고 있는데 여기에 대한 질문입니다. 저 ModelForm으로 값을 받을수 있는 이유가 form태그 안에 name값을 넣어준 input태그들과 매칭되어서 값을 받아 올수 있는건가요? 아니면 form 태그에 명시한 th:object에 의해서 memberForm형태로 넘길 수 있는건가요?

  • spring
  • spring-boot
  • 웹앱
  • JPA
  • java
minhyuck WOO 댓글 1 좋아요 0 조회수 363

HTML 질문드립니다

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. 강의 내용을 보면 영한님께서 직접 html을 작성하지는 않지만, html 내용이 종종 나오는데 그럼 스프링 강의를 학습하기전에 html도 먼저 학습을 한후에 진행해야할까요??

  • java
  • spring
  • MVC
  • spring-boot
오리쉐리 댓글 1 좋아요 0 조회수 319

appConfig.memberService() 와 getBean(MemberService.class)

해결됨

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 공부 중에 제가 이해한 것이 맞는지 아닌지 의문이 들어 질문 남깁니다. //1번 AppConfig appConfig = new AppConfig(); memberService = appConfig.memberService(); //2번 AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); MemberService memberService = ac.getBean("memberService", MemberService.class); 1번에서 AppConfig 객체를 직접 만들어서 memeberService 를 가져오는 것은 순수 Java 코드로 짜기 때문이고 2번에서 AnnotationConfigApplicationContext 에서 getBean() 메소드를 통해서 가져오는 것은 스프링으로 전환하여 스프링을 이용하는 것이라고 보면 되나요? + ) 클래스 자료형을 다음과 같이 ApplicationContext 로 사용하는 것보다 AnnotationConfigApplicationContext 를 클래스 자료형과 생성자를 쓰는 것은 기능상 이유 때문인가요? ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);

  • oop
  • spring
직선 댓글 1 좋아요 1 조회수 461

AppConfig에서 static 메소드

해결됨

스프링 핵심 원리 - 기본편

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] void configurationTest(){ ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); //구체 타입으로 꺼내면 원래 좋지 않지만 테스트를 위해 Impl를 꺼냄 MemebrServiceImpl memberService = ac.getBean("memberService", MemebrServiceImpl.class); OrderServiceimpl orderService = ac.getBean("orderService", OrderServiceimpl.class); MemberRepository memberRepository = ac.getBean("memberRepository", MemberRepository.class); MemberRepository memberRepository1 = memberService.getMemberRepository(); MemberRepository memberRepository2 = orderService.getMemberRepository(); System.out.println("memberService -> memberRepository1 = " + memberRepository1); System.out.println("orderService -> memberRepository2 = " + memberRepository2); System.out.println("memberRepository = " + memberRepository); Assertions.assertThat(memberService.getMemberRepository()).isSameAs(memberRepository); Assertions.assertThat(orderService.getMemberRepository()).isSameAs(memberRepository); } 위의 configurationTest 중 memberRepository가 같은 인스턴스를 공유하고 있지 않아 원인을 AppConfig에서 찾을 수 있었습니다. 아래 코드와 같이 AppConfig에서 실수로 static을 넣었기 때문인데 static을 사용하여 정적 메소드를 생성할 경우 왜 싱글톤이 성립하지 않는지 관계가 이어지지 않아서 질문드립니다. // 원 코드 @Bean public MemberRepository memberRepository() { System.out.println("call AppConfig.memberRepository"); return new MemoryMemberRepositroy(); } // static @Bean public static MemberRepository memberRepository() { System.out.println("call AppConfig.memberRepository"); return new MemoryMemberRepositroy(); }

  • oop
  • spring
직선 댓글 1 좋아요 0 조회수 494

requestBodyJsonV3 @RequestBody생략시

미해결

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

[질문 내용] 9:30 영한님 말씀 -> requestBodyJsonV3에서 @RequestBody를 생략하면 @ModelAttribute가 적용되고 HelloData에서 setter을 찾으려고 하는데 없어서 값이 세팅이 안된 것 위 글에서 이해되지 않는 부분이 있어서 질문드립니다. 제 생각에는 @ModelAttribute가 프로퍼티를 찾음 -> HelloData 클래스에 @Data 가 적용되어있어서 set, get 존재한다고 생각하는데요 그렇지만 쿼리파라미터 방식 등의 요청이 아니기 때문에 어떤 값을 넣을지 몰라서 값을 넣지 못한다고 고민해봤습니다. 설명해주시면 감사하겠습니다 ㅠㅠ

  • spring
  • MVC
이동현 댓글 2 좋아요 1 조회수 1779

트랜잭션 전파 시 체크 예외를 활용한 복구 처리 관련 문의

미해결

스프링 DB 2편 - 데이터 접근 활용 기술

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] "회원 가입을 시도한 로그를 남기는데 실패하더라도 회원 가입은 유지 되어야 한다." 이 요구사항을 만족하기 위한 방법1.2 이외에 체크 예외를 활용하는 방법3 관련 문의입니다. 방법1. REQUIRES_NEW로 선언해서 물리 트랜잭션 분리 방법2. MemberFacade 구조를 사용하여 물리 트랜잭션 분리 방법3. 체크 예외를 던져서 오류 관련 내용 커밋 (9.스프링 트랜잭 션 이해 / 예외와 트랜잭션 커밋, 롤백 - 활용) 질문. 체크예외를 활용하면 코드에 명시적으로 오류 상황에 대 한 처리를 할 수 있어서 개발자가 오류를 코드 레벨에서 인지 할 수도 있고 오류를 받을 때 로그 상태를 저장 할 수 도 있다는 장점 이 있을 것 같은데 비즈니스 적으로 의미가 있는 경우에는 체크예외를 사용하고 그 외에는 방법1,2를 선택하면 되는지 궁금합니 다. (오류 처리로 서비스 코드를 지저분하게 만들게 하고 싶지 않 는 경우 방법1,2를 사용하는지?) 참고) 아래는 위 내용을 테스트 할 때 작성한 코드 입니다. 체크예외를 사용하는 서비스 메소드 내용 @Transactional public void joinV3(String username) throws Exception { Member member = new Member(username); Log logMessage = new Log(username); log.info("== memberRepository 호출 시작 =="); memberRepository.save(member); log.info("== memberRepository 호출 종료 =="); log.info("== logRepository 호출 시작 =="); try { logRepository.saveV2(logMessage); } catch (Exception e) { log.info("log 로그 저장에 실패했습니다. logMessage={}", logMessage.getMessage()); logRepository.saveV2(new Log("체크예외발생!!")); log.info("joinV3: 체크 예외가 발생하였습니다!!!"); } log.info("== logRepository 호출 종료 =="); } 체크예외를 던지는 logRepository.saveV2 내용 @Transactional public void saveV2(Log logMessage) throws Exception { log.info("log 저장"); if (logMessage.getMessage().contains("로그예외")) { log.info("log 저장시 예외 발생"); throw new Exception("예외 발생"); } em.persist(logMessage); } 회원가입요청 서비스를 테스트하는 코드 내용 /** * MemberService @Transactional: ON * MemberRepository @Transactional: ON * LogRepository @Transactional Checked Exception */ @Test void recoverCheckedException_success() throws Exception { // given String username = "로그예외_outerTxOn_fail"; String errorUsername = "체크예외발생!!"; // when memberService.joinV3(username); // then: member 저장, log 오류내용 저장 assertTrue(memberRepository.find(username).isPresent()); assertTrue(logRepository.find(errorUsername).isPresent()); }

  • 트랜잭션
  • spring
  • rollback-only
  • 체크예외
YUNHA PARK 댓글 1 좋아요 3 조회수 657

인기 태그

인프런 TOP Writers

주간 인기글