inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

Error creating bean with name 'dataSourceScriptDatabaseInitializer' 에러

해결됨

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

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Unsatisfied dependency expressed through method 'dataSourceScriptDatabaseInitializer' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.h2.Driver 라는 에러가 나옵니다. 어떻게 해결해야할까요??

  • JPA
  • spring
  • 웹앱
  • spring-boot
  • java
유지훈 댓글 1 좋아요 1 조회수 11172

mvn package 시 다음과 같은 에러가 나시면

미해결

스프링 기반 REST API 개발

Unable to make protected native java.lang.Object java.lang.Object.clone() throws java.lang.CloneNotSupportedException accessible: module java.base does not "opens java.lang" to unnamed module 다음과 같은 에러 나시면 plugin 에 <groupId>org.asciidoctor</groupId> <artifactId>asciidoctor-maven-plugin</artifactId> <version>2.1.0</version> 버전을 최신으로 업데이트 하심 해결됩니다.

  • spring
  • rest-api
  • java
coyg1995 댓글 2 좋아요 0 조회수 788

DTO에 @Getter가 필요한 이유

해결됨

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

OrderDto, OrderItemDto 같은 DTO에 @Getter 가 필요한 이유가 궁금합니다. 또, 요청을 받는 DTO는 요청 받을 필드만 선언하면 되고, 응답용 DTO는 응답하고 싶은 필드만 정의 하여 생성자를 만들면 되는지 궁금합니다.

  • java
  • JPA
  • spring
  • spring-boot
tksrleo123 댓글 1 좋아요 3 조회수 975

Querydsl4RepositorySupport에 @Repository와 @Autowired

미해결

실전! Querydsl

안녕하세요. 강의 잘 보고 있습니다. 궁금한 점이 있습니다. Querydsl4RepositorySupport는 abstract class인데 왜 @Repository를 붙이는건가요? 실체 구체화할 부모 클래스에 @Repository를 붙이면 되는것 아닌가요? Querydsl4RepositorySupport는 abstract class라 객체로 생성이 안되는데 빈으로 등록이 가능한가요? 이어서 setEntityManager에 @Autowired를 붙임으로써 의존성을 주입하고 있습니다. 그때에 entityManager라는 빈을 등록해주겠죠. 그런데 setEntityManager는 언제, 누가 호출하게 되는건가요?

  • java
  • JPA
Louie(루이) 댓글 1 좋아요 2 조회수 751

변수 바로 찾아가는 단축키

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

변수이름 클릭하시고 선언된 곳으로 바로 이동하시던데 단축키좀 알려주세욤

  • java
  • spring-boot
  • MVC
  • spring
이우연 댓글 1 좋아요 1 조회수 823

./h2.sh 실행이 안되네요

미해결

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

1:07분에서 하는 것처럼 똑같이 해서 터미널로 들어가서 bin폴더까지 접근해서 거기서 cat h2.sh를 하면 영상처럼 똑같이 나옵니다. 그래서 다음 단계인 ./ h2.sh 를 했는데 permission denied라는 문구가 출력됩니다. 그래서 sudo ./h2.sh를 할 경우 sudo: ./ h2.sh : command not found 라는 문구가 출력됩니다. h2-1.4.199.jar h2.bat h2.sh h2w.bat a@aui-iMac bin % cat h2.sh #!/bin/sh dir=$(dirname "$0") java -cp "$dir/h2-1.4.199.jar:$H2DRIVERS:$CLASSPATH" org.h2.tools.Console "$@" a@aui-iMac bin % ./h2.sh zsh: permission denied: ./h2.sh a@aui-iMac bin % sudo ./h2.sh Password: sudo: ./h2.sh: command not found 혹시 이럴때는 어떻게 해결해야 되나요?

  • JPA
  • spring-boot
  • spring
  • 웹앱
  • java
Cho Seong Yong 댓글 2 좋아요 0 조회수 1419

주문에서 orderItem

미해결

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

