inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

H2 데이터베이스 설정 관련 질물

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

h2.bat을 실행하면 cmd 창이 계속 떠 있습니다. (cmd 창을 죽이면 콘솔 접속이 안되네요) 정상인가요?

  • spring
  • mvc
  • spring-jdbc
jfk6725 댓글 1 좋아요 0 조회수 230

hikari 커넥션 풀 초기화 정보 출력

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

이런거 저는 안 뜨는데 뭘 어떻게 해야 하나요 [MyPool connection adder] MyPool - Added connection conn0: url=jdbc:h2:.. user=SA [MyPool connection adder] MyPool - Added connection conn1: url=jdbc:h2:.. user=SA [MyPool connection adder] MyPool - Added connection conn2: url=jdbc:h2:.. user=SA [MyPool connection adder] MyPool - Added connection conn3: url=jdbc:h2:.. user=SA [MyPool connection adder] MyPool - Added connection conn4: url=jdbc:h2:.. user=SA ... [MyPool connection adder] MyPool - Added connection conn9: url=jdbc:h2:.. user=SA

  • spring
  • mvc
  • spring-jdbc
댓글 1 좋아요 0 조회수 264

DB insert 안됨

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

window command에서 h2.bat하고 db띄운 후 그냥 창x눌러서 껐는데요 그다음 다시 커맨드 열어서 h2.bat하고 insert 쿼리 날렸는데 insert가 반영이 안돼요 jsessionid 처음 나왔던걸로 해도 안되고 새로 나오는 것으로 해도 안되는데 창을 새로 띄워도 원래 jsessionid로 해야 하는건가요? test.mv .db 파일도 새로 생성해야 하나요? 파일을 올리고 싶은데 첨부파일 넣는 곳이 없네요 어떻게 해야 하나요?

  • spring
  • mvc
  • spring-jdbc
jwhong1515 댓글 1 좋아요 0 조회수 190

섹션6. 자동 구성 정보 파일 분리 강의에서 질문 있습니다

미해결

토비의 스프링 부트 - 이해와 원리

MyAutoConfigImportSelector를 ImportSelector 인터페이스를 구현하시는 강의를 보았습니다. 한가지 궁금한게 직접 스프링 부트 실행시 MyAutoConfigImportSelector가 생성되는 것을 디버깅을 통해 확인을 해보았는데, ConfigurationClassParser 클래스의 processImports 메서드라는 곳에서 일시적으로 ImportSelect 구현 클래스(MyAutoConfigImportSelector)를 인스턴스화 하는 코드를 확인하였고, 그 이후, ImportSelect 구현 클래스인 MyAutoConfigImportSelector의 selectImports 메서드를 호출하는 것을 확인하였습니다. (ConfigurationClassParser 566 ~ 582 라인) 그렇다면, MyAutoConfigImportSelector의 생성자에서 classLoader를 의존성 주입 받는 것이 아니라 일시적으로 MyAutoConfigImportSelector를 인스턴스화하여 classLoader를 생성자에서 초기화하고, 그 이후에 selectImports를 호출하는걸로 봐도 될까요? 라이브러리 코드를 좀더 깊게 살펴보니, 생성자에서 Environment, ResourceLoader, BeanFactory, ClassLoader 총 4가지 클래스에 대해서만 객체를 설정해주는 것을 확인할 수 있었습니다. 처음엔 classLoader를 스프링 빈 컨테이너가 알아서 의존성 주입으로 classLoader를 주입하는줄 알았는데, 생각을 해보니 의존성 주입은 스프링 빈 컨테이너가 스캔 대상인 빈들 내부에서만 의존성 주입을 하는 것으로 알고 있는데, MyAutoConfigImportSelector 같은 경우는 ApplicationContext 클래스에서 확인해보아도 빈으로 생성되지 않고 있습니다.

  • spring
  • spring-boot
  • spring-jdbc
isLoaded() 댓글 2 좋아요 0 조회수 329

throws SQLException 관련 질문드립니다.

해결됨

스프링 DB 1편 - 데이터 접근 핵심 원리

