묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
저장되는 메모리 위치
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]임베디드 타입을 만들 때 자바 클래스로 만들고, @Embeddable 애노테이션을 붙여서 DB 테이블의 값 타입으로 매핑하는데 그럼 여타 값 타입과 마찬가지로 스택 영역에 저장되는지, 아니면 클래스로 구현되어 힙 영역에 저장되는지 궁금합니다.그리고 임베디드 타입 자체를 클래스가 아닌 구조체나 열거형으로 만들 수 없는지도 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문 도메인 개발-주문 기능 테스트(OrderServiceTest) 오류 문의!!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]<문의사항>3가지 테스트코드부분 모두 어떻게 고치면 좋을지 문의드려요!<상황설명>다음 사진 3장은 OrderServiceTest.java 전체 코드입니다.이 테스트를 Run하면 3 failed, 0 passed가 나옵니다.(1)상품주문_재고수량초과(2)상품주문(3)주문취소에서 에러가 나는데요.에러 메시지가 짧은 (2), (3) 먼저 에러가 어떻게 나는지 첨부합니다.(2) 상품주문-에러메시지(3) 주문취소-에러메시지(1) 상품주문_재고수량초과-에러메시지<전체 에러 메시지>https://drive.google.com/file/d/1KO2cRf7BYzk3khbQRF7pw7Bw1Gz1X8hv/view?usp=sharing
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문취소시 재고 늘어나야함 오류현상
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]https://drive.google.com/file/d/1pI1pZ0tfY6RpJTQPUSY5V6boziC41aAC/view안녕하세요!주문취소시 주문한 수량만큼 재고가 다시 늘어나야한다 부분에서 에러가 계속 생겨서 어디서 코드가 잘못된건지 확인부탁드립니다 ㅜ!! 계속 시도해도 실제값이 2로 나와서요 !
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문취소시 재고 늘어남 오류현상
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]https://drive.google.com/file/d/1pI1pZ0tfY6RpJTQPUSY5V6boziC41aAC/view?usp=sharing안녕하세요! 주문기능 테스트에서 "주문취소"부분에서 에러가 두번째주문취소시 재고가 주문한 수만큼 다시 늘어나야함에서 생깁니다. 어디서 코드가 잘못된건지 확인부탁드립니다ㅜㅜ!
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
memberForm 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 컨트롤러에서 html으로 보내줄 때 memberForm 객체도 같이 넘어가게 되는데, 여기서 memberForm이 dto 개념과 같다고 봐도 될까요?
-
해결됨코드로 배우는 React with 스프링부트 API서버
/api/member/login 404 에러 질문 드립니다.
시큐리티까지 강의를 듣고 혼자 실습 예제 만들어서 회원가입부터 진행하고 있습니다. 강의 따라서 진행할 때에는 잘 됐는데, 지금은 섹션6 시큐리티 부터 따라했는데 /api/member/login 으로 포스트맨이나 웹 브라우저로 접속하면 해당 경로를 찾을 수 없다는 404 에러가 발생하게 됐습니다. ㅠㅠ http.formLogin(config -> config.loginPage("/api/member/login"));강의 따라 진행할 때에도 /api/member/login 컨트롤러는 별도로 없었는데, 지금 왜 갑자기 에러가 발생하는지 궁금합니다 ㅜㅜ
-
미해결실전! 스프링 데이터 JPA
LazyInitializationException에 대해 질문드립니다!
배운것을 바탕으로 개인적으로 게시판을 만들어보는 중입니다. 게시물을 추가할 때 다음과 같은 에러가 발생해서 몇시간째 애를 먹고있는 중입니다.org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.myproject.jpaboard.domain.Member.posts: could not initialize proxy - no Session아무래도 Post(게시물) 엔티티의 연관관계 편의 메서드에서 문제가 발생하는 것 같습니다. 서비스 계층에 @Transactional도 붙여줬음에도 계속해서 문제가 발생해서 질문 남깁니다. 유일한 해결책은 Member의 posts에 EAGER을 붙이는 방법이었습니다. 하지만 이는 적절치 않아보입니다. 어떻게 해야 해결할 수 있을까요.핵심이 되는 코드들을 아래에 추가했습니다. package com.myproject.jpaboard.web.controller; import com.myproject.jpaboard.domain.Member; import com.myproject.jpaboard.domain.Post; import com.myproject.jpaboard.web.SessionConst; import com.myproject.jpaboard.web.form.PostForm; import com.myproject.jpaboard.web.repository.BoardRepository; import com.myproject.jpaboard.web.service.BoardService; import com.myproject.jpaboard.web.service.PostService; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @Controller @RequestMapping("/post") @RequiredArgsConstructor @Slf4j public class PostController { private final BoardService boardService; private final BoardRepository boardRepository; private final PostService postService; /** * 게시물 추가 */ @PostMapping("/new") public String addPost(@SessionAttribute(name = SessionConst.LOGIN_MEMBER, required = false) Member loginMember, @Validated PostForm postForm, BindingResult bindingResult) { log.info("postForm={}", postForm); if (bindingResult.hasErrors()) { log.info("errors={}", bindingResult); return "newPost"; } postService.addPost(postForm, loginMember); return "redirect:/board/list"; } } // Post.java @Entity @Getter @Setter public class Post { @Id @GeneratedValue @Column(name = "post_id") private Long id; private String title; private String writer; @Lob @Column(columnDefinition="LONGTEXT") private String content; @Column(updatable = false) private LocalDateTime createdTime; private LocalDateTime lastModifiedTime; private Long viewCount; @ManyToOne(fetch = FetchType.LAZY) // 다쪽이 연관관계의 주인 @JoinColumn(name = "member_id") private Member member; @Enumerated(EnumType.STRING) private CategoryType category; @OneToMany(mappedBy = "post", cascade = CascadeType.ALL, orphanRemoval = true) private List<Comment> comments = new ArrayList<>(); public Post() {} // 연관관계 편의 메서드 public void setMember(Member member) { this.member = member; member.getPosts().add(this); } @Override public String toString() { return "Post{" + "id=" + id + ", title='" + title + '\'' + ", writer='" + writer + '\'' + ", content='" + content + '\'' + ", createdTime=" + createdTime + ", lastModifiedTime=" + lastModifiedTime + ", viewCount=" + viewCount + ", category=" + category + '}'; } } // Member.java @Entity @Getter @Setter public class Member { @Id @GeneratedValue @Column(name = "member_id") private Long id; private String email; private String password; private String name; @Embedded private Address address; @OneToMany(mappedBy = "member", cascade = CascadeType.ALL) private List<Post> posts = new ArrayList<>(); /** * POST 추가 로직 (도메인 모델 패턴) */ // public void addPost(Post post) { // // // } @Override public String toString() { return "Member{" + "address=" + address + ", name='" + name + '\'' + ", password='" + password + '\'' + ", email='" + email + '\'' + ", id=" + id + '}'; } } // PostService.java @Service @RequiredArgsConstructor @Transactional(readOnly = true) public class PostService { private final BoardRepository boardRepository; private final PostRepository postRepository; /** * 게시물 추가 */ @Transactional public void addPost(PostForm postForm, Member loginMember) { Post post = new Post(); postForm.setCreatedTime(LocalDateTime.now()); // setter로 세팅 post.setTitle(postForm.getTitle()); post.setWriter(postForm.getWriter()); post.setContent(postForm.getContent()); post.setCreatedTime(postForm.getCreatedTime()); post.setCategory(postForm.getCategory()); post.setViewCount(0L); post.setWriter(loginMember.getName()); post.setMember(loginMember); postRepository.save(post); } }
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
Spring Cloud Gateway - Load Balancer 1강 보완 요청
일단 제 환경은 윈도우구요apigateway-service 내의 application.yml 파일의 url를 일반 ip 어드레스가 아닌 loadbalancer 방식으로 변경하여 테스트하면 진행되지 않습니다;트러블슈팅에 장시간이 걸렸는데 혹시나 해서 제 피씨 네임을 인식하지 못하나 해서 hosts 파일에 본인 pc 네임과 127.0.0.1을 추가해주면 됩니다. 만약 네 pc가 '뽀로로'인 경우뽀로로 127.0.0.1을 'C:\Windows\System32\drivers\etc'의 파일에 추가해줍니다.
-
미해결실전! Querydsl
QueryDsl 세팅 관련 질문입니다
clean delete file 이 찾아보니 clean task 실행시 QClass 삭제라고 나와있는데 스프링 부트 3.0 에서는 build->generated->source...annotationProcessor->... 에 QClass 가 생성되는데 왜 스프링 부트 3.0에서 위 clean 부분의 디렉토리가 필요한지 궁금합니다. 또한
-
미해결실전! 스프링 데이터 JPA
@Transaction을 서비스, 리포지토리 계층 모두에 적용해야하나요
Spring Data JPA의 경우 자동으로 @Transaction이 적용되는 것으로 알고있는데, 이를 사용하는 서비스 계층에도 @Transaction을 적용해야하는지 궁금합니다.
-
미해결실전! Querydsl
JPA가 생성해주는 페이징 쿼리 질문 (fetch)
안녕하세요, 스프링부트3.x 와 H2(메모리 모드) 를 사용하고 있습니다.페이징 쿼리가 limit offset 이 아니라 offset fetch 쿼리가 나갑니다.@Test public void paging1() { List<Member> result = queryFactory .selectFrom(member) .orderBy(member.username.desc()) .offset(1) //0부터 시작(zero index) .limit(2) //최대 2건 조회 .fetch(); assertThat(result.size()).isEqualTo(2); }스프링부트2.x 로 테스트를 해보니 limit offset 으로 나가는데 혹시 버전이 올라가면서 최적화를 해주는걸까요?그렇다면 fetch 가 더 성능이 좋다는 이야기가 되는걸까요? 항상 감사합니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
준영속 상태와 1차캐시에 올리지 않은(persist 하지 않은) 상태의 차이
detach 메서드를 통해 준영속 상태로 전환 한다고 하였는데,강의에서는 준영속 상태란 더이상 영속성 컨텍스트에서 관리되지 않는 상태라고 하였는데 persist하기 전과 동일한 상태가 되는 것 인지 아니면 다른 차이가 있는지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
강의 테스트 중 문제 발생
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의 내용대로 진행하다보면 MEMBER_SEQ관련 에러가 발생하여 테스트가 실패하게 됩니다. https://drive.google.com/drive/folders/1ampDgfCc13Ehn8CIPWPynBxaQC6NVTFc?usp=drive_link 프로젝트 소스 확인 부탁드립니다. h2는 2.2.224버전 설치되어있습니다.
-
미해결Practical Testing: 실용적인 테스트 가이드
@SpringBootTest 여러 개 사용 시 데이터 남아있는지 여부 문의
안녕하세요. 프로젝트 내에서 통합 테스트를 위해서 @SpringBootTest를 사용한 여러 테스트 코드를 작성하였습니다.예를 들어 아래와 같이 별개의 2개 테스트 코드에는 각각 school table의 값을 생성 및 조회하는 코드가 들어있습니다.@SpringBootTest @Transactional class aTest { // JPA 사용해서 school Table의 data 생성/조회 } --------------------- @SpringBootTest @Transactional class bTest { // JPA 사용해서 school Table의 data 생성/조회 } 위와 같이 테스트 코드를 작성하고 aTest.java 에서 school table에 3개의 데이터를 넣은 경우, bTest.java 에서 school 테이블의 값을 읽었을 때, aTest.java에서 넣은 값은 지워지는 것인지요? 아니면 그대로 남아 bTest.java 에서 조회가 가능한 것인지요?@Transactional이 들어가 있는 경우 데이터가 rollback 되는 것으로 알고 있어서, bTest.java에서 읽었을 때는 빈 테이블이 있을 것으로 예상했는데, 테스트를 해보면 School table의 id 값(자동 증가하는 값)이 bTest.java에서 처음 읽었을 때 4로 보이는 현상이 있어서 질문을 드립니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
문제 3번 도대체 어떻게 하는건가요??
public List<FruitAmount> FruitAmount(String name){ String sql = "select " + "sum(case when is_sale = false then price else 0 end) as salesAmount, " + "sum(case when is_sale = true then price else 0 end) as notSalesAmount " + "from fruit where name = ?"; return jdbcTemplate.query(sql,new Object[]{name},(rs, rowNum) -> new FruitAmount( rs.getString("name") ) ); }가장 어떻게 할지 모르겠는건getMapping 사용하면서 매개변수를 받는법을 모르겠습니다... 힌트가 될 강의라도 알려주시면 감사해요
-
미해결코드로 배우는 React with 스프링부트 API서버
csrf disable 의 대안책에 대해 질문드립니다.
스프링 시큐리티를 학습한 지 얼마 안되서 부족한 부분이 많아서 궁금한 점이 있어서 질문드립니다.csrf 를 disable 으로 설정하고 JWT 토큰을 활용하여 엑세스 토큰 유효 시간을 짧게(10분 이면 괜찮을까요..?)설정과 함께 리프레쉬 토큰(30일이면 괜찮을까요..?)을 발급하는 것으로 csrf 공격에 대비가 충분하다고 볼 수 있을까요?그리고 금융권처럼 보안을 강력하게 요구되지 않은 이용자 빈도가 낮은 개인 쇼핑몰 페이지 같은 실무 환경에서 csrf 에 대해 어떻게 대안을 세우는 것이 가장 적절하고 보편적인 방법이 될까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
자동으로 테스트 데이터 넣는 방법 강의와 샘플코드 어디를 참고하면 될까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.먼저 죄송합니다. 강의에서 언급된 내용인데 강의를 워낙 뛰엄뛰엄 듣다보니 강사님이 WAS 올라오면서 자동으로 테스트 데이터를 밀어넣는 부분을 설명하신 적이 있는데 해당 강의와 샘플코드에서 참고할 부분 안내 부탁드립니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
7강 application.yml에 문제가 있는거 같습니다...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]현재 구글링 하면서도 진행 해봤지만 다른게 문제인지 h2 console에도 insert 구문이 날라가지 않습니다 ...현재 제가 놓친게 있을까요 ?... 지금 스프링부트 버전은 3.2.5 버전입니다. 자바 버전도 17로 설정되어 있습니다.해당 프로젝트 주소 : https://drive.google.com/file/d/1SbgjH5aDY_j_g07r9_Kmz4Uk-uImcC9L/view?usp=drive_link
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
7강 application.yml에서 막히고 있습니다...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]현재 7강에서 h2에 insert가 안되가지고 구글링 다 하면서 여러 방법을 시도해보았지만 해결이 안되서 강의 진행을 못하고 있습니다. .. 현재 제가 놓친 부분이 있다면 가르쳐주시면 감사하겠습니다.그리고 testMember에 커밋은 구글링 하다가 마지막 방법으로 찾아본거라 이전 방법은 다 해본 것 같습니다.
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
request로 받는것과 long id로 받는것에 차이점이 뭔지 모르겠어요
long id는 특정 필드값만 받는것 이라면 request로 받게되면 1. 모든 필드를 다 받고 2. isUserNotExist 부분에 id를 request.getId()로 바꿔 id만을 호출해서 받을수 있게 하는건가요?