묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨실전! 스프링 데이터 JPA
Dto로 매핑을 하는데 오류가 생깁니다.
안녕하세요 강의 잘보고 있습니다.혼자 공부하면서 이것저것 해보고 있습니다.다름이 아니라 DB로부터 DTO로 바로 조회를 하고 싶은데 막상 쿼리를 실행하면 적절한 생성자가 존재하지 않는다고 나옵니다.해당 Dto에 롬복을 이용해서 생성자 어노테이션을 붙여보기도 하고 직접 생성해서 코드를 실행 시켜보기도 하였으나 제대로 동작하지 않습니다. 혹시 한번만 봐주실수 있나요? 환경은 다음과 같습니다.자바 : 17스프링부트 : 3.0.2DB : 마리아DB 파일링크https://drive.google.com/file/d/1mJ4S-I938BXV7dtyono_uZfSXQxKtE8Q/view?usp=share_link
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
@column 어노테이션 관련하여 질문드립니다.
안녕하세요 강사님. 이번 강의에서는 UserLoanHistory 클래스를 @Entity로 사용하는데요, userId, bookName 등 변수에 @column 어노테이션을 붙이지 않은 것을 확인할 수 있었습니다. 저번에 강사님께서 column 어노테이션이 없으면 변수명과 동일한 db 필드에 매핑된다고 하셨습니다. 이번강의에서 코드가 정상적으로 동작하는데 column 어노테이션이 없을때 자바의 camel case 변수가 db의 snake 형태의 이름으로 자동으로 변환되어 쿼리문이 실행되는 건지 궁금합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
devtools관련
devtools 라이브러리 추가 후 Recompile을 통해서 화면이 변경되었는데, 이 프로젝트가 아닌 다른 프로젝트에서도 첫화면이 이프로젝트의 첫화면으로 실해되는데 어떻게 해야하는 건가요??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
CASCADE
안녕하세요 강사님CASCADE 강의를 들으면서 공부 도중 여러가지 테스트를 해보면서 이해가 안되는 부분이 있어서요제가 이해한 내용으로는 CASCADE를 사용하면 Parent 필드에 있는 children 도 연관관계의 주인의 기능을 할 수 있다고 이해했는데요위 코드를 실행한 결과 findChild1은 삭제 되지 않고 db에 남아있었습니다.또한 em.remove(findChild1)을 지우고 list.remove(0)을 넣어도 데이터가 그대로 남아 있었습니다.CASCADE 속성은 ALL으로 사용했습니다.질문 1영속성컨텍스트에 child 객체 두개와 children 내부에 child 객체 두개가 있어서 그런건가요?질문2그리고 고아객체 강의를 보고 이해가 안되는게CascadeType.ALL + orphanRemoval=true 을 쓰는 것과CascadeType.ALL 만 쓰는 것에 차이가 있을까요?
-
미해결스프링 데이터 JPA
<스프링 데이터 Common: 기본 리포지토리 커스터마이징> 에 대한 질문
JpaRepository를 상속 받는 인터페이스 정의@NoRepositoryBean기본 구현체를 상속 받는 커스텀 구현체 만들기@EnableJpaRepositories에 설정repositoryBaseClass기본 리포지토리를 커스터마이징할 때 위와 같은 방법으로 하라고 알려주셨는데요, 인터페이스에서 JpaRepository를 상속받았는데 구현체에서 SimpleJpaRepository<T, ID>를 상속받는 이유를 모르겠습니다. 구현체가 (JpaRepository를 상속받은)인터페이스를 구현하니까 JpaRepository 기능을 사용할 수 있지 않나? 라고 생각했습니다.아마 제가 상속과 구현 개념이 제대로 잡혀있지 않아서 그런 것 같습니다. 설명해 주시면 저에게 많은 도움이 될 것 같습니다. 좋은 강의 만들어주셔서 감사합니다!
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
yml설정 질문입니다.
[질문 내용]회원 목록 조회 강의수강중입니다.어플리케이션을 재시작 할때마다 DB에 테이블이 재생성이 되면서기존 데이터가 사라집니다.yml에 ddl-auto : create설정 때문인 것 같은데,none, 이나 update로 설정하면 테이블의 재생성은 방지가 되는데,최초 구동 시 JPA가 테이블을 생성하는것도 막히는건지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
오류가 뜨는데 어떡게 해결해야 하는지 모르겠어요...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.코드도 pdf에 있는 거 복붙해서 똑같이 따라하고 있는데 오류가 나서요 ㅜㅜ h2 DB도 같이 실행해서 하고 있는 중이에요..😥
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 코드 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.id to load is required for loading; nested exception is java.lang.IllegalArgumentException: id to load is required for loading 오류 발생합니다 코드:package jpabook.jpashop.service; import jpabook.jpashop.domain.Address; import jpabook.jpashop.domain.Member; import jpabook.jpashop.domain.Order; import jpabook.jpashop.domain.OrderStatus; import jpabook.jpashop.domain.item.Book; import jpabook.jpashop.domain.item.Item; import jpabook.jpashop.repository.OrderRepository; import org.junit.Assert; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.transaction.annotation.Transactional; import javax.persistence.EntityManager; import static org.junit.Assert.*; @RunWith(SpringRunner.class) @SpringBootTest @Transactional class OrderServiceTest { @Autowired EntityManager em; @Autowired OrderService orderService; @Autowired OrderRepository orderRepository; @Test public void 상품주문() throws Exception{ Member member=new Member(); member.setName("회원1"); member.setAddress(new Address("서울","강가","123-123")); em.persist(member); Book book=new Book(); book.setName("시골 JPA"); book.setPrice(10000); book.setStockQuantity(10); System.out.println(book.getId()); em.persist(book); int orderCount=2; Long orderId = orderService.order(member.getId(), book.getId(), orderCount); Order getOrder = orderRepository.findOne(orderId); assertEquals("상품 주문시 상태는 ORDER", OrderStatus.ORDER,getOrder.getStatus()); } @Test public void 주문취소() throws Exception{ } @Test public void 상품주문_재고수량초과() throws Exception{ } }
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
logging
로깅에서 이거 자체가 안 나오는데 무엇 때문일까요? 전 이렇게만 나옵니다ㅜㅜyml 복붙했는데도 안됩니다ㅜ
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
일대다 연관관계 referenceColumnName 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)안녕하세요. 다름이 아니라 @JoinColumn 에서는 name 속성으로 외래키 컬럼의 컬럼명을 지정하고, 생략된 referenceColumName 속성을 통해 해당 외래키가 대상 테이블의 어떤 컬럼과 연결되는지 정하는 것으로 알고 있습니다.@OneToMany @JoinColumn(name = "TEAM_ID") private List<Member> members = new ArrayList<>();그런데 일대다 연관관계에서 다음과 같이 일 쪽에서 joinColumn을 넣어줄 경우 referenceColumnName 속성은 디폴트 값으로 어떤 컬럼과 연결되는지 궁금합니다. 영한 선생님의 답변글에서는 디폴트 값으로 해당 필드의 타입을 확인하고 해당 타입의 pk컬럼과 연결시켜준다고 봤는데 위 경우는 List가 나와서 어떻게 되는지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
객체 연관관계를 선택적으로 사용할 수 있는 방법은 없을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]member 을 조회할때 team 을 같이 조회하는 경우와 member 만 조회하는 경우 선택적으로 유연하게 사용가능한 방법이 있을까요?member 목록만 심플하게 사용하고 싶은 경우가 있을것 같은데, 굳이 team 정보가 필요하지 않는 경우에는 불필요하게 조회가 일어날 수 있을것 같아서요 이런경우에는 어떻게 사용하면 좋을지 궁금합니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
엔티티 컬럼의 CamelCase 를 SnakeCase로 매핑해주는 옵션 확인
엔티티내에 컬럼 CamelCase 를 SnakeCase 로 변환해 쿼리하는 옵션이 이거인가요?spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
h2로 테이블 생성이 안됩니다.
모든 클래스에 entity를 넣은 것은 확인했고요 ㄴh2도 켜져있는 거 확인했습니다.스프링부트는 3.0.3버전h2는 2.1.214버전을 사용하고 있습니다.entity도 저렇게 diagram으로 잘 나오는 것을 확인했습니다.application.properties는 다음 사진과 같이 설정해뒀습니다.build파일에 classes에 entity들도 잘 들어가 있고 실행하는데는 에러가 안납니다. 실행시키고 h2에 들어가보면 테이블이 생성이 안돼있고 스프링부트 로그에도 테이블 생성 쿼리가 안보입니다. 뭐가 문제일까요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
application.yml args에러발생이유
강의 잘 듣고있습니다~실습으로 따라하면서 하고있는데 application.yml에서 에러가 발생하는데 왜 그런것일까요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
버전질문
스프링 부트가 현재는 2.7.X 버전 밖에 없어서 그걸로 다운받았는데,버전이 달라서 인지, junit4를 위해를 추가하면 자꾸 에러가 납니다.어떻게 해결해야 하나요? ++ 위 코드를 넣지 않았는데라이브러리에 이렇게 뜨는데 그럼 junit4를 사용할 수 있는 상태인 건가요?~
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
22:05초 실행 관련 질문이 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)22:05초 부분을 보면 Lazy 옵션으로 바꾸고 실행을 해보면 em.find() 로 team 클래스를 찾아보지 않았음에도 team 엔티티에 select 쿼리가 나가는데 왜 해당 쿼리가 발생하는지 궁금합니다. Team findTeam = findMember.getTeam() 을 통해 해당 Team 객체를 얻었으니까 select 쿼리가 나갈 필요가 없는 것 아닌가요?아니면 Team findTeam = findMember.getTeam()을 통해 얻은 해당 Team 객체는 조인을 통해 Id 값만 가지고 있는 비어있는 객체라 select 쿼리가 추가적으로 나가서 해당 객체의 필드값을 채워줘야하는 상태인가요? 만약 이게 맞다면 DB에 외래키가 저장될때는 Id값만 저장하고 다른 값들(name 필드 등등)은 다 날려버리고 저장하게 되는건지 궁금합니다.
-
미해결실전! 스프링 데이터 JPA
스프링 부트 버전에 대한 질문입니다.
학습을 하면서 개인 프로젝트를 진행하려 프로젝트를 생성하였습니다.다음 코드는 프로젝트 설정입니다.plugins { id 'java' id 'org.springframework.boot' version '3.0.3' id 'io.spring.dependency-management' version '1.1.0' } group = 'project' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta' annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" // // 쿼리 파라미터 로그 // implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8' } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') } spring: datasource: url: jdbc:h2:tcp://localhost/~/healthcommunity 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.SQL: debug # org.hibernate.type: trace다음은 애플리케이션 코드입니다. package project.healthcommunity; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class HealthCommunityApplication { public static void main(String[] args) { SpringApplication.run(HealthCommunityApplication.class, args); } } package project.healthcommunity.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @GetMapping("/hello") public String hello(){ return "hello"; } } 위와같이 스프링 빈에 정상 등록되는지 테스트 해보았습니다. 8080포트로 접속하면 정상적으로 오류 페이지가 떴습니다. 하지만 8080/hello로 접속해도 404오류가 발생하였습니다. 한참을 구글링 했지만 해답을 찾지 못했습니다. 그러다 스프링 부트의 버전을 3.0.3에서 3.00으로 바꾸어 보았더니 스프링 빈에 정상적으로 등록되어 조회되는것을 볼수 있었습니다. plugins { id 'java' id 'org.springframework.boot' version '3.0.0' id 'io.spring.dependency-management' version '1.1.0' } group = 'project' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // Querydsl 추가 implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta' annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" // // 쿼리 파라미터 로그 // implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8' } tasks.named('test') { useJUnitPlatform() } clean { delete file('src/main/generated') } 단순히 build.gradle에서 스프링 부트의 버전을 바꾸어주었는데 정상 작동하였습니다. 3.03에서는 컴포넌트 스캔이 정상적으로 작동하려면 어떻게 해야하는지 궁금합니다! 3.03에서는 설정이 변경된 것인가요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
계정과 멤버 도메인 관련
아이디와 비밀번호를 담고있는 계정 도메인과 멤버정보를 담고있는 도메인을 따로 만드는지, 아니면 멤버의 아이디와 비밀번호를 멤버 객체에 포함시켜서 멤버 도메인 하나로 만드는지에 대해서 실무에서는 주로 어떻게 하시는지 궁금합니다.
-
미해결실전! Querydsl
UPDATE 동적쿼리 사용 질문
안녕하세요. 강의 듣고 미니 프로젝트 하며 궁금한 점이 생겨 질문드려봅니다. UPDATE문에서도 동적쿼리를 사용하고 싶어 정적쿼리를 아래와 같이 구현해보았는데 혹시 WHERE절의 BooleanExpression처럼 조금 더 깔끔하게 처리할 수 있는 방법이 있을지 문의드려봅니다. 감사합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
스프링 시큐리티 문의 (webSecurityConfigurerAdapter 취소선)
안녕하세요. 스프링시큐리티 로그인관련 진행하다가 extends webSecurityConfigurerAdapter 가 취소선이 나와서 확인해보니 현재는 사용하지않는다고 알게되었습니다. 나름 바꾸면서 진행중인데authenticationManager() 를 사용하려면 어떻게해야되는지 알 수 있을까요?