inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

merge 와 dirty check 질문

미해결

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

안녕하세요. 변경감지와 병합 챕터를 보고 질문드립니다. 말씀하신 내용중에 "merge 는 모든 필드를 업데이트하고, dirty check 는 변경된 부분만 업데이트하기때문에 dirty check 를 사용하는게 좋다" 라는 내용이 있는데요. 그래서 테스트를 좀 해봤는데 dirty check 로 update 쿼리가 날아가는 경우에도 모든 필드에 대한 update 쿼리가 날아가더라고요. 결국 실행되는 쿼리 자체는 merge 와 dirty check 가 동일한거같은데요. 그래서 제가 정리한건 "merge 보다 dirty check" 라기보다는 "기존 엔티티를 수정(update) 할때는 신규 객체를 만드는게 아니라 기존 엔티티를 찾아와서 하자" 인데, 이렇게 이해해도 될까요? + 조금 더 찾아보니까 하이버네이트에서 @DynamicUpdate 애노테이션을 지원하고있는데 이 애노테이션은 실무에서 적극적으로 사용하는지도 궁금합니다. 감사합니다.

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

강의 PPT 관련 질문

미해결

스프링 시큐리티

안녕하세요~ 강의 잘 듣고 있는 사람입니다. 강의를 듣다보니 HTTP Basic 부분의 강의가 PPT 에는 나와있는 것 같은데, 강의에는 건너뛰고 Form 인증 부분부터 나오더라구요~! 굳이 할 필요가 없어서 생략하신 걸까요? 좋은 강의 만들어주셔서 감사합니다!

  • spring-boot
  • Spring Security
  • java
dev_dev_dev 댓글 1 좋아요 0 조회수 388

Unable to access lob stream 오류가 발생합니다.

미해결

실전! 스프링 데이터 JPA

다음과 같이 AccountRepository 인터페이스를 생성해 사용하는데, findByNickname 메소드에 대해 Unable to access lob stream 오류가 발생합니다. 검색해보니 맨 위 사진과 같이 Repository에 @Transactional을 추가하라는데, Clob이나 Blob이 포함된 엔티티는 해당 어노테이션을 반드시 사용해야 하는 것인가요? 혹시 맞다면 왜 그런건가요?

  • java
  • spring-boot
  • JPA
  • spring
Junyoung_Choi 댓글 4 좋아요 0 조회수 968

다음 강의 수강 질문

해결됨

스프링 프레임워크 핵심 기술

유튜브에 올리신 강의 순서 영상 잘 봤습니다! 1. 유튜브 영상 댓글들을 보니 20%할인 내용이 있어 확인해보니 이메일, 인프런 알림, 결제 시 자동으로도 할인이 적용되지 않는데 기간이 끝났나요?? 2. 스프링 MVC와 스프링 부트 개념과 활용 중 어떤 강의를 먼저 듣는게 좋을까요? 영상에서는 MVC이고 댓글에는 '뭐 그대로 하나 선택하라면 일단 스프링 부트?' 라고 하셔서 고민이 됩니다. 스프링부트 교육과정(?)에 스프링 MVC, 데이터, JPA 같은 내용이 있어 스프링도 다 배우기전에 들어도 될지 모르겠네요ㅜ

  • spring
  • java
댓글 1 좋아요 0 조회수 234

다대다 관계 시 insert 질문입니다.

미해결

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

안녕하세요 영한님! 강의 들으면서 개인적으로 작은 프로젝트를 하나 만들어 보고 있습니다. 다대다 관계 시 insert 방법이 궁금합니다. 아래와 같이 erd가 구성되어 있습니다. 회원 테이블, 상품 테이블 그리고 회원이 찜한상품 테이블 총 3개가 있고 찜한상품 테이블이 회원과 상품 테이블을 연결하는 연결테이블입니다. entity는 테이블과 같이 총 3개를 생성했습니다. (@ManyToMany는 사용하지 않고 비식별관계로 만들었습니다.) 1) UserRepository를 생성해서 User를 저장하고 2) ItemRepository를 생성해서 Item을 저장하고 3) ItemLikeRepository를 생성하고 ItemLike 객체를 생성 후 저장된 User와 Item의 연관관계를 설정하고 저장 이렇게 3단계를 거쳐서 모든 데이터를 저장하고 있는데요. 연결테이블의 저장소인 ItemLikeRepository를 생성해서 저장을 해야 될까..? 라는 의문점이 듭니다. ItemLikeRepository는 save() 외에는 거의 사용할 일이 없을거 같은데 구지 생성을 해야 될까 생각도 들고.. 다대다 관계 저장 시 효율적인 방법이 있을까요?? 감사합니다.

  • 웹앱
  • java
  • spring
  • JPA
  • spring-boot