주문하는 메서드에서 주문상품을 생성하는데 여러개의 상품을 주문할 때도 가능한 건가요?? 그럼 itemId가 여러 개 있어야 하는 건 아닌지 궁금합니다.

  • spring
  • JPA
  • java
  • spring-boot
  • 웹앱
jjin 댓글 1 좋아요 0 조회수 442

강의 도중 말씀에 대한 간단한 질문

미해결

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

안녕하세요 강사님! 수업 너무 잘 듣고 있습니다. 다름이 아니라 설명하시는 도중 18:20 가량 부터 잠깐 하시는 말씀에 대해 조금 이해가 덜 된 것 같아서 질문을 좀 드리고 싶어서 글을 남기게 되었습니다. 1. 설계하고 돌려서 테이블 생성된 것을 보고 원하는 대로 만들어졌는지 확인하는 것을 반복하라 >> DB 테이블에 칼럼들 들어간 모습들과 내가 원하는대로 들어갔는지 확인하면서 해라! 라는 말씀으로 이해하면 되는 걸까요? 2. 생성된 것을 그대로 쓰면 안된다(?) >> 제가 실무를 혼자서 진행해보고 DBA 분들과 얘기를 해본적이 없어서 이해가 잘 안됐을 수도 있는데, 혹시 이부분에서 말씀하시는 그대로 쓰면 안된다는게 어떤 부분인지 조금 더 말씀해주실 수 있을까요? Script 란 DB sql 들어가는 글들을 말씀하시는 것 같은데, 해당 SQL 을 따로 뽑아서 한번 쭉 본 후에 JPA DDL-AUTO 기능을 사용하지 말고 직접 DB workspace 같은 공간에 직접 import 를 해주는 방식으로 하라는 말씀이실까요? 도움주셔서 감사합니다!

  • JPA
  • java
  • 웹앱
  • spring-boot
  • spring
강우석 댓글 1 좋아요 2 조회수 240

effectively final 관련 질문드립니다!

미해결

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)

안녕하세요! effectively final 관련 궁금증이 있어 질문드립니다! Java에서 람다 사용시 effectively final 여야지만 되는 이유가 람다 외부 지역변수를 제어하는 스레드와 람다식을 수행하는 스레드가 서로 다를 수 있고, 지역 변수는 스택에 저장되는데 각 스레드가 다르면 서로의 스택을 공유하지 못하기 때문에 값을 복사하여 사용하는데 이 경우 값이 최신값임을 보장하지 못하기 때문이라고 알고 있습니다. Kotlin에서는 effectively final 하지 않아도 되는 이유가 잘 이해가 안가서 질문드립니다! 람다 시작 지점에 참조하고 있는 변수들을 모두 포획한다는 것 이 Java에서와 마찬가지로 복사하여 값을 사용하는 것과는 다른 개념인걸까요?

  • oop
  • java
  • kotlin
luca 댓글 1 좋아요 3 조회수 278

[참고] LTS주기

해결됨

더 자바, Java 8

LTS 주기가 JDK 17이후 2년주기로 전환이 된다고 합니다. https://blogs.oracle.com/java/post/moving-the-jdk-to-a-two-year-lts-cadence 즉, JDK17이후 LTS 버전은 2023년 9월이 될것 같습니다. 학습에 참고겸 달아둡니다.

  • java
양성빈(Robert) 댓글 1 좋아요 0 조회수 492

안녕하세요. 스프링 정복 로드맵 db2편까지 완강하고 수강하는 학생입니다.

해결됨

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

스프링 정복 로드맵 2편까지 완강 후 jpa 활용 1편을 듣고 있는데요. 아무래도 시간이 좀 지난 강의라 db2편에서 들었던 jpa와 jpa 활용에서 듣는 jpa간에 셋팅이 다른 점이 있는데요. (entitymanager에 @persistencecontext 를 달아주시거나, 테스트하시면서 resources에 schema 를 설정하시는 대신 spring.jpa.hibernate.ddl-auto=create 를 설정하시는 등) db2편이 최신이므로, db2편을 기준으로 확장해나가는 편이 나은지 혹은 jpa shop에서 하시는 것을 새로이 기준으로 하면 좋을지 여쭤봅니다! 별개로 강의는 항상 잘 듣고 있습니다. 감사합니다!

  • jpa
  • 셋팅관련
  • java
  • spring
  • database
  • 웹앱
  • JPA
  • spring-boot
