묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
1:N 연관관계 매핑 실습쪽 질문
@OneToMany(cascade = CascadeType.ALL, orphanRemoval=true) @JoinColumn(name = "MEMBER_ID") private List<AddressEntity> addressHistory = new ArrayList<>(); 값타입 매핑인 @ElementCollection을 사용하지 않고 1:N + cascade setting으로 풀어라 라고 하신 부분입니다 36:35초 경입니다.이때 @JoinColumn(name = "MEMBER_ID")가 아니라 name="ADDRESS_ENTITY_ID"가 되어야 하는거 아닌가요?ADDRESS_ENTITY_ID 는 물론 @Column을 통해서 어드래스엔티티 id쪽에 이름 설정을 하구요혹시나해서 1:N(비권장 방식) 챕터 강의 부분을 보았는데 반대쪽 테이블 ID명을 속성으로 작성해서... 헷갈리네요
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
중간에 나와있는 1분 미만 수업
로그인 페이지 설정 다음에 나온 저 두 가지 강의는 어떤 내용인걸까요??해당 수업 두 개 때문에 수료기준 미달로 떠서요 ㅠㅠ확인 부탁드립니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
로그가 안찍혀요 ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용 OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended2024-10-03T23:40:00.663+09:00 INFO 9488 --- [ionShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'2024-10-03T23:40:00.665+09:00 INFO 9488 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...2024-10-03T23:40:00.670+09:00 INFO 9488 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.> Task :testBUILD SUCCESSFUL in 4s4 actionable tasks: 1 executed, 3 up-to-date오후 11:40:00: Execution finished ':test --tests "jpabook.jpashop.MemberRepositoryTest.testMember"'. 테스트는 통과하는데 저렇게 뜨면서 로그가 안찍히네요 ㅠㅠ 설정도 줄맞춰서 다 해봤는데 도저히 안돼서 .. 뭐가 문제일까요 ㅠ
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
[군인입니다] 클라우드 환경 gitpod에서 진행하고 있는데, 실행 시 Unable to locate persister 에러가 발생합니다.
<질문요약>Gitpod 환경에서 실습을 진행 중인데, 데이터베이스에 연결은 되지만, 엔티티가 Persist 되질 않습니다. [필자 개발환경]군대 사지방에서 GitPod 클라우드 개발환경에서, VS Code IDEA 기반 Java 프로젝트를 생성해 JPA 기본편 강의를 듣고 있습니다.Gitpod 프로젝트 셋팅 값- Java 17 버전- Gradle java 프로젝트[이슈사항]build.gradle 파일plugins { id 'java' id 'org.springframework.boot' version '3.3.4' id 'io.spring.dependency-management' version '1.1.6' } group = 'com.inflearn' version = '0.0.1-SNAPSHOT' java { toolchain { languageVersion = JavaLanguageVersion.of(17) } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.hibernate:hibernate-core' // JPA 하이버네이트 implementation 'javax.xml.bind:jaxb-api' implementation 'com.h2database:h2' runtimeOnly 'com.h2database:h2' // H2 DB 드라이버 같은 역할 testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } tasks.named('test') { useJUnitPlatform() } persistence.xml 파일<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"> <persistence-unit name="hello"> <properties> <!-- 필수 속성 --> <property name="jakarta.persistence.jdbc.driver" value="org.h2.Driver"/> <property name="jakarta.persistence.jdbc.user" value="sa"/> <property name="jakarta.persistence.jdbc.password" value=""/> <property name="jakarta.persistence.jdbc.url" value="jdbc:h2:~/jpa-basic"/> <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.JtaPlatform" /> <!-- 옵션 --> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.use_sql_comments" value="true"/> <property name="hibernate.hbm2ddl.auto" value="create" /> </properties> </persistence-unit> </persistence> > 위와 같이 build 파일과 resources/META-INF 폴더에persistence.xml 파일까지 셋팅을 해주었습니다.JpaMain 클래스 / Member 클래스 구현한 후,JpaMain 클래스 실행 시EntityManager 로 H2 Database에 Connection은 되지만, 아래와 같은 에러코드로 Persist 가 되지 않습니다. 여건 상 클라우드 환경에서 개발할 수 없기에, 이를 수행할 수 있는 방법을 알려주시면 감사드립니다.
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
페이징관련해서 질문 있습니다
페이징관련해서 오라클에서 원래 엄청 힘들게 쿼리를 짜는 걸 쉽게 바뀌어 이제 setFist , setMax 값만 신경쓰면 된다고 하셧는데 그럼 궁금한 점이 만약에 게시판 같은거 만들 때 페이징 처리를 어떻게 하는지 궁금합니다 그거 관련된 내용이 로드맵에 있나요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
생성메서드에 대한 질문입니다.
제가 강의를 듣다가Order 엔티티의 생성메서드의 파라미터에는 OrderItem의 리스트가 넘어오고,OrderItem 엔티티의 생성메서드의 파라미터에는 Item 객체가 넘어오는데 각각 Order 엔티티의 생성메서드에 OrderItem 리스트가 넘어오는 이유는 주문상품이 있어야 주문이 있기 때문이고, OrderItem 엔티티의 생성메서드에 Item 객체가 넘어오는 이유는 상품이 있어야 주문상품이 있기 때문이라고 이해하면 될까요??
-
해결됨Spring Boot를 활용하여 채팅 플랫폼 만들어보기
강의 들으면서 블로그에 올려도 될까요?
안녕하세요! 제목처럼 강의 내용 들으면서 블로그에 정리하려고 하는데 괜찮을까요? :)
-
해결됨입문자를 위한 Spring Boot with Kotlin - 나만의 포트폴리오 사이트 만들기
환경변수 설정을 yml 아니라 properties로 해도 상관 없나요?
yml과 properties의 차이가 계층구조 표현의 차이만 있는거 같은데 properties로 적용해서 강의를 진행하여도 상관이 없나요?
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
스프링 클라우드가 아닌 다른 방식의 msa 개발 강의문의
이후에 스프링클라우드를 이용하는것이 아나라 쿠버네티스를 이용한 msa 개발 강의를 해주실 의향없나요.
-
미해결Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
CertificationServiceTest에서 MailSender 인터페이스가 아닌 FakeMailSender를 이용하는 것
현재 CertificationServiceTest를 할 때 MailSender를 주입받는 것이 아닌 FakeMailSender를 주입받아서 테스트를 진행하는데MailSender를 만든 이유가 의존성을 역전시키기 위해서 만든 것인데 FakeMailSender를 사용하게 되면 의존성 역전 원칙이 적용된 것이 아니지 않나요???FakeMailSender는 mock으로 사용하고 있지만 구현체이니까 MailSender를 사용해야 되는 것이 아닌가요??그냥 테스트 목적으로 필드 값들이 잘 전달되는지 확인하기 위해서 사용하기 때문에 상관이 없는 건지 궁금합니다. MailSender 인터페이스를 이용한다면 검증 부분에서 다운 캐스팅을 해줘야 하기 때문에 사용하지 않은 건가요???
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
H2 DB에선 컬럼 순서를 임의로 바꿀 순 없겠죠...?
강의 영상에선 깔끔하게 DTYPE 먼저 나오고 ID 순서로 나오는데 실제 실습을 하면 뒤죽박죽이네요...
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
LAZY가 default가 아닌 이유
자바는 왜 XtoOne에 대해서는 EAGER를 기본적용하고, OneToX에는 LAZY를 기본 적용하는 지 알고싶습니다.EAGER로 설정되어있는 경우는 아마 항상 같이 딸려와야 하는 연관관계로 해석하는 듯 한데 지연 로딩을 디폴트로 하는 것이 더 많은 사람들이 원하는 바가 아닐까요?
-
해결됨실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
일대일 관계에서 N+1 문제
안녕하세요 강사님 강의 보면서 많이 배우고 적용해보고있습니다.테스트를 해보던중 이해할수 없는 추가적인 쿼리가 발생해서 질문드립니다.먼저 예약과 리뷰 엔티티 클래스입니다.@Entity @Getter public class Reservation extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "reservation_id") private Long id; ... @OneToOne(mappedBy = "reservation") private Review review; } @Entity @Getter @Table(name = "rental_home_review") public class Review extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "rental_home_review_id") private Long id; @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "reservation_id", nullable = false) private Reservation reservation; private int score; private String content; @Enumerated(EnumType.STRING) private WritingStatus status; } @PersistenceUnit EntityManagerFactory emf; @Test public void 조인_jpql() { String query = "select rh from RentalHome rh join rh.reservations where rh.id = 6486L"; RentalHome rentalHome = em.createQuery(query, RentalHome.class).getSingleResult(); boolean rentalHomeLoaded = emf.getPersistenceUnitUtil().isLoaded(rentalHome); boolean reservationsLoaded = emf.getPersistenceUnitUtil().isLoaded(rentalHome.getReservations()); assertThat(rentalHomeLoaded).isTrue(); assertThat(reservationsLoaded).isFalse(); } @Test public void 패치조인_jpql() { String query = "select rh from RentalHome rh join fetch rh.reservations where rh.id = 6486L"; RentalHome rentalHome = em.createQuery(query, RentalHome.class).getSingleResult(); boolean rentalHomeLoaded = emf.getPersistenceUnitUtil().isLoaded(rentalHome); boolean reservationsLoaded = emf.getPersistenceUnitUtil().isLoaded(rentalHome.getReservations()); assertThat(rentalHomeLoaded).isTrue(); assertThat(reservationsLoaded).isTrue(); }위의 테스트 메서드에서 조인_jpql 쿼리는 의도한대로 테스트 통과가 맞고패치조인_jpql에서도 테스트는 통과하지만 추가적인 쿼리가 발생합니다.Reservation과 Review의 관계를 Lazy로 설정했고Reivew 객체는 사용하지도 않았는데 추가적인 쿼리가 왜 발생했는지 모르겠어서 질문 올립니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
설계에 대한 질문입니다.
강의를 듣고 간단한 게시판을 만들고 있습니다.구현을 하다가 이런식으로 양방향 편의메서드를 작성했습니다.Post(게시글)을 생성할 때 setBoard()를 사용해서 Board.posts 리스트에 생성된 Post 객체를 넣도록 하고 있습니다. public void setBoard(Board board) { this.board = board; if (!board.getPosts().contains(this)) { board.getPosts().add(this); } 여기서 든 고민이 있습니다. 예를 들어 한 게시판에 게시글이 100만개 혹은 엄청난 양의 게시글이 쌓여있다고 가정을 한다면 contains()를 하는 과정이 O(N) 이 걸려 성능이 안좋아질거라고 생각했습니다. 근데 논리적으로 생각했을 때 Board(게시판)에 똑같은 객체(=PK가 같은) Post(게시글) 가 들어갈 일이 있을까? 라는 생각을 해서 굳이 중복 검사하는 로직이 필요하나라는 생각이 들었습니다. 이럴 경우는 어떻게 생각하시나요?
-
해결됨생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현
토큰발행시 500 INTERNAL_SERVER_ERROR
{errorCode: "500 INTERNAL_SERVER_ERROR",errorMessage: "[405 Method Not Allowed] during [POST] to [https://kauth.kakako.com/oauth/token?code=fTm_uxdiNTjsBlzeAOwQfGPMqg6kR0ouuBK8VkuKSBohWDx0skqriAAAAAQKPXObAAABkkMviG3MISgqRbFCUQ&grant_type=authorization_code&client_secret=kGuBVOPHxDwPJpEOJBDo5TtagIjOGLri&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Foauth%2Fkakao%2Fcallback&client_id=8fbba150815fc1d671141795f363410a] [KakaoTokenClient#requestKakaoToken(String,Request)]: [<html> <head><title>405 Not Allowed</title></head> <body> <center><h1>405 Not Allowed</h1></center> <hr><center>openresty</center> </body> </html> ]"} 해당 오류에 대한 원인을 찾지 못하고있습니다.
-
해결됨개발 입문을 위한 실무자가 알려주는 Spring Boot
OTP_ISSUER 가 2번 들어가는 이유 문의
generateQRCodeURL 에서 OTP_ISSUER 가 2번 들어가던데 특별한 이유가 있을까요?
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
안녕하세요. 공부하다가 막히는 부분이 있어서 질문드리는데 질문 내용이 ...
안녕하세요. 이 강의를 마치고 비동기 spring boot를 공부 하고 있습니다. Reactor이라고 부르던데 mvc와 크게 다른거 같지 않는거 같은데 코딩이 생각 보다 어렵네요....mvc랑 코딩 자체가 틀림 ... 솔직히 질문드리기가 너무 죄송합니다. 근데 답변 해줄 분이 안계셔서 ..여기에 질문 드리네요...... 질문 내용은 @Aspect 이딴걸 왜 하는거냐 입니다. class A아래 함수에 주석을 원래 하는거지만 주석을 제거 하려면 이걸 Aspect를 해야한다고 하네요....@GetMapping("/test/mdc") suspend fun testRequestTxid() { // withContext(MDCContext()) { logger.debug { "start MDC TxId" } delay(100) service.mdc() logger.debug { "end MDC TxId" } // } }이과정이 꽤나 복잡합니다. class B처럼요 class BMapping을 대신할 어노 테이션을 만드는거 내용이라고 생각 됩니다.classA에 @GetMapping을 하면 아래 class의 hindMdcContext를 사용하게끔 하는거 같아요...질문 드릴껀 이 과정이 왜 필요한거죠???의도가 잘 파악이 안되서요...trance id를 생성하고 class A가 완전히 처리 될때까지 블러킹 하기 위해서 그런거 같은데 이렇게 까지 해야되나 싶네요... 내용은 아직도 파악 중입니다. ^^ 현제 ProceedingJoinPoint가 뭔지 파악 중에 있고요 ... @Aspect class AspectConfig { @Around(""" @annotation(org.springframework.web.bind.annotation.GetMapping) """) fun hindMdcContext(jp: ProceedingJoinPoint): Any? { return if(jp.hasSuspendFunction) { val continuation = jp.args.last() as Continuation<*> val newContext = continuation.context + MDCContext() val newContinuation = Continuation(newContext) { continuation.resumeWith(it)} val newArgs = jp.args.dropLast(1) + newContinuation jp.proceed(newArgs.toTypedArray()) } else { jp.proceed() } } private val ProceedingJoinPoint.hasSuspendFunction: Boolean get() { val method = (this.signature as MethodSignature).method return KotlinDetector.isSuspendingFunction(method) } }빨리 비동기 강의좀 내주세요 ㅠ.ㅠ 수없는 인강을 들었지만 강사님 만큼 강의 잘하는 강의 못봤어요 ㅠ.ㅠ
-
미해결자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
homebrew로 mysql 설치시 오류
안녕하세요. homebrew를 이용해서 mysql을 설치하려고 했는데 다음과 같은 오류가 떠서 질문글 남깁니다. 혼자 고쳐보려고 해도 인터넷에 레퍼런스가 없네요 .. homebrew 삭제후 재설치도 해봤는데 해결되지 않습니다. 도와주세요.
-
미해결코드로 배우는 React 19 with 스프링부트 API서버
6장 질문
6장 실습중 이미지가 안보이는 이유가 무엇일까요?빠른 답변 좀 부탁드립니다.
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
join의 on절이 제대로 작동하지 않는 것 같습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]team5에 해당하는 member들만 출력이 되어야 할 것 같은데 모든 멤버들 (100개) 가 출력됩니다. 왜일까요..CascadeType.ALL 옵션 사용하였습니다