신짱 댓글 4 좋아요 0 조회수 2420

static에 관한 질문이 있습니다.

미해결

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

안녕하세요 강의를 시청하고 있는 학생입니다. 교수님께서 CreateMemberResponse와 CreateMemberRequest 클래스들을 static 으로 만드셨는데 혹시 어떤이유에서 static 선언을 하신건가요??? 항상 유익한 강의를 만들어주셔서 감사합니다

  • JPA
  • spring-boot
  • spring
  • java
양동우 댓글 1 좋아요 16 조회수 389

ManyToMany 관계 동작이 조금 어렵네요..

해결됨

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

강의를 들으면서 토이 프로젝트를 진행중에 있습니다! 사용자(Account)가 평소 여러 주제의 태그(Tag) 중 관심 있었던 주제의 태그를 프로필에 등록하는 기능을 구현 중에 있으며, Account 라는 엔티티와 Tag라는 엔티티가 AccountTag 라는 엔티티로 각각 1:N 매핑된 형태로 N:M 관계를 표현했습니다. 태그 생성 기능은 Gist 과 같이 작성했는데, 사용자에서 특정 관심 태그를 삭제하는 remove 동작을 어떻게 구현해야 할 지 감이 잘 오지 않습니다.. 정리하자면 Tag는 그대로 보존하되, 연관된 AccountTag만을 삭제하고 싶습니다. 마음 같아선 영속성 전이를 통해 delete 동작 없이 List에서 remove만 해서 처리하고 싶은데 AccountTag 엔티티와 연관된 객체가 2개 이상이니 Cascade.ALL을 사용하기도 좀 그래서 이런 경우엔 보통 어떻게 처리를 하는지 궁금합니다!

  • spring
  • spring-boot
  • java
  • JPA
Junyoung_Choi 댓글 5 좋아요 2 조회수 984

Entity 객체에 대한 영속화를 시킨다는 의미에 대한 질문입니다.

해결됨

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

안녕하세요. JPA - 영속성 컨텍스트1 강의를 듣고 난 뒤 궁금한 사항이 생겨 질문을 남깁니다. 위 학습 내용의 큰 개념 중 하나인 "영속성 컨텍스트"에 대해 비영속 상태의 Entity 객체(도메인 클래스)를 영속 상태로 변경하기 위해서는 JPA에서 제공하는 EntityManager#persist(entity) 메소드를 사용하면 된다. 라고 이해를 했습니다. 이외 Member member = EntityManager.find(Member.class, 100L); 같은 코드에서 조회되는 "member" 객체도 자동으로 영속 상태로 설정이 되어 EntityManager#find(class, primaryKey) 메소드가 반환하는 객체라고 이해를 하면 될까요? 이제 본격적으로 JPA에 대해 학습을 시작했습니다. 새로 접하는 기술에 대해 좋은 강의 만들어주셔서 감사합니다.

  • JPA
  • java
Henu 댓글 1 좋아요 2 조회수 685

계층구조 카테고리 하위 속한 모든 아이템 조회

해결됨

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

