묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 데이터 JPA
dto와 영속성 관리
안녕하세요 스프링 부트 시리즈를 거의 다 들었는데요,엔티티를 영속성 컨텍스트에서 관리하면 1차 캐시가 생겨서 2번째 조회할 때는 db가 아니라 영속성 컨텍스트에서 가져온다고 알고있는데요그래서 공부하면서 스프링 데이터 jpa랑 querydsl로 회원 조회, 수정, 삭제 등 공부하면서 api 호출로 값을 받을 때 dto를 통해서 받는 로직을 짜고 테스트를 했습니다.member1을 읽은 뒤에 db에서 강제로 이름을 member2로 바꾸고 다시 호출했는데 member2로 잘 읽어 오더라고요 member1을 읽어와서 영속성 컨텍스트에 이미 올라있는 정보를 바로 가져올 줄 알았는데 제 예상이 틀렸습니다.이게 엔티티를 직접 조회한게 아니라 dto를 통해 조회해서 그런건가요? 아니면 혹시 제가 뭘 잘못알고 있는 걸까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2데이터 베이스에 데어터가 들어오지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.java 17에 스프링 부트는 3.1.0 버전을 사용중이고h2 데이터 베이스는 최신 버전을 다운 받았습니다.스프링부트 3.0버전 이상은 h2 2.1.214버전 이상 사용하는게 맞나요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
궁금한점
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]영한님 강좌에서 사용했던 소스코드나 교재 내용들 혹시 블로깅 해도되나요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
주문 등록 파라미에 대해서 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]상품 주문시에만 파라미터를 @requestParam으로 받으셨는데 특별한 이유가 있는지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속성 컨텍스트 에러 질문
안녕하세요 스프링 부트 환경에서 JPA 를 쓸때 이해하지 못하는 에러가 나서 질문합니다.현재 서비스와 레포지토리 레이어를 분리해서 사용하고 있고, @Transactional 어노테이션은 레포지토리 클래스에만 적용해 놓은 상태입니다.우선 save 함수와 findOne 함수는 이런식으로 존재합니다.public void save(Lost entity) {em.persist(entity);} public Optional<Lost> findOne(Long id) {return Optional.ofNullable(em.find(Lost.class, id));} Lost 엔티티는 이런식으로 존재합니다 (더 많은 컬럼이 있지만 필요한 것만 적었씁니다)@Data @Builder @AllArgsConstructor @NoArgsConstructor @Table(name = "lost") @Entity @JsonIgnoreProperties({"organization", "postCodeType"}) public class Lost { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "lost_id") private Long id; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "lost_user_id", referencedColumnName = "user_id", insertable = false, updatable = false) @EqualsAndHashCode.Exclude @ToString.Exclude private User user; }근데 서비스 레이어에서 Lost result = lostsRepository.save(LostMapper.INSTANCE.toEntity(lostRequest)); System.out.println(lostsRepository.findOne(result.getId()).get().getUser());이런식으로 findOne을 해서 user 필드를 가져오려고 하면 null 이 뜹니다ㅠㅠ@ManyToOne(fetch = FetchType.EAGER)이 설정도 잘 해줬고, 커밋도 레퍼지토리에서 해서 그러면 user 필드가 채워져서 와야 할텐데 이해가 안됩니다..ㅠ @ToString.Exclude 문제는 아닌게 getUser 을 해서 봤을때도 null 이 뜹니다. 혹시 뭐가 문제일까요? findOne을 쓰는 다른 곳에서는 잘 동작하는데, 저렇게 save 를 한 직후에 save 한 엔티티 아이디로 findOne을 하면 조인한 다른 객체가 null로 뜹니다. 추가로 우선 해당문제는public void save(Lost entity) {em.persist(entity); em.flush(); em.refresh(entity); }이런식으로 바꿔서 해결했습니다.메커니즘이 이해가 안가서 질문드립니다!!감사합니다
-
미해결실전! 스프링 데이터 JPA
h2 데이터 베이스 연결하는데 오류가 있습니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]h2 데이터베이스를 연결하는 도중에 오류가 발생해서 질문드립니다 처음에 jdbc:h2:~/datajpa 이렇게 해서 연결을 성공해서 jdbc:h2:tcp://localhost/~/datajpa 이렇게 url을 입력을 해서 진행을 했는데 connen timed out이 발생을 합니다 datajpa.mv.db 생성된것도 확인을 하고 gitbash로 권한도 바꿔줬습니다!
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
의존성을 분리하는 건 캡슐화를 깼다고 볼 수 없을까요?
07:05 부근에서 메서드 내에 내부 알고리즘을 확인한 시점에서 캡슐화가 깨졌다는 언급을 해주셨습니다.개인적으로 생각했을 때는 의존성을 분리했을 때 또한 로직이 외부(인자)로 노출되므로 이것도 캡슐화가 깨졌다고 볼 수 있는 것 아닐까요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
트랜잭션 커밋시 영속 컨텍스트, 그리고 트랜잭션 커밋과 종료의 차이
트랜잭션이 커밋이 일어나면 영속 컨텍스트가 어떻게 되는지 궁금해서 질문드립니다. 비슷한 질문이 있어 해당 글의 답을 보니, "커밋되는 시점에는 영속성 컨텍스트를 삭제한다."라고 되어있습니다.그런데 어떤 블로그 글에서는 커밋되더라도 영속 컨텍스트의 1차 캐시는 남아있고, 쓰기 지연 SQL 저장소의 내용은 사라진다고 되어있습니다.Q1. 정확히 어떻게 되나요? 그리고 "컨텍스트의 삭제"의 정확한 의미가 이해가 되지않아서 이 부분도 궁금합니다!Q2. 영속 컨텍스트 자체가 삭제되는거라면, 커밋될 때 영속 컨텍스트의 삭제와 엔티티 매니저를 close()할 때 영속 컨텍스트가 닫히는것의 차이가 무엇인지 궁금합니다!Q3. 그리고 트랜잭션 커밋과 종료의 차이가 무엇인지 궁금합니다.찾아보니 "COMMIT을 수행하면 하나의 트랜잭션 과정을 종료하는 것이다"라고 봤는데, 워딩의 차이이지 결국 같은 의미인가요? 아니면 커밋하지않고 트랜잭션이 종료될 수 도 있는건가요?감사합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
영속 컨텍스트에서 flush가 발생하는 위치 혹은 순서
3강 영속성 관리를 공부하다가 flush에 관해 궁금한게있어 질문남깁니다.3강 강의자료에서 21페이지를 보시면 트랜잭션이 커밋될 때, flush가 발생하는것을 설명하면서 '2.flush'가 영속 컨텍스트에서 DB를 향하고있습니다. 그런데 23페이지 변경감지에서 flush가 발생하는것을 설명할때 그림을 보면, '1.flush()'가 바깥에서 영속 컨텍스트를 향하고있고, '4.flush'가 쓰기 지연 SQL 저장소에서 DB를 향하고있습니다. Q1. 전자(21페이지)는 flush가 한 번 발생하는데, 후자(23페이지)는 두 번 발생합니다. 둘 다 커밋할 때 발생하는건데 왜 차이가있는지 궁금합니다. 사실상 후자처럼 두 번 발생하는게 맞다고 보면 되나요? Q2. 변경감지 설명에서의 '1.flush()'가 바깥에서 영속 컨텍스트를 향하고있습니다. 이는 변경감지에서 가장 먼저 flush()가 발생한것인데, flush는 쿼리를 날리며 "영속성 컨텍스트의 변경내용을 데이터 베이스에 반영"하는것이라고 배웠습니다. 그럼 결국 더티체킹이 일어나기 전, 쿼리가 처음부터 날라가는건가요? 그렇다면 사실상 쿼리가 두 번 날라가는 건가요?아니라면 이 '1.flush()'는 뭔가요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
강의를 다 듣고난 후 YAML 설정파일 관련 궁금한 부분이 있습니다.
각 마이크로서비스 내에서도 application.yml을 두고,config service으로 부터 읽어오는 설정파일을 지정할 수 있다는 부분을 강의를 통해 배웠습니다. 1) 제가 궁금한 부분은 애플리케이션 내부 설정파일과 config service가 읽어오는 설정파일에 적는 정보는 어떤 기준으로 나뉘나요? 즉, 어떠한 정보를 애플리케이션 내부 설정파일에 두며, 어떤한 정보는 애플리케이션 내부 보다는 config-service로 부터 읽어들이는 설정파일에 정보를 두게되는 기준이 있으실까요?2) 또 다른 궁금점은 꼭 필요한 설정을 제외하고는 대부분의 설정 정보를 config-service로부터 읽어오는 설정파일에 넣어놔도 괜찮나요?? 감사합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@JoinTable @JoinColum 옵션을 통한 외래키 선언 순서
M:N 관계를1:M과 M:1 관계로 풀어내는 @JoinTable 애노테이션의 옵션중joinColumns와 inverseJoinColumns를 지정하는 구분 기준은 따로 없고두개의 선언을 서로 다르게 선언해도 상관없나요??@JoinTable(name = "CATEGORY_ITEM" , joinColumns = @JoinColumn(name = "CATEGORY_ID") , inverseJoinColumns = @JoinColumn(name = "ITEM_ID") )@JoinTable(name = "CATEGORY_ITEM" , joinColumns = @JoinColumn(name = "ITEM_ID") , inverseJoinColumns = @JoinColumn(name = "CATEGORY_ID") 위와 같이 순서를 다르게 지정하면 JoinTable의 컬럼의 순서만 변경 되는것인가요?두 컬럼의 순서는 인덱스에만 영향을 줄 뿐 데이터 조회결과에는 영향을 미치지 않을거라 예상되는데 맞나요?따라서 다이어그램의 순서상으로 따진다면 CATEGORY_ITEM을 기준으로 ITEM테이블이 먼저 나오고 반대방향이 CATEGORY으로 이해하려고 하였으나 그 반대인거 같습니다.선생님께서 선언하신 순서는 어떤 기준대로 순서를 이해 해야 할까요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
DTO에 관해서 질문드립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]DTO를 만들때강의에서는 하나의 클래스에서 inner 클래스로 DTO를 만드셨는데 실제 실무에서도 이러한 방식으로 하는지 궁금합니다. 그리고 컨트롤러에서 람다와 스트림을 통해서 데이터 정제 하는 로직은 컨트롤러에서 처리해도 상관이 없는지 궁금합니다.
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
19:04 초 where in 쿼리 대신 where array_conatins 쿼리가 나왔습니다. (스프링 부트 3.1)
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]현재 스프링 부트 3.1 로 강의를 따라가고 있습니다.default_batch_fetch_size:10 을 설정해서 나가는 쿼리가 줄어드는 것을 확인했습니다만, 쿼리가 두 개가 아니고 총 세 개가 나왔습니다.023-06-13T23:24:02.666+09:00 DEBUG 68750 --- [nio-8080-exec-5] org.hibernate.SQL : select o1_0.order_id, d1_0.delivery_id, d1_0.city, d1_0.street, d1_0.zipcode, d1_0.status, m1_0.memeber_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name, o1_0.order_date, o1_0.status from orders o1_0 join member m1_0 on m1_0.memeber_id=o1_0.member_id join delivery d1_0 on d1_0.delivery_id=o1_0.delivery_id offset ? rows fetch first ? rows only 2023-06-13T23:24:02.676+09:00 INFO 68750 --- [nio-8080-exec-5] p6spy : #1686666242676 | took 2ms | statement | connection 8| url jdbc:h2:tcp://localhost/~/springbootjpa select o1_0.order_id,d1_0.delivery_id,d1_0.city,d1_0.street,d1_0.zipcode,d1_0.status,m1_0.memeber_id,m1_0.city,m1_0.street,m1_0.zipcode,m1_0.name,o1_0.order_date,o1_0.status from orders o1_0 join member m1_0 on m1_0.memeber_id=o1_0.member_id join delivery d1_0 on d1_0.delivery_id=o1_0.delivery_id offset ? rows fetch first ? rows only select o1_0.order_id,d1_0.delivery_id,d1_0.city,d1_0.street,d1_0.zipcode,d1_0.status,m1_0.memeber_id,m1_0.city,m1_0.street,m1_0.zipcode,m1_0.name,o1_0.order_date,o1_0.status from orders o1_0 join member m1_0 on m1_0.memeber_id=o1_0.member_id join delivery d1_0 on d1_0.delivery_id=o1_0.delivery_id offset 0 rows fetch first 100 rows only; 2023-06-13T23:24:02.681+09:00 DEBUG 68750 --- [nio-8080-exec-5] org.hibernate.SQL : select o1_0.order_id, o1_0.order_item_id, o1_0.count, o1_0.item_id, o1_0.order_price from order_item o1_0 where array_contains(?,o1_0.order_id) 2023-06-13T23:24:02.689+09:00 INFO 68750 --- [nio-8080-exec-5] p6spy : #1686666242689 | took 0ms | statement | connection 8| url jdbc:h2:tcp://localhost/~/springbootjpa select o1_0.order_id,o1_0.order_item_id,o1_0.count,o1_0.item_id,o1_0.order_price from order_item o1_0 where array_contains(?,o1_0.order_id) select o1_0.order_id,o1_0.order_item_id,o1_0.count,o1_0.item_id,o1_0.order_price from order_item o1_0 where array_contains('ar2: ARRAY [CAST(1 AS BIGINT), CAST(2 AS BIGINT), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL]',o1_0.order_id); 2023-06-13T23:24:02.690+09:00 DEBUG 68750 --- [nio-8080-exec-5] org.hibernate.SQL : select i1_0.item_id, i1_0.dtype, i1_0.category_item_id, i1_0.name, i1_0.price, i1_0.stock_quantity, i1_0.author, i1_0.isbn, i1_0.artist, i1_0.etc from item i1_0 where array_contains(?,i1_0.item_id) 2023-06-13T23:24:02.691+09:00 INFO 68750 --- [nio-8080-exec-5] p6spy : #1686666242691 | took 0ms | statement | connection 8| url jdbc:h2:tcp://localhost/~/springbootjpa select i1_0.item_id,i1_0.dtype,i1_0.category_item_id,i1_0.name,i1_0.price,i1_0.stock_quantity,i1_0.author,i1_0.isbn,i1_0.artist,i1_0.etc from item i1_0 where array_contains(?,i1_0.item_id) select i1_0.item_id,i1_0.dtype,i1_0.category_item_id,i1_0.name,i1_0.price,i1_0.stock_quantity,i1_0.author,i1_0.isbn,i1_0.artist,i1_0.etc from item i1_0 where array_contains('ar3: ARRAY [CAST(1 AS BIGINT), CAST(2 AS BIGINT), CAST(3 AS BIGINT), CAST(4 AS BIGINT), NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL]',i1_0.item_id); 수강 중에 제가 따라 작성한 코드를 스프링부트 2.4.1에 그대로 옮겨보니 강의 내용대로 where in 쿼리가 나오는 것을 확인했습니다.스프링부트 버전 차이에서 나오는 쿼리가 달라진 것 같은데, 제 생각이 맞을까요? 답변 확인 : 빠르게 답변해주셔서 감사합니다!!덕분에 array_contains 로 최적화된 이유를 쉽게 이해할 수 있었습니다. (Hibernate에서 최적화를 했었었군요!)아 그리고 강의 내용에서 쿼리 세 개 나온다는 것을 확인했습니다(잘못 본 것에 대해 질문글에서 수정을 해놨어야 했는데 빼놓지 않았었네요 ㅠㅠ)다시 한번 상세한 답변 정말 감사드립니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
스프링부트 버전에 따른 SQL 문이 다른 점 (Alias 유무)
안녕하세요, 스프링부트 3.1로 강의를 듣고 있는 학생입니다.3.1.0 버전에서는 Select 쿼리를 생성할 때 별칭(alias) 없이 생성되었는데JPA hibernate 버전 차이가 원인인 것인가요?문서를 찾아보려고 해도 어떻게 찾아야 할지 감이 오지 않아서 질문드립니다.아래는 MemberServiceTest 회원가입 test 의 로그입니다.3.1.02023-06-13T22:26:00.567+09:00 DEBUG 64058 --- [ Test worker] org.hibernate.SQL : select m1_0.member_id, m1_0.city, m1_0.street, m1_0.zipcode, m1_0.name from member m1_0 where m1_0.name=? 2023-06-13T22:26:00.571+09:00 DEBUG 64058 --- [ Test worker] org.hibernate.SQL : select next value for member_seq2.4.12023-06-13 22:23:43.684 DEBUG 63945 --- [ Test worker] org.hibernate.SQL : select member0_.member_id as member_i1_0_, member0_.city as city2_0_, member0_.street as street3_0_, member0_.zipcode as zipcode4_0_, member0_.name as name5_0_ from member member0_ where member0_.name=? 2023-06-13 22:23:43.691 DEBUG 63945 --- [ Test worker] org.hibernate.SQL : call next value for hibernate_sequence아래는 각 로그가 출력할 때 사용한 파일입니다.2.4 버전https://drive.google.com/file/d/1BhS1ZjixkOKzQxrEaSLGu0o6tWGhRLr_/view?usp=sharing3.1 버전https://drive.google.com/file/d/1SN6W0iq6X2ALHPNJDUgXuG-ep3-D4UyU/view?usp=sharing
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
3개의 서비스 실행 시 데이터베이스 에러 발생
영상에서 실제 실행할 떄 3개의 서비스인 User, Catalog, Order 서비스를 정상적으로 실행하는 것을 보았습니다.그런데 저는 하나의 서비스를 실행한 후 다른 서비스를 실행하면Unable to open JDBC Connection for DDL execution [Database may be already in use: "C:/경로/ecommerce.mv.db". Possible solutions: close all other connection(s); use the server mode [90020-214]] [n/a]이미 데이터베이스가 연결 중이니 다른 커넥션을 닫거나 서버모드를 사용하라는 에러가 발생합니다.서버모드로 해결했는데 혹시 다음 강의에서 충돌이 발생할 가능성이 있을까요??필자의 정보h2 버전 : 2.1.214h2 데이터베이스 엔진을 다운받아 임베디드 모드로 데이터베이스 생성했습니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
setter 대신 Builder를 사용하여 구성했는데 꼬임에 대해서
setter 사용을 지양하기 위해setter를 사용하지 않고 Builder 패턴으로 구현하여 코드를 작성하던중 OrderService의 order() 메서드를 테스트 하는데 NullPointerException이 발생했습니다.어디서부터 꼬인지를 모르겠어서어디부터 물어봐야할지를 모르겠네요...그래서 이후 강의에서는 setter를 사용하지않고 정석대로 생성자를 이용하는 방식을 사용하는 강의가 있는지 궁금합니다.
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
회원, 주문 엔티티
질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]현재 JPA에 대해 공부하고 있는 학생입니다!!강의를 듣다 궁금한 것이 생겨 질문합니다!!강의에서 Member 테이블과 Order테이블이 다대일 양방향관계로 만들었습니다. 양방향으로 만들었기 때문에 member에서 order을 참조하여 해당 member가 order들을 찾을 수 있는데(member.getOrder()), 수업 자료에 "실무에서는 회원이 주문을 참조하지 않고, 주문이 회원을 참조하는 것으로 충분 하다."라는 말이 있어서 궁금증이 생겼습니다.실무에서는 해당 테이블들을 다대일 단방향으로 연관관계를 매핑한다는 것인데, 그러면 member가 자신이 주문한 것들을 찾고싶을땐 어떤 방식으로 찾나요?
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
Team엔티티의 members선언시 초기화 이유
ArrayList로 List 선언과 동시에 초기화 하는 이유에 대해서 왜 초기화를 하는지?어떤 예외상황을 대비해서 초기화를 하는지 궁금합니다.보통 마이바티스에서는 vo객체에 선언할 때 선언과 동시에 초기화 하지 않고 사용했던거 같아서 질문 드려요어떤 상황에서 add할때 null포인트가 뜨는지 궁금하네요직접 선언만 해놓고 초기화 하지 않고 add해봤는데 null포인트 오류는 발생하지 않고있어서 궁금합니다!!그리고 추가적으로 위와 같이 초기화할 수는 없는건가요?어차피 값이 세팅될 때는 getMembers에 의해서 members를 가져온 후에 add메소드를 통해 추가하는거니까 값을 추가할때만 초기화를 하도록 설정하면 안되는지요..?이렇게 해보면 결과적으로 값이 추가가 되지 않더군요... 그 이유도 잘 모르겠습니다
-
미해결실전! 스프링 데이터 JPA
06:25~07:05 강의 내용 관련 디버깅 하다가 질문 있습니다
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요! 강의 잘 듣고 있습니다.06:25~ 07:05 에서 설명하신 내용을 좀 더 파보기 위해서, 코드를 디버깅 하는 과정에서, 질문이 있습니다.(질문하고자 한 배경이 길어서, 질문의 내용은 맨 마지막에 있습니다!) => 설명해주신 내용을 제가 이해한 대로 적자면, "스프링 데이터 jpa는 NoResultException을 try-catch로 처리해서 null로 반환한다" 라고 이해했습니다.=> 그래서, 위 사진에서 breakPoint를 걸어서 F7로 저 메서드 내부를 파니까, 아래의 결과에서 해답이 있음을 유추했습니다=> 사진에서 retVal이 결국 null 값이며, 따라서 breakPoint인 retVal = invocation.proceed();에서, 강사님이 말씀해주신 "예외 처리 코드"가 있을 것이라고 생각했습니다. (질문)그런데 제가 위 breakPoint의 메서드를 F7로 들어가서 확인했는데 예외처리 코드 관련 부분이 어느 부분인지 잘 몰라서... 해당 부분을 어떻게 debugging으로 잡아낼 수 있을 지 문의드립니다.
-
해결됨Practical Testing: 실용적인 테스트 가이드
setup 해야하는 데이터가 대용량인 경우 테스팅 가이드
안녕하세요. 우빈님양질의 강의 제공해주셔서 감사의 말씀드립니다. 강의를 듣던 도중 실무에서는 어떻게 해결을 할까? 🤔라는 궁금증이 생겨 질문 드립니다. 만약에 테스트 코드 작성시에 setup해야 할 데이터가 대용량이라면실무에서는 주로 어떤 방식으로 테스트 코드를 작성하여 해결하나요? 감사합니다.