inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

h2 연결이 안되는 것 같아요

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 이전에 h2에 username과 password를 설정해버렸는데 h2랑 연결이 안됐는데 이렇게 피드백을 주셔서 해결한 줄 알았고 실행을 했는데 여전히 이렇게 오류가 뜹니다 아예 h2를 삭제하고 다시 다운하는게 나은 선택일까요?

  • java
  • jpa
영한공유 댓글 1 좋아요 0 조회수 418

업데이트는 그냥 dirty-checking을 이용하면 된다고 하셨는데..

해결됨

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 강의에서 '"성능의 경우 조회에서 문제가 생기고, 생성이랑 수정은 성능 문제가 잘 발생하지 않는다"고 한 부분에서 궁금증이 생겼습니다! 업데이트의 경우 JPQL을 사용한 쿼리문을 통해 수정하는 방법이 있고, 엔티티를 싹 불러와서 dirty-cheking을 이용하는 방법이 있는걸로 알고 있습니다. 제 생각에는 뭔가 엔티티를 싹 불러오는 후자의 방법이 더 느릴거 같은데, 왜 후자를 그냥 쓰면 된다고 하신 이유가 궁금합니다! 또 두 방식 중 어떤 상황에 무엇을 써야하는 지 기준이 있다면, 알려주시면 감사하겠습니다!

  • java
  • spring
  • spring-boot
  • jpa
yg04076 댓글 1 좋아요 0 조회수 386

양방향 연관관계시 연관관계 편의 메소드

미해결

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

1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 위 테이블을 보면 Order는 Member, Delivery, OrderItem과 양방향 연관관계이므로 Order 클래스에 연관관계 편의 메소드를 작성했으며, Categroy는 category_item과 양방향 연관관계이므로Category 클래스에 연관관계 편의 메소드를 작성한 것으로 이해했습니다. 그럼 만약ORDERS와 ORDER_ITEM , ITEM 모두가 양방향 연관관계즉, 모든 테이블이 양방향 연관관계라면,어느 클래스에서 연관관계를 작성하면 될까요? 비즈니스적으로 몰리는 엔티티에 작성하면 되는지,아님 애초에 이런 상황이 발생하지 않도록 ORDER_ITEM 과 같은 테이블을 추가해서 단방향 연관관계를 만드는 게 더 좋을까요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
ml505050 댓글 1 좋아요 0 조회수 276

프록시 강의 38:45초 질문드립니다.

미해결

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

Member member1 = new Member(); member1.setUsername("hello"); em.persist(member1); em.flush(); em.clear(); Member reference = em.getReference(Member.class, member1.getId()); // 영속성 컨텍스트에서 가져옴 System.out.println("reference.getClass() = " + reference.getClass()); // em.detach(reference); em.close(); System.out.println("reference.getUsername() = " + reference.getUsername());

  • java
  • jpa
댓글 1 좋아요 0 조회수 262

프록시 객체와 영속성 컨텍스트

미해결

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

강의 내용과 PPT를 봤을 때는 프록시 객체가 영속성 컨텍스트에 저장되지 않는 것으로 느껴졌는데, 찾아보니 프록시 객체도 영속성 컨텍스트에 저장되더라고요. 만약, 같은 PK값을 가진 프록시 객체와 엔티티 객체가 모두 영속성 컨텍스트에 존재하는 상황이라면 어떤 모습으로 각각이 존재하게 될지 알 수 있을까요. PDF의 도식으로 개념을 구조화했는데 이 상황은 잘 그려지지 않아 질문드립니다.

  • java
  • jpa
Jaesang Yoon 댓글 1 좋아요 0 조회수 298

기타 질문

해결됨

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

워밍업 통해 너무 잘 듣고 있습니다 😊 강의 관련 질문은 아니고 기타적인 질문인데요 혹시 이 강의의 후속강의나 스프링 백엔드 관련 강의 더 내실 계획은 없으신가요? 강사님 강의 더 듣고 싶어서요..!

  • java
  • spring
  • aws
  • mysql
  • spring-boot
  • jpa
joyjoy312 댓글 1 좋아요 1 조회수 169

[JPA] 테이블 생성 시, 컬럼 순서

해결됨

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