안녕하세요.항상 모든 질문에 정성스럽게 답변하시느라 고생이 많으십니다. 그래서 질문하는게 조심스럽지만 제가 못보는 부분이 있을가 걱정되 또 질문을 하게 되네요 ㅎㅎ 혹시 만약 이 강의에서 처럼 Category 가 계층 구조로 되어있으나 Item과 일대다 구조되어있을때 특정 category 하위에 카테고리에 속한 모든 item 을 찾을때 어떤방식으로 많이 구현하시나요? 제가 생각한 방법은 서비스 레이어에서 카테고리 리파지토리를 통해 특정 category엔티티를 찾아온다.loop를 돌면서 child를 모두 로딩시키 면서 child id 를 리스트로 만든다 -> 아이템 리파지토리의findByCategoryIds와같은 메서드로 해당 id에 속한 모든 item를 찾는다. 조금더 깔끔한 방법은 없을까요 ? 양방향 관계를 줄이는게 좋지만 이상황에서는 양방향 관계를 걸어서 Category에서 one to Many로 item을 가지고 있다가 그 리스트를 로딩후 반환하는게 나을까요? 항상 정말 좋은 강의와 꼼꼼한 답변 감사하게 생각하고 있습니다.

  • spring-boot
  • java
  • 웹앱
  • JPA
  • spring
asdkfur 댓글 4 좋아요 1 조회수 3863

테스트 공부를 위한 방법을 알 수 있을까요

미해결

실전! 스프링 데이터 JPA

늘 빛영한 님의 명강의 즐겁게 보고있습니다. 이동욱님의 도서와 영한님의 강의를 보며 테스트코드를 접하면서 대략적인 느낌으로 어떤역할을 하는지 왜 작성하는지를 미약하게나마 느끼고있지만 테스트코드에 대해 모르는 부분이 너무나 많은데요 테스트코드는 거의 필수처럼 여겨지는것으로 보이던데 테스트코드를 학습하기위해 혹시 추천해주고 싶은 책이나 그 외 자료 같은게 있으실지 궁금합니다!

  • spring
  • java
  • spring-boot
  • JPA
LUA 댓글 1 좋아요 0 조회수 389

JPA auditing 및 SOFT DELETE

해결됨

실전! 스프링 데이터 JPA