댓글 1 좋아요 0 조회수 305

SEQUENCE 전략 초기값과 호출 횟수 문의드립니다.

해결됨

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

안녕하세요. 강의 열심히 듣고 있는 주니어 개발자입니다. 강의 내용 똑같이 수행했으나 시퀀스 값이 다른 점이 있어 문의드립니다. (33:05) 부분에서 시퀀스 전략 속성값 initialValue=1, allocationSize=50 으로 설정했을시 persist 이전에 초기값이 -49라고 나오지만 제 환경에서는 초기값이 1로 나옵니다. H2 DB 2.1.214, Hibernate 5.6.10을 사용중인데 혹시 버전이 달라서 그런걸까요? 로그에는 시퀀스에 대한 call next value를 호출하지 않으며 제 생각에도 initialValue=1 로 명시되어 있기 때문에 초기값이 1인게 정상인 것 같은데 제가 놓치는 부분이 있는지 문의드립니다. 위 질문의 연장선으로 persist 1번 수행시 call next value 수행 결과는 아래와 같은데요. DB 시퀀스 자체의 increment값이 50이어서 51이 되는것은 이해하였습니다. JPA에서 51번째 데이터까지는 DB 시퀀스를 참조하지 않고 메모리에서 꺼내와야하는데 persist로 객체를 2번 저장시 아래와 같이 call next value가 2번 호출이 되고 시퀀스 값은 101이 됩니다. (33:43) 여기서 2번 호출 되는 이유가 JPA 애플리케이션에서 사용하는 allocationSize가 50이기 때문에 추후 자신이 사용할 메모리 시퀀스값을 선점하기 위해서라고 이해했는데요. (DB에는 51로 증가시켜놓고, 2부터 51까지 사용하기 위함) 이렇게 되면 제 경우에는 2를 사용하기 위해서 시퀀스 값을 101로 올려놓는 이상한 동작을 하는 것인데 이해가 가지 않습니다. 또한 위와 같이 52번째 객체 저장시 call next value가 한번 더 수행되어 시퀀스 값은 151이 됩니다. 의도한대로 작동은 하지만 시퀀스가 한단계씩 밀려서 작동한다는 것이 이해가 가지 않습니다.

  • sequence
  • pk
  • JPA
  • jpa
  • java
  • hibernate
  • allocationsize
Seunghoon Choi 댓글 2 좋아요 8 조회수 979

thenThrow() 안에는 runtime 익셉션만 선언가능한가요?

미해결

더 자바, 애플리케이션을 테스트하는 다양한 방법

안녕하세요. 기선님 테스트 코드 작성은 처음이라 강의를 들으며 해보고 있는 수강생 입니다 ! 다름이 아니라 throw 부분에 ioException이나 sqlException을 실행시키고 싶은데 에러엔 org.mockito.exceptions.base.MockitoException: Checked exception is invalid for this method! 이렇게만 뜨더라구요 근데 runtime 익셉션은 정상적으로 실행되는 걸 보면서 thenthrow는 unchecked 익셉션만 가능한건지 궁금증이 생겼습니다. 혹시 ioException이나 sqlException 처럼 checked 익셉션을 실행하고 싶으면 어떻게 하면 좋을까요? 사정상 코드의 내용을 상세히 첨부할 수 없지만 대략적으로 올려봅니다 @DisplayName("3. 실패 : DB insert 오류") public void 실패_DB_insert_오류() { //given //특정 객체 생성 when(특정 서비스).thenThrow(new sqlException()); //then - 실패 결과 assertThrows(sqlException.class, () -> { log.info("!! DB insert 오류 !! "); //when - 프로세스가 진행 }); // verify를 통해 해당 프로세스 최소 1번 호출 되었는지 확인 verify(kosService,atLeastOnce()).특정 서비스); }

  • testcontainers
  • java
  • ArchUnit
  • Chaos-Monkey
  • JMeter
  • mockito
  • JUnit
cheerup_km 댓글 1 좋아요 0 조회수 1368

enum, sealed과 when

미해결

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)