안녕하세요, 강의를 듣던 중 소소한 궁금증이 생겨 아래와 같은 질문을 남깁니다. 사진을 보시면, 영한님의 JPA 실행 결과에서는 선언한 컬럼 순서대로 테이블의 컬럼이 구성되어 있는 것을 확인할 수 있습니다. 그런데, 제 실행 결과를 확인하면 알파벳 순서대로 컬럼이 구성되어 있더군요. 1-1. 테이블 내 컬럼의 순서를 fix 시킬 수 있는 방법이 존재하는지 1-2. 없다면, 어쩔 수 없는 부분으로서 실제 운영 환경에서는 어떻게 처리하는지 위 두 내용을 질문드립니다. 감사합니다.

  • java
  • jpa
bom 댓글 1 좋아요 0 조회수 2035

현업에서도 TDD를 적극 활용하시는지 궁금합니다.

미해결

Practical Testing: 실용적인 테스트 가이드

우빈님 강의에서 말씀해주신 것 처럼 TDD를 활용하면 테스트 코드를 먼저 작성하기 때문에 테스트에 대한 강제(?)할 수 있으며, 엣지 케이스에 대한 식별을 빨리 할 수 있어 많은 장점이 있다고 생각합니다. 제가 생각했을 때는 TDD를 활용하지 못하는 상황은 시간적 여유가 없을 때라고 생각되는데 이 외 다른 이유도 있을까요? 또한, 우빈님께선 평소 TDD를 활용하여 프로덕션 코드를 작성하는지도 궁금합니다.(개발 기간이 부족할 때도 테스트 코드를 무조건 작성하는지도 궁금합니다 😀 )

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
멍청한청년 댓글 2 좋아요 0 조회수 882

@SQLRestriction으로 논리적 삭제 필드에 대한 tearDown에 대해 궁금합니다.

해결됨

Practical Testing: 실용적인 테스트 가이드

안녕하세요. 강의를 들은 후 테스트 코드 작성을 연습하고 있습니다. 엔티티에서 Soft delete를 위한 필드(isDeleted)가 정의되어 있습니다. Soft delete가 된 데이터는 조회할 필요가 없기 때문에 엔티티에 @SQLRestriction("is_deleted = false") 를 정의했습니다. 테스트 코드에서 해당 어노테이션 때문에 tearDown() 메서드 동작시 문제가 발생했습니다. .deleteAllInBatch() 가 실행될 때, where 조건이 포함되기 때문에 데이터가 삭제되지 않습니다. 상품 목록 조회에 대한 테스트 코드를 작성할 때, soft delete 된 데이터는 빠지고 정상적인 데이터만 조회되는지 보려고 isDeleted = true 값을 준 테스트 데이터도 생성해서 테스트 코드를 작성했습니다. 해당 경우에는 어떤식으로 테스트 코드를 작성해야 할까요? isDeleted = true 테스트 데이터를 만들지 않는다. @SQLRestriction("is_deleted = false") 를 사용하지 않고, 쿼리 조회 시 IsDeletedTrue 조건을 주도록 한다. 위 방법이 아닌 Best Practice가 있는지 궁금합니다. 아래는 테스트 코드 예시 입니다. @SQLRestriction("is_deleted = false") 적용된 엔티티 예시입니다. @Entity @SQLRestriction("is_deleted = false") @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Product extends BaseDateTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "product_id") private Long id; @Column(length = 50) private String name; private Boolean isDeleted; @OneToMany(mappedBy = "product", cascade = CascadeType.ALL) private List<ProductOption> productOptions = new ArrayList<>(); // ... 중략 } @Entity @SQLRestriction("is_deleted = false") @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class ProductOption extends BaseDateTimeEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "product_option_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "product_id") private Product product; @Column(length = 30) private String name; private Boolean isDeleted; // ... 중략 } isDeleted = true 테스트 데이터를 포함한 테스트 코드 예시입니다. class ProductServiceTest extends ServiceTestSupport { @Autowired private ProductRepository productRepository; @AfterEach void tearDown() { productOptionRepository.deleteAllInBatch(); productRepository.deleteAllInBatch(); } @Test @DisplayName("상품 목록을 조회한다.") void getSellingProducts() throws Exception { // given ProductOption productOption1 = createProductOption("옵션1", false); ProductOption productOption2 = createProductOption("옵션2", false); ProductOption productOption3 = createProductOption("옵션3", false); ProductOption productOption4 = createProductOption("옵션4", true); // isDeleted = true ProductOption productOption5 = createProductOption("옵션5", false); ProductOption productOption6 = createProductOption("옵션6", true); // isDeleted = true Product product1 = createProduct("상품1", false, List.of(productOption1, productOption2)); Product product2 = createProduct("상품2", false, List.of(productOption3, productOption4)); Product product3 = createProduct("상품3", true, List.of(productOption5, productOption6)); // isDeleted = true productRepository.saveAll(List.of(product1, product2, product3)); // ... 중략 // when List<product> products = productService.getSellingProducts(); // then // ... 중략 } // ... 중략 } deleteAllInBatch() 메서드가 실행된 후 로그 입니다. Hibernate: delete from product_option where ( product_option.is_deleted = false ) Hibernate: delete from product where ( product.is_deleted = false ) org.springframework.dao.DataIntegrityViolationException: JDBC exception executing SQL [delete from product where (product.is_deleted = false)] [Referential integrity constraint violation: "FKN4HMM6EX1VGN60C6UIQTE400F: PUBLIC.PRODUCT_OPTION FOREIGN KEY(PRODUCT_ID) REFERENCES PUBLIC.PRODUCT(PRODUCT_ID) (CAST(3 AS BIGINT))"; SQL statement: delete from product where (product.is_deleted = false) [23503-224]] [n/a]; SQL [n/a]; constraint ["FKN4HMM6EX1VGN60C6UIQTE400F: PUBLIC.PRODUCT_OPTION FOREIGN KEY(PRODUCT_ID) REFERENCES PUBLIC.PRODUCT(PRODUCT_ID) (CAST(3 AS BIGINT))"; SQL statement: delete from product where (product.is_deleted = false) [23503-224]] 감사합니다.

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
Anonymous 댓글 2 좋아요 0 조회수 1848

