Caused by: java.net.BindException: Address already in use: bind 라고 에러가 떠서 찾아봤더니 톰캣의 8080 포트가 사용중이어서 종료해야 한다고 합니다. 그래서 종료를 하면 실행이 됩니다. 근데 실행을 할 때마다 이런 에러가 뜨는데 항상 종료를 해줘야 하나요? 강의에서는 안하셔서 제가 설정을 잘못 건들인 것 같습니다.
이전 강의에서도 마찬가지였지만, 강의에서 쓴 open을 f로 지정하고 다음에 다시 reader 라는 새로운 인자를 사용하는 이유가 무엇인가요? f 자체는 open함수가 동작하는 것 자체에 대한것이고, reader라는 함수는 그 결과로 생성된 객체. 이렇게 받아들이면 되는 것인가요?
안녕하세요 김영한 강사님! "@Query값, DTO조회하기" 편에서 @Query 애노테이션을 활용해서 엔티티를 DTO와 매핑하는 것과 ModelMapper를 통해서 엔티티와 DTO를 매핑하는것과 실질적인 차이가 있는지 궁금해서 질문 드려봅니다 혹시 성능면이나 상황상 이번에 소개해주신 방법이 ModelMapper와 비교했을 때 유리한 점이 있나요? ModelMapper를 다루는 강의는 아니지만 기능이 유사한 것 같아 성능면의 차이가 있을까 해서 여쭤봅니다
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 데이터베이스를 실행 하고 테스트를 해보니 에러 없이 성공 했습니다.
안녕하세요! 먼저 강의 너무 잘 듣고있습니다. 감사합니다. 이번 강의를 보는 중 의문점이 생겨 질문 남깁니다. 강의 마지막의 디버깅 과정에서 과정 부분입니다. 캐싱 과정 확인을 위해 인위적으로 /로 접근한 후 요청 정보를 캐시에 남기게 하고, login 페이지로 redirect 되게 하여 인증을 하여, 캐시에서 요청 정보를 가져와서 해당 경로로 이동하게 하였습니다. (successHandler()를 통해서) 여기서 의문점이 생겼습니다. /로 접근하지 않고 바로 /login으로 접근해 요청 정보를 캐싱하지 않는 경우는 어떻게 될지가 궁금했습니다. 결과는 예상했던대로 savedRequest가 null이어서 에러가 났습니다. 그래서 제 결론은 이 요청 정보 캐싱 기능을 이용하는 경우, successHandler에서 바로 /login으로 접근하는 경우도 고려해서 구현해야 하는지, 아니면 successHandler 이 외에 자동 설정이나 다른 설정을 해야하는 것이 있는지 궁금합니다. 감사합니다!
안녕하세요 질문이 있어서 글을 남깁니다. builder 디렉토리에서 아래 cmd 명령어를 실행하면 아무것도 뜨지 않습니다. >> python model_builder_test.py 그러나 아래 cmd 명령어를 실행하면 영상에서 보여주신 것처럼 Run, Ok 메시지를 확인할 수 있습니다. (저같은 경우 Ran 19 tests in 0.099s, OK (skipped=1)라는 메시지가 떴습니다) >> python model_builder_tf1_test.py 그래서 코드를 살펴봤는데 model_builder_test.py 에는 main 함수가 없고 model_builder_tf1_test.py에는 main 함수가 있습니다. 정확하게 표현하기 위해 아래 코드가 model_builder_test.py에는 없고 model_builder_tf1_test.py에는 있다고 말씀드리겠습니다. if __name__ == '__main__': tf.test.main() 혹시 영상 올리실때와 제가 실제로 실행한 시점(200519) 사이에 업데이트가 있었던 건지 아니면 model_builder_test.py를 실행했을때 Run, Ok 메시지가 잘 나와야 되는데 잘 안나온건지 궁금합니다. 감사합니다.
안녕하세요. 좋은 강의 감사합니다. 아래와 같이 STATELESS로 설정하면 로그인은 안되지만 JSESSIONID는 쿠키에 저장되는데요 JSESSIONID는 스프링 에서 세션을 만들지 않더라도 무조건 부여되는 건가요? http.sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS) .sessionFixation().none();
안녕하세요 갓영환님 강의 정말 잘듣고있습니다. 정말 좋은 강의 감사합니다! 제 궁금한 부분은 저는 fetch조인이 일 대 다 일때 데이터 뻥튀기가 일어나서 데이터 값이 중복되는 부분입니다. fetch조인의 특성인 연관관계 매핑된 객체를 함께 조회하는 기능 때문이라 생각하고 있는데.. 영한님 자료인 위 표를 예를 들면 Team 컬럼 팀A와 Members 컬렉션이 fetch조인될때 팀A와 연관되는 Member 테이블 로우가2개라서 한번 조인될때마다 fetch조인의 특성으로 Member 테이블에 FK외래키 연결 컬럼 모두 가져와서 팀A관련 정보가 2번 반복되는게 맞나요? 질문에 답변 기다리겠습니다 !
안녕하세요 제 이해가 짧아 어딘가 맥락을 놓친 것 같습니다만 그 부분을 스스로 찾기가 힘들어서 여쭤봅니다. @OneToMany(mappedBy = "order", cascade = cascadeType.ALL) private List<OrderItem> orderItems = new ArrayList<>(); 예시에 나온 위 소스를 보면 mappedBy가 걸린 곳에 (즉 연관관계의 주인이 아닌 쪽에) cascade가 걸려있습니다. 제가 이해하기론 mappedby는 읽기만 가능한데, cascade를 붙임으로써 arraylist에 들어있던 마치 업데이트도 가능해지는 것 같이 들려서 제가 헷갈리는 부분을 확인차 여쭤보고 싶습니다. mappedby가 쓰기도 가능해지는 건가요? 아니면 제가 어딘가 내용을 오해했나요?
안녕하세요 Spring Security ExceptionTranslationFilter 강의 09:00 부터 진행하는 내용을 듣고 질문사항이 생겨 글을 남깁니다. 인증/인가 예외 처리 필터인 ExceptionTranslationFilter 기능 중 AccessDeniedException(인가 처리 실패 예외)에 대해 예외를 처리할 수 있는 페이지를 설정하는 방법과, AccessDeniedHandler를 직접 구현해서 사용하는 방법이 있었는데요. accessDeniedHandler() 메소드를 사용하지 않고 accessDeniedPage() 메소드를 사용하여 URL을 지정하고, Controller와 HandlerMethod를 구현하였습니다. 이때 HandlerMethod의 인자로 Principal 객체, Model 객체 외 HttpServletRequest 객체를 넘겨 받아 AccessDeniedHandler를 직접 구현한 것과 마찬가지로 "로그 출력", "VIEW에서 인증된 사용자 정보와 함께 에러 메시지 출력"을 하였는데요. 이렇게만 본다면 AccessDeniedHandler를 직접 구현하는 것과 예외를 처리할 수 있는 페이지를 설정하여 HandlerMethod에서 처리하는 것의 차이가 없어 보였습니다. AccessDeniedHandler를 직접 구현하여 얻을 수 있는 추가적인 장점이 있을까요? 미리 답변 감사드립니다.
n+1 문제가 발생하는걸 위해 페치조인을 사용했는데 select o from Order o join fetch o.member join fetch o.delivery d 이렇게 사용할때 의문이 드는부분이 o.member는 그냥 적어주었는데 o.delivery 에서는 왜 d라고 별칭을 준것인지 궁금합니다 별칭이 있거나 없거나 유무에 따라 차이가 존재하나요?? 혹은 페치조인을 사용할 때 첫번째로 join하는 테이블은 별칭을 사용하지 않고 두번째 테이블부터 별칭 사용이 가능하다거나 하는 제약사항이 있는지 궁금합니다! 결론 : o.member는 별칭이 없고 o.delivery는 왜 별칭이 있는가
예제 도메인모델과 동작확인 강의에서 보다 질문드립니다. 13분08초쯤에 member 엔티티에 changeTeam부분을 보면, team.getMembers().add(this) 부분이 필요없는 거 아닌가요? 기초강좌에서 mappedBy를 사용하면 엔티티의 주인이 아니라고 배운것 같은데, 굳이 저렇게 추가를 해줘야 하는 이유가 있을까요?
안녕하세요 선생님 최근 default_batch_fetch_size 관련 질문과 비슷한 상황이지만 조금 다릅니다. 현재 A 테이블과 B테이블이 one to many 로 연관관계가 있고 현재 A 테이블 기준으로 쿼리를 날린다음(테이블 B는 페치조인하지 않음) 서비스 단에서 (테이블 B)부분 lazy를 강제 초기화 해주고 있습니다. 제가 batchsize를 다르게 주면서 테스트를 해보았습니다. 1. 쿼리 결과물 : 180개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 1073개 default_batch_fetch_size=100 in 절에 나가는 batch size= 100, 50, 25, 5 총 4번 비정상 fetch size되로면 2번에 나가야함 2.쿼리 결과물 : 180개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 1073개 default_batch_fetch_size=80 in 절에 나가는 batch size= 80,80,20 총 3번 정상 3.쿼리 결과물 : 180개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 1073개 default_batch_fetch_size=500 in 절에 나가는 batch size= 125, 31, 15 ,9 총 4번 비정상 fetch size되로면 1번에 나가야함 4.쿼리 결과물 : 180개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 1073개 default_batch_fetch_size=180 in 절에 나가는 batch size= 180 총 1번 정상 5.쿼리 결과물 : 30개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 23개 default_batch_fetch_size=100 in 절에 나가는 batch size= 25, 5 총 2번 비정상 fetch size되로면 1번에 나가야함 6.쿼리 결과물 : 30개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 23개 default_batch_fetch_size=30 in 절에 나가는 batch size= 30 총 1번 정상 7.쿼리 결과물 : 30개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 23개 default_batch_fetch_size=20 in 절에 나가는 batch size= 20, 10 총 2번 정상 8.쿼리 결과물 : 30개(A 테이블 기준 결과물 갯수) B 테이블의 결과물은 23개 default_batch_fetch_size=500 in 절에 나가는 batch size= 15, 15 총 2번 비정상 fetch size되로면 1번에 나가야함 혹시 자체적으로 최적화 알고리즘이 적용되면서 이렇게 제각각 나가는건가요? 아니라면 혹시 저 in 절을 만드는 부분을 디버깅을 해볼려면 어떤 클래스를 찾아보면 될까요?