안녕하세요! 강의 잘 보고 있습니다! enum과 sealed를 when과 함께 쓰는 부분을 보고 궁금증이 생겨 질문드립니다! 제가 느끼기에 when 문은 자바의 switch문과 유사하다고 생각이 들어요. switch문이나 if-else 같은 경우 많이 사용하면 유지보수 측면에서도 힘들고 안 좋다는 의견을 많이 들었어요. 그래서 enum 각 내부 필드가 로직을 가지게 하여 if-else를 없애거나, 팩토리를 만들어 switch문을 최소화하거나 하는식으로 구현한다고 알고 있습니다. 이런 측면에서 if-else나 switch는 많이 쓰지 않는게 좋은 것 같은데 when은 조금 다르게 봐야하는건지 궁금합니다. 실제로도 when을 많이 사용하나요?

  • oop
  • kotlin
  • java
luca 댓글 1 좋아요 1 조회수 332

음..당혹스러운 전개상황인거같아요 ㅎ

미해결

스프링 시큐리티

음 저는 보다가 그냥 플젝 제가 따로 구축해서 진행중인데요.. 이거 양해만 구한다고 될 부분이라기보단 반드시 조취가 취해져야할 부분인거 같습니다. 저도 현업에서 일하고 있지만 비용을 받고 서비스를 제공하는데 이렇게 양해구하는 글만 올리는 것은 상당히 무책임하다고 느껴집니다. 물론 공부하는 입장에선 직접 구현해보는게 실력향상에는 훨씬 도움이 되지만 그부분은 고객인 학생들이 선택할 부분이고 제공 되어야할 부분은 반드시 제공되는게 맞다고 생각이 듭니다. 코드를 잃어버리셨다면 분명 강의 소개 페이지에 기재가 되어 있던가 하는게 맞을거 같아요. 아니면 다시 복구 소스를 만드셔서 제공하는게 맞구요. 강의 또한 고객이 정당한 지불한 비용에 대한 서비스를 제공하는 것인데 이런 대처는 정말 아니라고 생각합니다. 물론 예전 복구소스를 올렸지만 보시면 해당 소스로는 강의를 진행하는부분에 있어서 에러사항이 많습니다. 그러면 이런 불편이라도 해소될 수 있도록 액션이 필요할 것같아요. 현업에서도 플젝하시다 무언가 날아가면 고객한테 "양해 구합니다 하고 이거밖에 없으니 알아서 하세요. 죄송합니다." 라고 대처하진 않을겁니다. 고객은 뭐가 됐든 해결되기를 원하고 이부분은 강의를 결재하는 시점에 충분히 고지가 안되었기도합니다. 반드시 어떠한 유의미한 조취가 필요하다고 생각이 듭니다. 고객과의 서비스에대한 신뢰의 문제고 지금 상황은 기만이라는 느낌마저 드네요.

  • Spring Security
  • java
  • spring-boot
댓글 3 좋아요 2 조회수 911

연관관계 메서드

미해결

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

왜 연관관계 메서드에서 어떤 건 set이라고 하고 어떤 건 add라고 하나요?? ex. setMember() / addOrderItem() //== 연관관계 메서드 ==// 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); } setMember는 member.getOrders()라고 하고 setDelivery()는 setOrders()로 다른 이유는 무엇인가요?? 여기서 this는 order를 의미하는 걸까요??

  • java
  • JPA
  • spring
  • spring-boot
  • 웹앱
jjin 댓글 1 좋아요 2 조회수 505

클래스 내부에서 getter/setter 메서드 사용

미해결

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

