묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
모르는 것이 많은데, 이대로 진행해도 괜찮을까요?
안녕하세요. 저는 전공자고, 자바는 학교에서 배운 상태입니다.백엔드 공부하려고 김영한 선생님 로드맵 따라가고 있고, 현재 스프링 입문 강의까지 맞춘 상태입니다.스프링에 처음 접하는데 스프링 입문 강의를 듣고 기능적인 부분은 대충 이해를 하였는데, 문법적인 것들은 처음 접해서 어려움을 느끼고 있습니다. 혹시 스프링에 대해 따로 공부하고 로드맵을 진행해야 할까요? 아니면 따로 스프링 공부 없이 로드맵을 따라가도 괜찮을까요..?
-
미해결
윈도우 cmd에서 gradlew bulid 시 오류관련
안녕하세요.김영한님 스프링 입문 하는 중에, cmd에서 gradlew build시 "Please set the JAVA_HOME variable in your environment to match thelocation of your Java installation." 에러가 뜨는데,구글링이랑 인프런 질문 참고해도 안되네요.. 원인을 모르겠어요. jdk 경로시스템 환경변수ㅠㅠ
-
해결됨
김영한 강사님 강의에 대한 오류 질문입니다.
김영한 강사님의 스프링 핵심원리 기본편을 수강하다가 나온 오류입니다.모든 테스트를 실행했는데 이러한 오류가 나왔습니다. 해결책을 알려주시면 감사하겠습니다. java.lang.IllegalStateException: Failed to load ApplicationContext for [MergedContextConfiguration@63bde6c2 testClass = hello.core.CoreApplicationTests, locations = [], classes = [hello.core.CoreApplication], contextInitializerClasses = [], activeProfiles = [], propertySourceDescriptors = [], propertySourceProperties = ["org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true"], contextCustomizers = [org.springframework.boot.test.autoconfigure.actuate.observability.ObservabilityContextCustomizerFactory$DisableObservabilityContextCustomizer@1f, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizer@58670130, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@59d2103b, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@18518ccf, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@6722db6e, org.springframework.boot.test.context.SpringBootTestAnnotation@e348e9fb], contextLoader = org.springframework.boot.test.context.SpringBootContextLoader, parent = null] at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:180) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:130) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:142) at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:98) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:260) at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:163) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735) at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734) at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762) at java.base/java.util.Optional.orElseGet(Optional.java:364) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memberServiceImpl' defined in file [C:\study\core\out\production\classes\hello\core\member\MemberServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:237) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1355) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1192) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:562) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:522) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:975) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:959) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) at org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) at org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) at org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1454) at org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:553) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:225) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:152) ... 17 moreCaused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'hello.core.member.MemberRepository' available: expected single matching bean but found 2: memoryMemberRepository,memberRepository at org.springframework.beans.factory.config.DependencyDescriptor.resolveNotUnique(DependencyDescriptor.java:218) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1420) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1353) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:907) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:785) ... 41 more
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
김영한강사님 스프링 강의 로드맵 질문드려요.
안녕하세요.저는 얼마전에 미국에서 컴퓨터 과학을 전공한 사람입니다.자바에 대한 기본적인 이용은 할줄 아는 상태이구요. 앞으로 한 2달뒤에 취업을 해야하는데요. 자바 백엔드 신입으로 취직하기 위해 들어야 하는 최소 정도를 알고 싶어서요. 김영한 강사님이 보시기에 자바 백엔드 신입으로 일하는데 최소한 역량을 갖추려면 어떤 강의들을 들어야 하죠? 최소한이요.항상 존경합니다. 김영한 강사님.
-
미해결
김영한님 강의 스프링 완전정복
스프링 완전정복 로드맵을 따라가야 하나요 아니면 스프링 핵심 원리 - 기본편에서 말씀하셨듯이 바로 스프링 부트로 넘어가야 하나요?
-
해결됨
스프링 오류
Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 이 문구가 나와서 localhost:8080도 들어가지지 않습니다. 구글에 검색해보니 properties의 async로 들어가서 체크해제해보라는 말 있어서 해봤는데도 해결되지 않았습니다.이 오류때문에 localhost:8080도 못들어가서 강의 진행도 안되고 있습니다. 빠른 해결책 주시면 감사하겠습니다.
-
해결됨
데이터베이스 h2 실행
안녕하세요? 현재 김영한 강사님의 스프링 입문강의를 수강중인 학생입니다.데이터베이스 h2 다운받았고 강의에 따라 몇 번 실습해보고 컴퓨터를 부팅했습니다.다시 데이터베이스 h2를 실행하는 방법이 무엇인가요??
-
미해결
트랜잭션 전파 활용5 - 전파 롤백 에서 질문 있습니다.
/** * MemberService @Transactional:ON * MemberRepository @Transactional:ON * LogRepository @Transactional:ON Exception */ @Test @Transactional void outerTxAllOn_logging_fail() { // 포함된 트랜잭션중 하나라도 런타임 에러가 발생한다면? 전체롤백!, (런타임 에러 기준임.) (체크드 예외는 커밋임) //given String username = "outerTxAllOn_logging_fail"; String username2 = "로그예외"; //when // memberService.joinV1(username); memberService.joinV2(username2); // 예외발생 log.info("--- joinV2 호출 종료"); System.out.println("겟겟 "+memberRepository.find(username2).get().getUsername()); System.out.println("겟겟 "+logRepository.find(username2).get().getMessage()); // assertTrue(memberRepository.find(username2).isPresent()); // assertTrue(logRepository.find(username2).isEmpty()); // 결과적으로 여기메소드안의 작업은 전부 롤백은 된다. }질문 1. 위 소스에서 트랜잭션이 끝나기 전에 memberRepository.find(username2) 를 수행했다면, 영속성 컨텍스트에 있던 insert들이 물리 트랜잭션에 수행되면서, 값이 조회가 되는 것이 맞는지 궁금합니다.로그로 돌려봤을땐 값이 조회가 되었습니다.질문 2. 물리 트랜잭션이 롤백되는 것이 핵심이며, 트랜잭션이 진행 중 런타임 에러가 예외로 처리되었기에, 트랜잭션이 끝나기 전 까지는 rollback()이 물리적으로 일어나지 않은 상태일 것입니다.저는 강의랑 조금 다르게 서비스에 @Transactional을 넣지 않고, 테스트 메소드에 @Transactional을 넣어 봤습니다.만약 이 상황에서 select를 날린다면, 물리 트랜잭션이 끝나지 않은(rollback되지 않은 상태)이므로 그 사이에 입력된 값은 조회가 되어야 하는게 맞아 보입니다. 이를 위해 앤티티매니저에서 flush()가 일어나고, 영속성 컨택스트에 대기중인 Insert문이 물리트랜잭션으로 전달되어 값이 조회가 되는 것으로 생각되나, 런타임 예외가 일어나서 logRepository.save(logFactory) -> em.persist(logMessage) 은 수행되지 않아야 정상일 것입니다.System.out.println("겟겟 "+logRepository.find(username2).get().getMessage());즉 위의 겟겟 logRepository.find(username2).get에서 메시지가 조회가 안 되어야 될 것입니다.그런데 log_factory에 insert문이 하이버네이트에서 생성되고, log_factory에 값이 insert된 것이 조회가 되는건지 궁금합니다. (결과적으로 롤백은 되겠지만, 트랜잭션이 끝나기 전, 왜 저 find가 정상인건지 궁금합니다.)public void joinV2(String username) { // 로그 저장 실패하면, throw 되는건 피하기 위해 Member member = new Member(username); LogFactory logFactory = new LogFactory(username); // logFactory 객체 만드는이유? logFactory객체에 (username 정보) 저장하려고. log.info("--- memberRepository 호출 시작"); memberRepository.save(member); log.info("--- memberRepository 호출 종료"); try { // 로그저장 실패한다해도 예외 안던지기 위해 직접처리 log.info("===--- logRepository 호출 시작"); logRepository.save(logFactory); log.info("===--- logRepository 호출 종료"); } catch (RuntimeException e) { log.info("로그 저장 실패, logRepository={}",logFactory.getMessage()); log.info("로그 저장 실패, ErrorMessage={}",e.getMessage()); } log.info("--- joinV2 종료"); } @Transactional public void save(LogFactory logMessage) { log.info("log 저장"); em.persist(logMessage); if (logMessage.getMessage().contains("로그예외")) { log.info("log 저장시 예외 발생"); throw new RuntimeException("예외 발생"); } }김영한님 강의 스프링 DB2편 - 데이터 접근기술에서트랜잭션 전파 활용5 를 보면서 테스트를 하다가 도저히 이해가 안가 이렇게 글을 남깁니다.설명이 너무 어려운게 아니었는지 죄송스럽습니다.
-
미해결
이전 로그인 시간 팝업
안녕하세요 영한님 수업을 듣다가 관리자 페이지를 만들어보면서 듣고 있는데요제가 이것저것 찾아보면서 다른 기능들을 넣으면서 공부를 하고 있습니다.하지만 의문점이 하나가 생겼습니다. 로그인, 로그아웃까지 구현을 했으나,이전에 로그인한 시간 팝업에 띄우고 싶은데 Session으로 하면 정해진 시간까지 Session이 동작하여서 이것을 쓰면 안 될 것 같은데요 어떤 기능을 공부해서 사용해야 하나요?
-
미해결
데이터 베이스 강의는 언제 올라오나요?
안녕하세요 김영한 강사님의 강의를 쭉 듣고있는 학생입니다.2024년도 초에 데이터 베이스 강의가 나올 것이라는 것을 어디서 봤는데 혹시 언제 강의가 올라오는지 궁금합니다.항상 수업 잘듣고 있습니다 감사합니다.
-
해결됨
스프링 부트 버전 질문
지금 스프링 부트 버전이 3.16이 제일 낮은 버전이고 자바 17이상 부터 사용할 수 있는거 같습니다.하지만 포트폴리오용으로 개발을 하기에 자바 17이 괜찮은지 버전을 낮추는게 좋은지 궁금하고, 버전을 어떻게 낮추는지도 알고 싶습니다..
-
해결됨
[Spring JPA] .save() 대해 문의 드립니다.
4개의 테이블 (a, b, c, d)각각 1:N 관계 입니다. a-b 1:N, b-c 1:N , c-d 1:N (fetchType = LAZY)네개의 테이블에 대한 정보를 fetchjoin을 통해서List<a> 객체로 리턴 받았습니다. List<a> 객체를 루프를 돌면서 a 객체 값에 특정 필드를 변경하고 .save()를 호출 했더니update 쿼리만 나가는게 아니고1) a 테이블의 id(pk)값의 조건 select 쿼리 1회 2) b 테이블 조건절에는 id(FK) select 쿼리 1회3) 위에서 값이 조회될경우 c테이블에 b테이블 결과 id(PK) 값들로 IN 쿼리 1회4) d 테이블 3)과 동일한 구조로 IN쿼리 1회 5) 최종 udpate 쿼리 호출이런식의마치 해당 a 객체 전체 데이터(하위 포함)를 조회 했을떄 날라가는 select쿼리가 모두 호출 되었습니다. 예)List<a> result = aRepository.getFetchJoinQuery();result.stream().forEach(a -> { a.setName("HOON"); aRepository.save(a); -> 해당 시점 위 쿼리 호출됨 logger.info("xxxxxx");}); 디버깅으로 확인한 내용이구요,혹시나 디버깅 모드에서 데이터 확인중에 날아간 쿼리인가 해서 디버깅없이 RUN으로실행했을때도 동일하게 쿼리가 발생하는것이 확인 되었습니다.. save() 사용시에 select 쿼리 발생은 어쩔수 없는걸까요?어쩔수 없다면 save() 메서드 대신 그냥 JPQL로 update 쿼리를 작성해서 사용하는 방법뿐이 없을까요?궁금합니다!
-
해결됨
인터페이스 구현 문제
데이터베이스 연동해서 db의 데이터를 조회하고 싶은데 문제가 있어서 질문드립니다.MemberRepository(인터페이스)package com.project.web.repository; import com.project.web.domain.Member; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; import java.util.Optional; public interface MemberRepository extends JpaRepository<Member,Long>{ Optional<Member> findByIdAndPw(String id, String pw); } JpaMemberRespositorypackage com.project.web.repository; import com.project.web.domain.Member; import org.springframework.data.domain.Example; import org.springframework.stereotype.Repository; import javax.persistence.EntityManager; import javax.transaction.Transactional; import java.util.Optional; public class JpaMemberRepository implements MemberRepository { private final EntityManager em; public JpaMemberRepository(EntityManager em) { this.em = em; } @Override Optional<Member> findByIdAndPw(String id, String pw){ return null; }; } 이렇게 작성했는데 Class 'JpaMemberRepository' must either be declared abstract or implement abstract method 'findAll()' in 'JpaRepository이런 오류가 뜹니다. 함수를 implements하라는건 알겠는데 이렇게 많은 함수를 오버라이딩 하라고 뜨네요.. 제가 인터페이스에 작성한 내용만 작성하고 싶은데 뭐가 문제 일까요?
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
1:N 계층구조 테이블들 간에 Fetch 조인 사용 질문 드립니다.
안녕하세요. 열심히 강의를 듣고 있는 수강생입니다!궁금한게 있습니다.현재 실무에서 사용하고 있는 구조를 좀더 개선시키고 싶어서 열심히 노력중인데요.현재 상황을 말씀 드리겠습니다.A, B, C, D 테이블이 있습니다.각 entitiy 클래스 별로 OneToMany로 A-B, B-C, C-D 이런식으로 Relation이 걸려 있습니다.현재 기준으로는 각 OneToMany 별로 BatchSize=1000 & FetchType=Eager로 적용이 되어있는데요.이렇다 보니, A 테이블 조회시 조회된 ID 기준으로 하위 테이블들에 대해서 IN쿼리가 몇개씩 불려지게 됩니다. 그래서 Fetch 조인을 통해서 한번에 가져오는 방식으로 바꿔보려고 개선을 하려고 했는데요.예를 들면select a.* from A aleft fetch join a.B bleft fetch join b.C cleft fecth join c.D d이런식으로 하려고했더니 컴파일 단계에서 MultipleBagFetchException이 발생 하였습니다.그래서 찾아보니 fecth 조인 사용할 경우에는 oneToMany로 걸리는 대상이 2개 이상이면위와같은 Exception을 떨군다고 하더라구요..(카티션 곱 이슈로 인한 하이버네이트에서 사전에 미리 막는..) 그래서 결국에는 A-B까지만 Fetch로 빼고 나머지 B-C, C-D는 기존 그대로 Eager 전략으로기존과 동일하게 조회되도록 조금이나마 개선은 했는데요..B-C, C-D를 lazy로 바꾸니 N+1이 발생했구요.. N+1해소 하는 방법으로 Fecth조인을 쓰자니위와같은 Exception이 발생을 하구요..어떻게 하면 좋을까요.. 도와주세요!
-
미해결
김영한 스프링 한번에 구매시
안녕하세요김영한 선생님의 스프링 한번에 구매시 블프25%할인이 들어가는데묶음 구매시 추가20%쿠폰은 추가할인은 안되는건가요??추가 할인은 어려운지 확인 부탁드리겠습니다
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
testMember 시 insert가 안 되는 문제
testMember에서 table은 생성이 되는데 값이 insert가 안 됩니다.구글링을 해도 이유를 모르겠어서 질문 드립니다.[directory 구조][Member.java][Repository][MemberRepositoryTest][application.yml][build.gradle]plugins { id 'java' id 'org.springframework.boot' version '3.1.3' id 'io.spring.dependency-management' version '1.1.3' } group = 'com.jpabook' version = '0.0.1-SNAPSHOT' java { 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-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation("org.junit.vintage:junit-vintage-engine") { exclude group: "org.hamcrest", module: "hamcrest-core" } } tasks.named('test') { useJUnitPlatform() } test { useJUnitPlatform() } [실행 후 DB] 아래의 log를 보면 create 쿼리가 날라가는 것은 확인 되지만 insert query는 보이지 않습니다.[log] :: Spring Boot :: (v3.1.3)2023-09-05T04:30:50.821+09:00 INFO 49729 --- [ restartedMain] com.jpabook.jpabook.JpabookApplication : Starting JpabookApplication using Java 17.0.6 with PID 49729 (/Users/innahyeon/study/jpabook/build/classes/java/main started by innahyeon in /Users/innahyeon/study/jpabook)2023-09-05T04:30:50.822+09:00 INFO 49729 --- [ restartedMain] com.jpabook.jpabook.JpabookApplication : No active profile set, falling back to 1 default profile: "default"2023-09-05T04:30:50.841+09:00 INFO 49729 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable2023-09-05T04:30:50.841+09:00 INFO 49729 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'2023-09-05T04:30:51.061+09:00 INFO 49729 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.2023-09-05T04:30:51.068+09:00 INFO 49729 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 4 ms. Found 0 JPA repository interfaces.2023-09-05T04:30:51.294+09:00 INFO 49729 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)2023-09-05T04:30:51.298+09:00 INFO 49729 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat]2023-09-05T04:30:51.298+09:00 INFO 49729 --- [ restartedMain] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.12]2023-09-05T04:30:51.320+09:00 INFO 49729 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2023-09-05T04:30:51.321+09:00 INFO 49729 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 480 ms2023-09-05T04:30:51.331+09:00 INFO 49729 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...2023-09-05T04:30:51.387+09:00 INFO 49729 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection conn0: url=jdbc:h2:tcp://localhost/~/jpastudy1 user=SA2023-09-05T04:30:51.388+09:00 INFO 49729 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.2023-09-05T04:30:51.392+09:00 INFO 49729 --- [ restartedMain] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:tcp://localhost/~/jpastudy1'2023-09-05T04:30:51.435+09:00 INFO 49729 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default]2023-09-05T04:30:51.460+09:00 INFO 49729 --- [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.2.7.Final2023-09-05T04:30:51.461+09:00 INFO 49729 --- [ restartedMain] org.hibernate.cfg.Environment : HHH000406: Using bytecode reflection optimizer2023-09-05T04:30:51.511+09:00 INFO 49729 --- [ restartedMain] o.h.b.i.BytecodeProviderInitiator : HHH000021: Bytecode provider name : bytebuddy2023-09-05T04:30:51.568+09:00 INFO 49729 --- [ restartedMain] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer2023-09-05T04:30:51.660+09:00 INFO 49729 --- [ restartedMain] o.h.b.i.BytecodeProviderInitiator : HHH000021: Bytecode provider name : bytebuddy2023-09-05T04:30:51.882+09:00 INFO 49729 --- [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]2023-09-05T04:30:51.887+09:00 DEBUG 49729 --- [ restartedMain] org.hibernate.SQL : drop table if exists member cascade Hibernate: drop table if exists member cascade 2023-09-05T04:30:51.889+09:00 DEBUG 49729 --- [ restartedMain] org.hibernate.SQL : drop sequence if exists member_seqHibernate: drop sequence if exists member_seq2023-09-05T04:30:51.891+09:00 DEBUG 49729 --- [ restartedMain] org.hibernate.SQL : create sequence member_seq start with 1 increment by 50Hibernate: create sequence member_seq start with 1 increment by 502023-09-05T04:30:51.892+09:00 DEBUG 49729 --- [ restartedMain] org.hibernate.SQL : create table member ( id bigint not null, username varchar(255), primary key (id) )Hibernate: create table member ( id bigint not null, username varchar(255), primary key (id) )2023-09-05T04:30:51.895+09:00 INFO 49729 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'2023-09-05T04:30:51.926+09:00 WARN 49729 --- [ restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning2023-09-05T04:30:51.975+09:00 INFO 49729 --- [ restartedMain] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html]2023-09-05T04:30:52.047+09:00 INFO 49729 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 357292023-09-05T04:30:52.061+09:00 INFO 49729 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''2023-09-05T04:30:52.066+09:00 INFO 49729 --- [ restartedMain] com.jpabook.jpabook.JpabookApplication : Started JpabookApplication in 1.393 seconds (process running for 1.638)
-
해결됨
김영한 스프링 DB-2 Test/resources 폴더
안녕하세요 김영한님 스프링 db2강의를 듣는중 강사님께서 올려주신 프로젝트에는 보시는것처럼 test / resources 파일이 있어 test에서 application.properties파일에 접근할 수 있습니다.강의에서 배운내용을 적용하기위해 새로 플젝을까서 공부하고있는데 보시는것과같이 resources폴더가 없더라구요. 이런경우엔 어떻게 해결하면될까요
-
미해결
h2 database 실행 오류
'스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB접근 기술' 수강자입니다.섹션 6번 스프링 DB접근 기술 첫 강의에서 h2 database 실행이 안됩니다. OS: Windows11H2 databse: 2.1.214ver All Platform이렇게 사용하는데 압축 푼 폴더를 ~/study/h2 에 위치시키고 bin폴더에서 h2.sh 파일 실행이 안됩니다. bash창 열어서 권한을 보면-rwxr-xr-x 1 hongsj 1049089 109 Apr 11 09:01 h2.sh*라고 뜨고, ./h2.sh 명령어나 더블 클릭으로 실행하면 bash창이 잠깐 켜졌다가 아무런 문구도 없이 금방 사라집니다. 어떻게 진행하나요..? h2.bat, h2w.bat 파일들도 cmd창이 잠시 열렸다가 아무런 문구도 없이 사라집니다.
-
미해결
junit.jupiter의 Assertions 질문
Assertions를 입력했을때 웬 이상한 AssertionsKt가 뜹니다.왜이러는거죠?
-
미해결
김영한님의 스프링강의 로드맵을 전체 구매하고싶은데 묶음으로 구매할 수 있나요 ??
로드맵 전체 구매 버튼이 따로 없어서 질문합니다.김영한님의 스프링강의 로드맵을 전체 구매하고싶은데 묶음으로 구매할 수 있나요 ??없다면 강의를 개별적으로 하나씩 구매해야할까요 ??