[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요! 강의 8분대에 등장하는 public void accountTransfer(String fromId, String toId, int money) throws SQLExcetpion 함수에서 SQLException을 던진다고 나와있는데 코드 내부에 try - catch 구문을 보면 SQLException을 잡아서 IllegalStateException을 throw 해주고 있습니다. 체크 예외인 SQLException이 발생 시 잡아서 언체크 예외인 IllegalStateException을 던져주는데 메서드에는 왜 throws SQLException으로 작성되어 있는지 모르겠습니다. 설명해주시면 감사드리겠습니다!!

  • spring
  • mvc
  • spring-jdbc
s2사랑해요s2김영한s2 댓글 1 좋아요 0 조회수 254

check에 controller의 의미?

해결됨

스프링 DB 1편 - 데이터 접근 핵심 원리

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] @Test void checked() { Controller controller = new Controller(); assertThatThrownBy(() -> controller.request()) .isInstanceOf(Exception.class); } @Test void checked2() { Service service = new Service(); assertThatThrownBy(() -> service.logic()) .isInstanceOf(Exception.class); } 컨트롤러를 만들어서 하지 않고 그냥 서비스에서 테스트해도 되는데, 컨트롤러를 만들어서 하는 이유는 뭔지 궁금합니다

  • spring
  • mvc
  • spring-jdbc
RealTone 댓글 1 좋아요 1 조회수 234

영한님 TransactionTemplate 설명 관련 질문이 있습니다!

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

안녕하세요! 강의 잘 보고 있는 학생입니다. '트랜잭션 문제 해결 - 트랜잭션 템플릿' 강의 10분 30초를 보면 영한님께서 트랜잭션 템플릿의 기본 동작이 "체크 예외가 발생하면 트랜잭션을 롤백하지 않고 커밋한다"라고 말씀하셔서 package org.springframework.transaction.support; 위 패키지에 있는 TransactionTemplate 의 execute코드를 확인하게 되었는데요 예외의 최상위 계층인 Throwable이 catch되면 rollback되는 구조인데, 이렇게 되면 체크 예외여도 롤백이 되는 것 아닌가요?? 확인한 버전은 SpringBoot 3.x 버전입니다. 현재는 바뀐것인지 아니면, 제가 잘못된 부분을 찾고 있는 것인지 답변 부탁드립니다 감사합니다!

  • spring
  • mvc
  • spring-jdbc
최승준 댓글 2 좋아요 0 조회수 454

MemberServiceV4Test.java 테스트 실행하는데 오류가 발생합니다.

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