안녕하세요 선생님 오랫만에 질문 올려보니다. JPA 사용할때마다 기억안나는 부분을 다시 항상 찾아보며 공부하고 있습니다. 그런던 중 궁금한게 생겨 질문 드립니다. 1.혹시 선생님은 soft delete 는 어떻게 구현하시는 지 궁금합니다.보통 (State 변수추가,deleteAt 컬럼으로 삭제 날짜 추가,deleted flag 변수 추가) 이 세가지인데 어느 방식을 선호하시는지요? 2 해당 구현은 repository 단에서 deleteById 이렇게 호출되면 엔티티를 조회한되 해당 값들을 업데이트 해주시나요?(@PreRemove 애노테이션을 사용해서나, createdAt 이나 lastModifiedAt처럼 Jpa Auditing을 활용해서 가능한가요?그리고 이렇게 하는게 더 깔끔할까요? 3.현재 Table A 의 생성,변경,삭제내역을 담은 Table History가 있다고 하고 일대다 관계로 아래처럼 되어있다고 하면 class Table A { @OneToMany(mappedBy = "order", cascade = CascadeType.ALL) List<History> history; } 생성시 history.add(new History("생성")) 변경시 history.add(new History("변경")) 삭제시 history.add(new History("삭제")) 이러한 로직들은 생성은 생성자 안에, 변경은 변경을 하는 메서드 안에, 삭제는 soft delete시 수행되는 로직과 함께 두는게 나을까요 아님 @PrePersist @preUpdate 이러한 에노테이션을 붙혀서 Table A 안에 메서드를 만드는게 나을까요?

  • JPA
  • java
  • spring
  • spring-boot
asdkfur 댓글 4 좋아요 5 조회수 3550

애노테이션 에러

해결됨

스프링 프레임워크 핵심 기술

애노테이션을 사용할 수 없다고 뜨는데 왜 그런걸까요? ㅜ

  • java
  • spring
댓글 3 좋아요 0 조회수 375

클래스 설계가 먼저일까요? 아니면 데이터 베이스 설계가 먼저일까요?

해결됨

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

안녕하세요. 6개월차 신입 개발자입니다. 실무에서 php(코드 이그나이터)로 개발을 하다가 스프링부트를 알게되어서 따로 공부하고 연습하고 있는 상황입니다. 매번 서비스를 개발할때에 요구사항을 먼저 받고 데이터베이스 설계를 마친뒤에 코드를 개발하곤 했었습니다. 6개월간 그렇게 개발을 하다보니까 데이터베이스 관점으로 생각하고 개발을 하고있게 되었습니다. 영한님이 준비해주신 요구사항들과 엔티티설계 데이터베이스 관계 설계를 보고 클래스를 만들고 코드를 짜는데 무리는 없지만. 정작 요구하는 사람들은 백지에서 원하는 기능만 설명하고 구현해달라! 이런식으로 나오니까 제 머리가 백지가 되어서 결국 PHP짜던식으로 디비설계 -> 비즈니스로직짜기 -> 비즈니스 로직에 필요한 디비컬럼이 없으면 넣고 -> 비즈니스 로직 짜기 -> 무한반복 -> 리팩토링 이런식으로 갑니다. 너무 비 효율적이라고 생각하게 됩니다. 이번에 jpa기본부터 spring data jpa 4강의를 수강하고 실무환경에서 바로 쓸수있도록 하나의 서비스를 개발해보자! 라는 마음으로 개발을 하고있었습니다만.. 요구사항을 만들고 그에대한 엔티티 설계에서 부터 막히게 되었습니다. 1. 클래스 엔티티 = 데이터 베이스 엔티티 라고 생각하는게 맞을까요? 2. 데이터베이스를 짜고 그에 맞는 클래스 엔티티를 짜는게 맞을까요? 3. 서비스를 만드실려고 요구사항을 받은 시점에서 데이터 베이스 관점에서 설계를 하고 그 위에 엔티티클래스들을 맞게 설계하고 그뒤에 클래스들을 잘게잘게 쪼개는 형식으로 개발을 해야할까요? 4. 아니면 데이터 베이스 정규화를 먼저하고 그뒤에 엔티티클래스를 만들고 개발하는게 맞을까요? 5. 디비설계 -> 비즈니스로직 -> 없는 컬럼 넣기 -> 비즈니스로직 이런 패턴이 잘못되었을까요? 처음부터 요구한 설계에 맞게 완벽한 설계후 개발을 해야할까요? 6. 데이터베이스 , 엔티티클래스 설계에 참고할만한 서적이나 강의영상이 있으시면 추천 부탁드립니다 . 좋은 강의 감사합니다!

  • spring
  • spring-boot
  • java
  • JPA
김종완[와니Wani] 댓글 1 좋아요 6 조회수 3372

해당 포트 사용중 에러 질문

해결됨

스프링 프레임워크 핵심 기술

Caused by: java.net.BindException: Address already in use: bind 라고 에러가 떠서 찾아봤더니 톰캣의 8080 포트가 사용중이어서 종료해야 한다고 합니다. 그래서 종료를 하면 실행이 됩니다. 근데 실행을 할 때마다 이런 에러가 뜨는데 항상 종료를 해줘야 하나요? 강의에서는 안하셔서 제가 설정을 잘못 건들인 것 같습니다.

  • java
  • spring
댓글 1 좋아요 0 조회수 230

@Query를 활용한 DTO 매핑

미해결

실전! 스프링 데이터 JPA

안녕하세요 김영한 강사님! "@Query값, DTO조회하기" 편에서 @Query 애노테이션을 활용해서 엔티티를 DTO와 매핑하는 것과 ModelMapper를 통해서 엔티티와 DTO를 매핑하는것과 실질적인 차이가 있는지 궁금해서 질문 드려봅니다 혹시 성능면이나 상황상 이번에 소개해주신 방법이 ModelMapper와 비교했을 때 유리한 점이 있나요? ModelMapper를 다루는 강의는 아니지만 기능이 유사한 것 같아 성능면의 차이가 있을까 해서 여쭤봅니다

  • spring-boot
  • spring
  • java
  • JPA
손성용 댓글 5 좋아요 3 조회수 934

요구사항 분석에서 ERD 질문드립니다 !!

해결됨

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

영상본후 저도 요구사항 분석을 조금 더 체계적으로 해보려고 합니다. 혹시 ERD 그리실때 사용한 어플리케이션이나 툴 알려주실수 있으신가요?

  • spring
  • JPA
  • 웹앱
  • spring-boot
  • java
애교있는 북극곰 댓글 2 좋아요 0 조회수 362

혹시 이런 에러가 뜨시는 분들이 계시다면은

미해결

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

Failed to load ApplicationContext java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:190) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:132) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:227) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:289) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:291) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:246) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38) at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94) at co m.sun.proxy.$Proxy2.processTestClass(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:118) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182) at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164) at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:412) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) at java.lang.Thread.run(Thread.java:748) Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1771) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:593) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:515) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1105) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391) at org.springframework.boot.SpringApplication.run(SpringApplication.java:312) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:121) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117) ... 49 more Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:275) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152) at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214) at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:179) at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:119) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1215) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1246) at org.springframework.or m.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) at org.springframework.or m.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) at org.springframework.or m.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:391) at org.springframework.or m.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:378) at org.springframework.or m.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1830) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1767) ... 64 more Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:100) at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137) at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:94) at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ... 81 more 강의 내용과 그대로 타이핑 했는데도 불구하고 이런 에러가 떳다면, H2 데이터베이스를 실행 해 보시고 다시 테스트를 진행 해 보세요 저의 경우 H2 데이터베이스를 실행 하고 테스트를 해보니 에러 없이 성공 했습니다.

  • spring
  • java
  • 웹앱
  • spring-boot
  • JPA