QueryDSL 환경 설정 질문

미해결

실전! Querydsl

안녕하세요, QueryDSL 환경 설정 관련하여 질문드립니다. 사진과 같이 QueryDSL 관련한 라이브러리들을 받기 위해 설정했는데요. build.gradle 새로고침을 아무리해도 Gradle -> Tasks -> other -> compileQuerydsl 에서 compileQuerydsl이 보이지 않습니다. 문제가 뭘까요?

  • java
  • jpa
  • querydsl
댓글 1 좋아요 0 조회수 287

연관관계 편의메서드 개인질문

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 있긴한데 좀 다릅니다 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 연관관계 편의메서드와 관련된 질문입니다. public void setMember(Member member) { this.member = member; member.getOrders().add(this); } public void addOrderItem(OrderItem orderItem) { orderItems.add(orderItem); orderItem.setOrder(this); } public void setDelivery(Delivery delivery) { this.delivery = delivery; delivery.setOrder(this); } 공부하던 도중 일대다, 다대일, 일대일 연관관계 매서드가 모두 다른 것을 발견했습니다. 제 궁금증은 다대일에서는 왜 meber.getOrders().add(this)로 세팅하고 일대일이나 다대일에서는 orderItem.setOrder(this)로 세팅하는지 궁금한 것 입니다. 커뮤니티에 관련 질문을 찾던 도중 jpa 기본편을 보시라고 하셨는데 위치를 못 찾겠습니다. 알려주시면 감사하겠습니다. 추가로 제가 자바의 List의 메소드에 대한 이해가 부족해서 모르는가 싶기도 한데 그게 맞을까요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
이용준 댓글 3 좋아요 0 조회수 596

Util성 클래스와의 비교

미해결

Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트

안녕하세요 좋은 강의 만들어 주셔서 감사합니다. 많은 분들이 비슷한 질문을 해주신 것으로 생각되는데, Util성 클래스와 Holder인터페이스를 구현한 구체클래스의 의존주입의 사용 기준에 대해 여쭤보려고 합니다. 강의에서 예로 들어주신 SystemClockHolder의 경우 많은 예제에서 Util클래스로 만들어 사용할 것이라고 생각됩니다. 하지만 이렇게 되면 강의에서 말씀해주신 것처럼 메소드 내부에 사용자가 예측할 수 없는 값이 들어가게 되어 테스트하기 어려워지는 신호가 될 수 있다고 생각합니다. 반면 이러한 Holder가 너무 많아질 경우 서비스 계층에서 의존주입 받아야할 Holder가 너무 많아지지는 않을까 하는 고민도 되었습니다. 강사님께서는 어떤 기준으로 Util클래스와 인터페이스 기반의 의존주입 클래스를 구분하시는지 궁금합니다.

  • spring
  • tdd
  • jpa
  • 소프트웨어-테스트
  • unittest
skehdxhd 댓글 1 좋아요 0 조회수 309

h2 org.hibernate.orm.jdbc.bind: trace관련 질문

미해결

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