package hello.jdbc.service; import hello.jdbc.domain.Member; import hello.jdbc.repository.MemberRepository; import hello.jdbc.repository.MemberRepositoryV4_1; import lombok.extern.slf4j.Slf4j; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.aop.support.AopUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.TestConfiguration; import org.springframework.context.annotation.Bean; import javax.sql.DataSource; import java.sql.SQLException; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; /** * 예외 누수 문제 해결 * SQLException 제거 * * MemberRepository 인터페이스 의존 */ @Slf4j @SpringBootTest class MemberServiceV4Test { public static final String MEMBER_A = "memberA"; public static final String MEMBER_B = "memberB"; public static final String MEMBER_EX = "ex"; @Autowired private MemberRepository memberRepository; @Autowired private MemberServiceV4 memberService; @TestConfiguration static class TestConfig { private final DataSource dataSource; public TestConfig(DataSource dataSource) { this.dataSource = dataSource; } @Bean MemberRepository memberRepository() { return new MemberRepositoryV4_1(dataSource); } @Bean MemberServiceV4 memberServiceV4() { return new MemberServiceV4(memberRepository()); } } @AfterEach void after() { memberRepository.delete(MEMBER_A); memberRepository.delete(MEMBER_B); memberRepository.delete(MEMBER_EX); } @Test void AopCheck() { log.info("memberService class={}", memberService.getClass()); log.info("memberRepository class={}", memberRepository.getClass()); Assertions.assertThat(AopUtils.isAopProxy(memberService)).isTrue(); Assertions.assertThat(AopUtils.isAopProxy(memberRepository)).isFalse(); } @Test @DisplayName("정상 이체") void accountTransfer() { //given` Member memberA = new Member(MEMBER_A, 10000); Member memberB = new Member(MEMBER_B, 10000); memberRepository.save(memberA); memberRepository.save(memberB); //when memberService.accountTransfer(memberA.getMemberId(), memberB.getMemberId(), 2000); //then Member findMemberA = memberRepository.findById(memberA.getMemberId()); Member findMemberB = memberRepository.findById(memberB.getMemberId()); assertThat(findMemberA.getMoney()).isEqualTo(8000); assertThat(findMemberB.getMoney()).isEqualTo(12000); } @Test @DisplayName("이체중 예외 발생") void accountTransferEx() { //given Member memberA = new Member(MEMBER_A, 10000); Member memberEx = new Member(MEMBER_EX, 10000); memberRepository.save(memberA); memberRepository.save(memberEx); //when assertThatThrownBy(() -> memberService.accountTransfer(memberA.getMemberId(), memberEx.getMemberId(), 2000)) .isInstanceOf(IllegalStateException.class); //then Member findMemberA = memberRepository.findById(memberA.getMemberId()); Member findMemberB = memberRepository.findById(memberEx.getMemberId()); assertThat(findMemberA.getMoney()).isEqualTo(10000); assertThat(findMemberB.getMoney()).isEqualTo(10000); } } Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended> Task :testMemberServiceV4Test > AopCheck() FAILED org.springframework.jdbc.CannotGetJdbcConnectionException at MemberServiceV4Test.java:64 Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException at MemberServiceV4Test.java:64MemberServiceV4Test > 이체중 예외 발생 FAILED org.springframework.jdbc.CannotGetJdbcConnectionException at MemberServiceV4Test.java:102 Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException at MemberServiceV4Test.java:102MemberServiceV4Test > 정상 이체 FAILED org.springframework.jdbc.CannotGetJdbcConnectionException at MemberServiceV4Test.java:83 Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException at MemberServiceV4Test.java:833 tests completed, 3 failed> Task :test FAILEDFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':test'.> There were failing tests. See the report at: file:///C:/study/spring-db/jdbc/jdbc/build/reports/tests/test/index.html* Try:> Run with --scan to get full insights.Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.For more on this, please refer to https://docs.gradle.org/8.7/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.BUILD FAILED in 8s4 actionable tasks: 1 executed, 3 up-to-date 이런 오류가 발생하는데 어떻게 해결해야 될 지 몰라서 문의 드립니다.

  • spring
  • mvc
  • spring-jdbc
lgh8079 댓글 1 좋아요 0 조회수 236

member.get 함수

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의 중 아래 부분에서 의문이 들어 질문 남깁니다. pstmt.setString(1, member.getMemberId()); pstmt.setInt(2, member.getMoney());. 이 부분에서 저희가 만든 member클래스에는 get 함수를 넣지 않았는 데 get 함수를 어떻게 쓸 수 있는 걸까요??

  • spring
  • mvc
  • spring-jdbc
JuHee_Lee 댓글 1 좋아요 0 조회수 197

커넥션에 관한 질문 드립니다.

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네 [질문 내용] 안녕하세요 커넥션과 관련된 질문을 드리고 싶습니다. 해당 강의에서 커넥션이 여러번 반복되어 나오는데 커넥션 개념이 정리가 잘 되지 않습니다. 애플리케이션 로직이 커넥션을 조회하면 DB 드라이버에서 DB와 TCP/IP 커넥션 연결을 한다고 나옵니다. 그 후 다다음 단계에서 커넥션 이 생성 완료되었다고 나오는데 커넥션을 연결하는 것과 커넥션이 생성되는 것이 모호하게 이해가 잘 되질 않습니다. 이 부분에 대한 추가적인 설명을 부탁드려도 될까요? 그 후 DB드라이버는 커넥션을 반환한다고 나오는데 이것은 커넥션 객체를 말하는 것일까요?

  • spring
  • mvc
  • spring-jdbc
  • 커넥션
s2사랑해요s2김영한s2 댓글 1 좋아요 0 조회수 220

PPT에 오타가 존재하는 것 같습니다.

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

2강 커넥션 풀과 데이터 소스 챕터에서 11 페이지의 상단에 이부분... 쓰레드 풀이 아니라 커넥션 풀 아닌가요? 쓰레드 풀은 지금 내용이 아닌거 같아요

  • spring
  • mvc
  • spring-jdbc
JH Han 댓글 1 좋아요 0 조회수 198

공통 예외처리 질문 있습니다

해결됨

스프링 DB 1편 - 데이터 접근 핵심 원리

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 예외를 던질 때 cause 예외를 함께 넘기니까 공통 예외처리하는 부분에서는 Exception으로 예외를 잡아서 로그를 남기나요?

  • spring
  • mvc
  • spring-jdbc
eoyeong 댓글 1 좋아요 0 조회수 311

질문이 있습니다...

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

[질문 내용] 궁금한점이 몇가지 있습니다 ...

  • spring
  • mvc
  • spring-jdbc
댓글 1 좋아요 0 조회수 220

@Transactional은 수동커밋으로 변경되나요 ?

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 제목이 곧 내용입니다

  • spring
  • mvc
  • spring-jdbc
코찔질이 댓글 1 좋아요 0 조회수 347

이체중 예외발생 로그

해결됨

스프링 DB 1편 - 데이터 접근 핵심 원리

[질문 내용] 테스트를 돌렸을때 이런 깨지는현상은 어떻게 변경할수있을까요? 세팅에서 UTF-8로 변경해보았지만 변경이 안되네요 ㅠㅠ.

  • spring
  • mvc
  • spring-jdbc
송민석 댓글 1 좋아요 2 조회수 339

진행과정중 로그 표시

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

김영한 선생님과는 다르게 너무 로그가 간단하게 나오고 좌측에 Test Results도 열어봐도 아무것도 없다고 나옵니다 왜그럴까요? ㅠㅠ

  • spring
  • mvc
  • spring-jdbc
송민석 댓글 1 좋아요 0 조회수 1192

8분쯤 나오는 첫번째테스트 오류

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

[질문 내용] 다음과 같은 오류가 발생하는데 이유를 모르겠네요 ㅠㅠ

  • spring
  • mvc
  • spring-jdbc
송민석 댓글 1 좋아요 0 조회수 356

web.xml -> dispatcherServlet 질문

미해결

토비의 스프링 부트 - 이해와 원리

안녕하세요. 강의에서 조금 벗어난 주제일 수도 있는데, 기존 레거시 프로젝트를 스프링부트로 전환하는 작업을 하고 있는데, web.xml의 .do를 spring boot에서 어떻게 사용할 수 있는지 너무너무 궁금합니다. 현재 아래와 같이 변경해 봤는데 전혀 작동을 안 합니다 ㅠㅠ @Configuration @RequiredArgsConstructor public class ServletConfig { private final DispatcherServlet dispatcherServlet; @PostConstruct public void init() { dispatcherServlet.setThreadContextInheritable(true); } @Bean public ServletRegistrationBean<DispatcherServlet> dispatcherServletRegistration() { ServletRegistrationBean<DispatcherServlet> registration = new ServletRegistrationBean<>(dispatcherServlet, "/", "*.do"); registration.setLoadOnStartup(-1); registration.setName(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME); return registration; } @Bean public DispatcherServletPath dispatcherServletPath() { return () -> "/"; } } spring 4 버전의 web.xml 에서 url-mapping을 / , *.do 로 설정 해 놨는데, 프로젝트에서 @RequestMapping을 사용할땐 .do를 따로 적지 않아도 .do 요청을 알아서 매핑해 주던데, 이 부분도 정확히 어떤 원리로 동작하는지 모르겠습니다 ㅠㅠ ex) login.do --> @RequestMapping("/login") .do 설정을 2주째 보고 있는데 진척이 없네요 .....

  • spring
  • spring-boot
  • spring-jdbc
댓글 1 좋아요 1 조회수 524

@Transactional 위치와 적용에 대하여

미해결

스프링 DB 1편 - 데이터 접근 핵심 원리

[질문 내용] @Transactional public void accountTransfer(String fromId, String toId, int money) throws SQLException { bizLogic(fromId, toId, money); } public void bizLogic(String fromId, String toId, int money) throws SQLException { Member fromMember = memberRepository.findById(fromId); Member toMember = memberRepository.findById(toId); memberRepository.update(fromId, fromMember.getMoney() - money); validation(toMember); memberRepository.update(toId, toMember.getMoney() + money); } 안녕하세요. 강의 코드와 같이 accountTransfer을 실행했을때 트랜잭션이 잘 작동되어 오류가 발생했을때 롤백이 실행됩니다. @Transactional public void accountTransfer(String fromId, String toId, int money) throws SQLException { Member fromMember = memberRepository.findById(fromId); Member toMember = memberRepository.findById(toId); memberRepository.update(fromId, fromMember.getMoney() - money); validation(toMember); memberRepository.update(toId, toMember.getMoney() + money); } 이 코드 또한 그렇습니다. public void accountTransfer(String fromId, String toId, int money) throws SQLException { bizLogic(fromId, toId, money); } @Transactional public void bizLogic(String fromId, String toId, int money) throws SQLException { Member fromMember = memberRepository.findById(fromId); Member toMember = memberRepository.findById(toId); memberRepository.update(fromId, fromMember.getMoney() - money); validation(toMember); memberRepository.update(toId, toMember.getMoney() + money); } 하지만 이 코드에서 accountTransfer을 실행했을때 트랜잭션이 작동하지 않습니다. 이유가 무엇일까요?

  • spring
  • mvc
  • spring-jdbc
yoona405 댓글 1 좋아요 0 조회수 353

인기 태그

인프런 TOP Writers

주간 인기글