ㅌㅇ 댓글 5 좋아요 16 조회수 684

커맨드와 쿼리를 분리하라는 말이 잘 이해가 가질 않습니다.

해결됨

실전! 스프링 데이터 JPA

현재 강의를 단계적으로 쭉듣고 있는데 커맨드와 쿼리를 분리하라는게 잘 이해가 가질 않습니다. 커맨드는 무엇을 얘기하는것인가요? 쿼리는 sql말씀하시는거 맞으신가요? 답변 부탁드립니다!

  • JPA
  • spring
  • spring-boot
  • java
김종완[와니Wani] 댓글 3 좋아요 2 조회수 1646

인증 실패하지 않고 로그인할 경우 savedRequest

미해결

스프링 시큐리티

안녕하세요! 먼저 강의 너무 잘 듣고있습니다. 감사합니다. 이번 강의를 보는 중 의문점이 생겨 질문 남깁니다. 강의 마지막의 디버깅 과정에서 과정 부분입니다. 캐싱 과정 확인을 위해 인위적으로 /로 접근한 후 요청 정보를 캐시에 남기게 하고, login 페이지로 redirect 되게 하여 인증을 하여, 캐시에서 요청 정보를 가져와서 해당 경로로 이동하게 하였습니다. (successHandler()를 통해서) 여기서 의문점이 생겼습니다. /로 접근하지 않고 바로 /login으로 접근해 요청 정보를 캐싱하지 않는 경우는 어떻게 될지가 궁금했습니다. 결과는 예상했던대로 savedRequest가 null이어서 에러가 났습니다. 그래서 제 결론은 이 요청 정보 캐싱 기능을 이용하는 경우, successHandler에서 바로 /login으로 접근하는 경우도 고려해서 구현해야 하는지, 아니면 successHandler 이 외에 자동 설정이나 다른 설정을 해야하는 것이 있는지 궁금합니다. 감사합니다!

  • spring-boot
  • Spring Security
  • java
개발한입 댓글 5 좋아요 3 조회수 1655

RequestCache와 savedRequest에 대해서

미해결

스프링 시큐리티

커스터마이징 하니 너무 개념이 복잡해서 헷갈리는데 HttpSessionRequestCache DefaultRedirectStrategy 와 같이 아키텍쳐 관점에서 전체적인 흐름 한번만 설명해주실수 있나요ㅜ

  • Spring Security
  • java
  • spring-boot
로시츠키 댓글 2 좋아요 1 조회수 5204

인기 태그

인프런 TOP Writers

주간 인기글