강의 보았을때 org.hibernate.orm.jdbc.bind: trace을 추가하면 insert 구문을 트레이스에서 볼 수 있었는데 제가 하니까 다른 형태로 나와서 질문 남깁니다. 이것은 왜 그런 것일까요? 혹시모르니 yml파일 내용도 첨부해 봅니다. spring: datasource: url: jdbc:h2:~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show-sql: true format_sql: true logging: level: org.hibernate.orm.jdbc.bind: trace org.hibernate.SQL: debug

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댕굴댕구리 댓글 2 좋아요 0 조회수 561

SQL 코멘트가 안떠요ㅠ

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의 코드를 똑같이 따라 쳤는데 어디가 잘못된건지 저는 이렇게 안떠요ㅠ https://drive.google.com/file/d/1Z8uINUoGutGqTWrXVTGka5UpbhWsbZMo/view?usp=sharing 링크 공유합니다.

  • java
  • jpa
영한공유 댓글 1 좋아요 0 조회수 278

세타 조인이 안되요

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요?예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의 내용과 그대로 세타조인을 따라 했는데 query나온 것을 보니 cross join이 없어요 그리고 left join도 처음 sql에서는 left join이 나오는데 번역된 sql에서는 left join이 생략되는데 jpa가 최적화를 한 것일까요?

  • java
  • jpa
서민우 댓글 1 좋아요 0 조회수 501

h2 에 저장이 안 되는 거 같은데 문제가 무엇일까요??

해결됨

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

안녕하세요! 강의를 수강하고 있는 수강생입니다. 홈페이지는 정상 작동이 되는데, h2에 mbmer가 저장이 되지 않습니다. 뭐가 문제인지 알 수 있을까요? <MemberFormController>

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
최민영 댓글 2 좋아요 1 조회수 649

Domain model패턴에서 생성메서드 로직 구현시 setter문제 질문있습니다.

해결됨

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

이 부분이 생성메서드 부분인데요.. 대부분 setter를 사용하여 서비스계층에서 해야 할 로직을 엔터티 내에서 처리하고 있는데 영한 선생님께서 강조하시는 setter를 열어두지 않는다면(필요에 따라서는 열어두라고 하셧는데...) 어떤식으로 처리하는지 도저히 감이 잡히지 않네요..ㅜ 이 부분 설명해주시는 강의 챕터가 따로 있을까요?

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
댓글 1 좋아요 0 조회수 252

ORDERS 테이블과 ITEM 테이블

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 배송, 카테고리 추가 - ERD에서, ORDERS 테이블과 ITEM 테이블이 다대다 관계라서 ORDER_ITEM 이라는 테이블을 새로 둔건가요? ORDERS-ORDER_ITEM: 일대다 ITEM-ORDER_ITEM: 일대다 이런 관계로 다대다 관계를 풀어낸게 맞나요?

  • java
  • jpa
kevin.dev201 댓글 2 좋아요 0 조회수 391

CommentService에서 Repository를 호출하지 않는데도

미해결

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

CommentService에서 Repository를 호출하지 않는데도 DB에 저장되는 이유가 뭔가요? @Transactional 어노테이션에 기능이 있는 것 같은데 이런 건 JPA를 좀 더 공부해야 알 수 있는 내용일까요?

  • vue.js
  • aws
  • spring-boot
  • jpa
  • spring-security
두두둥 댓글 1 좋아요 0 조회수 371

javax.validation

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 여기에 질문 내용을 남겨주세요. 전체 코드: https://github.com/StrawberryRabbit0623/Spring_study/tree/section7_halt 스프링 3.2.2 버전으로 강의를 따라하고 있습니다. 스프링 버전 2.x 에서는 아래 starter-validation이 기본으로 지원된다고 알고있습니다. 그런데 문제는 아래 implementation을 작성해도, javax.validation이 인식되지 않습니다. implementation 'org.springframework.boot:spring-boot-starter-validation' 아래 jakarta implimentation 혹은 javax 는 javax.validation을 가능케 해주지만, 정작 @Valid가 전혀 작동하지 않습니다. 정확히는, 회원가입 시 이름란을 비우고 가입해도 전혀 문제 없이 홈페이지로 복귀합니다. 혹시나 하여 @NotBlank로 바꾸어보았지만 여전합니다. implementation 'jakarta.validation:jakarta.validation-api:2.0.2' implementation 'javax.validation:validation-api:2.0.1.Final' 종속성, 코드, 아니면 그 외의 어떤것이 문제인지 모르겠어 질문남깁니다..

  • java
  • spring
  • 웹앱
  • spring-boot
  • jpa
admin 댓글 1 좋아요 0 조회수 2838

인기 태그

인프런 TOP Writers

주간 인기글