안녕하세요. 영한님과 서포터님들 덕분에 즐겁게 공부하고 있습니다. 주문, 주문상품 엔티티 개발 강의를 듣던 중 궁금한 것이 생겼습니다. 강의에서 보시면 클래스 내부에서 생성 메서드 혹은 비즈니스 로직 메서드를 구현하시면서 getter/setter 메서드를 사용하시는데요. 이렇게 클래스 내부에서 사용할 때도 필드에 직접 접근하는 것보다는 getter/setter 메서드를 사용하는 것이 권장되는가요? 단순히 생각했을 때는 불필요한 메서드 호출만 일어나는 것 아닌가해서 질문드립니다.

  • java
  • getter
  • 웹앱
  • setter
  • java
  • spring
  • JPA
  • spring-boot
Ho Saint 댓글 1 좋아요 0 조회수 753

질문이 있습니다.

미해결

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

private List<OrderItemQueryDto> findOrderItems(Long orderId) { return em.createQuery( "select new jpabook.jpashop.repository.query.OrderItemQueryDto(oi.order.id, i.name, oi.orderPrice, oi.count)" + " from OrderItem oi" + " join oi.item i" + //이걸 왜 하는거지 => 실 객체바꿀라고? " where oi.order.id = :orderId", OrderItemQueryDto.class ).setParameter("orderId", orderId).getResultList(); } 위 코드에서 "join oi.item" 하는 이유가 궁금합니다. OrderItem엔 Item이 있으니 i.name 대신 oi.item.name하여도 될 것 같은데 굳이 Item도 조인하는 이유가 있을까요? 제가 생각한 결과로는 Item을 조인하여 i.name할 때 Item이 프록시에서 실 객체로 바뀌니 이것을 위해 조인하였을 것 같은데 맞을까요?

  • java
  • JPA
  • spring-boot
  • spring
김형민 댓글 1 좋아요 0 조회수 282

분산락 관련 질문입니다.

미해결

재고시스템으로 알아보는 동시성이슈 해결방법

안녕하세요 좋은 강의 감사드립니다. 이전까지 알아보았던 락들은 분산락이 아닌 것인가요? 만약 아닌 것이라면 다중 서버 환경에서 동시성 문제를 해결하기 위해서는 위의 방법들이 아닌 분산락을 사용하여야 하는 것인지 궁금합니다. 추가로 동시성 관련 질문이 하나 있습니다. 다중 서버 환경에서 게시판 등에서 조회수 기능을 동시성 문제 없이 해결하고 싶으며, 다음과 같이 구현하고자 합니다. (조회수라 어느정도 누락되어도 상관 없다고 하실 수 있겠지만, 목표는 하나도 누락되지 않게 하는 것입니다!) 조회 요청이 들어오면 레디스에 조회수 증가분을 올린 이후, 특정 시간마다 배치처리를 통해 반영하고자 합니다. 이때 다음 두 의문점이 있습니다. 먼저 다중 서버 환경에서 레디스 증가분을 올리는 경우, 이 경우에도 동시성 문제가 발생할 수 있을 것 같습니다. 이를 해결하기 위해서는 이곳에도 분산락을 걸거나 increment()를 사용하여 동기적으로 처리해야 할 거 같은데 저의 생각이 맞는 것인지, 맞다면 다른 방법은 없는지 궁금합니다. 두번째는 레디스 조회수 증가분을 배치처리를 통해 반영시키는 경우, 해당 작업 사이에 조회수 증가가 되어버리면 해당 증가분은 누락될 것 같습니다. 이를 해결하기 위해서는 배치처리를 할 때 레디스에 Lock을 걸어야 할 것 같습니다. 그런데 그렇게 된다면, 배치처리가 진행되는 그 순간동안은 레디스가 블로킹되어 있기에 게시글 조회가 이루어지지 않을 것 같습니다. 이정도는 감수하고 사용하거나, 혹은 카프카 등을 활용하여 이벤트로 처리하는 방법도 있을 것 같은데, 이러한 방법이 모두 사용 가능한 것인지, 더 나은 방법은 없는지 궁금합니다. 너무 많은 질문을 하는 것 같아 죄송합니다. 좋은 강의 정말 감사합니다.

  • spring
  • java
  • 동시성
댓글 1 좋아요 -2 조회수 898

인기 태그

인프런 TOP Writers

주간 인기글