inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

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

스프링이 제공하는 기능과 스프링 빈의 관계

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 스프링이 제공하는 트렌잭션 AOP를 사용하면 스프링 부트에서 관련된 로직을 자동으로 스프링 빈으로 등록한다는 설명에서 궁금한 점이 생겼습니다. 개발자들이 직접 컴포넌트 스캔이나 @Controller 와 같은 애너테이션을 사용해서 등록하는 빈들과 별개로 트렌젝션과 같은 부가 가능또한 빈으로서 관리가 되어야 사용할 수 있는 것인 걸까요? 어떻게 보면 당연히 등록되어야지! 라는 생각도 들지만, 스프링 빈으로 등록이 되어야하는 객체에 기준이 있는건지 궁금합니다. 예상하는 기준은 다음과 같습니다. 1. 개발자가 서비스 로직을 만들기 위해 개발되는 모든 것은 스프링 빈으로 등록하여 싱글톤으로 용이하게 관리하며 자동의존 주입을 받는다. 2. 데이터 접근 기술이나 트랜잭션 같이 스프링에서 편리하게 관리할 수 있게 만들어 놓은 것을 사용하려면 스프링 빈으로 등록해서 사용해야한다. 2-1. 다만 스프링에서 제공하는 기능적인 기술은 스프링 부트를 사용시 자동으로 등록해준다.

  • spring
  • mvc
  • spring-jdbc
노동준 댓글 1 좋아요 0 조회수 298

log에 빨간줄

미해결

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

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

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

Mybatis에서 Connection의 생명주기 및 Pooling Proxy객체

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 제목과 같습니다. Mybatis에서의 Connection 생명주기와 커넥션풀을 연동했을때의 Connection 생명주기가 궁금합니다. Mybatis에서 커넥션풀을 적용한다고 가정합니다. 만약 하나의 기능 즉, 하나의 쓰레드 단위로 쿼리를 호출하는 매퍼 메소드를 4번 호출한다면 이때 커넥션은 Mapper를 통해 호출하는 DAO 메소드 단위로 Pool에서 4번 꺼내는것인지? 만약 그렇다면, 4번 꺼내는 객체들이 앞서 배운 내용처럼 처음 Pool에서 꺼내서 사용하고 반환한 동일한 Connection 객체를 다시 꺼내어 재사용 하는건지 궁금합니다! 또한 Transcation Rollback 되는것도 동일한 Connection, 동일한 Session에 의한것과 연관성이 있는건지도 궁금합니다. 제가 이해한 부분은 아래와 같습니다. 커넥션풀을 사용하면 커넥션풀에 각각 다른 커넥션이 생성됨(10개) 하나의 커넥션당 하나의 세션이 생성되며, 커넥션의 생명주기에 종속되어 있다. 세션은 트랜잭션을 시작하고 커밋을 관리한다. 커넥션 풀을 사용하면 하나의 스레드내에 각각의 쿼리에 대한 작업 단위가 동일한 커넥션을 반환받는다. 커넥션이 동일하다면 세션도 동일하므로 하나의 트랜잭션으로 관리된다? 이게 맞을까요?

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

black 설치

해결됨

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 (장고 4.2 기준)

안녕하세요 00-06 black 설치과정에 질문입니다. 라이브러리에 추가하고 black 패키지 추가하려고 하니깐 활성화가 안되어있습니다.. 어떻게 조치해야 될까요?

  • react
  • python
  • django
  • web-api
  • htmx
별다방 댓글 1 좋아요 1 조회수 240

업로드가 되지 않습니다.

미해결

워드프레스 자동 포스팅 프로그램 개발 강의 (ChatGPT API)

안녕하세요, 수강중인 학생입니다. 3.upload.py 부터 코드가 제대로 동작하지 않습니다. raise RemoteDisconnected("Remote end closed connection without" http.client.RemoteDisconnected: Remote end closed connection without response 이런 내용으로 인해 글이 올라가지 않는데 원인이 무엇일까요?

  • python
  • wordpress
  • openai
  • xmlrpcclient
  • chatgpt
조우진 댓글 3 좋아요 0 조회수 402

커넥션 생성

해결됨

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

초기에 트랜잭션이 시작되면 커넥션은 누가 얻어오는건가요? Repository에서 DataSourceUtils.getConnection(dataSource); 실행되고 doGetConnection 메서드에서 ConnectionHolder conHolder = (ConnectionHolder) TransactionSynchronizationManager.getResource(dataSource); Connection con = fetchConnection(dataSource); 이렇게 얻어오는거같은데 트랜잭션 동기화매니저가 커넥션을 얻어오고 이 커넥션을 트랜잭션 매니저가 사용하는건가요??

  • spring
  • mvc
  • spring-jdbc
sjphone95 댓글 1 좋아요 1 조회수 280

실제 테스트

미해결

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

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예 [질문 내용] 강의 잘 듣고 있습니다. 현재는 h2 database를 사용해서 구현하는 테스트인데 실제로 테스트 할 때 데이터베이스를 건들면 문제가 생길 것같습니다. 그럴 때에는 어떤 방식으로 테스트를 진행하나요??

  • spring
  • mvc
  • spring-jdbc
김태헌 댓글 3 좋아요 0 조회수 334

http api test

미해결

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

http -v 명령어가 작동이 안되는데 혹시 제가 잘못하고 있는 것이 있을까요..?

  • spring
  • spring-boot
  • spring-jdbc
haist0617 댓글 1 좋아요 0 조회수 479

DataSource와 트랜잭션 매니저

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 해당 강의를 들으면서 DataSource 와 트랜잭션 매니저의 역할이 좀 헷갈립니다. 강의 중에는 트랜잭션 매니저는 데이터소스를 통해 커넥션을 생성하므로 DataSource가 필요하다는 말씀과 PDF에도 그렇게 적혀있는데요. DataSource는 커넥션 풀이나 DriverManagerDataSource 같은 구현체를 다루기 위한 인터페이스로 이전 강의들로 통해 알고 있었습니다. 그리고 실제 구현체는 이 인터페이스를 통해 구현체가 들어오는 것이고요. [질문 내용] 근데 왜 트랜잭션 매니저를 사용하면서 한번 더 인자를 트랜잭션 매니저로 넘겨주어야 하는 것일까요..? 아래 코드입니다. PlatformTransactionManager transactionManager = new DataSourceTransactionManager(dataSource); 그리고 트랜잭션 매니저는 추상화와 동기화를 진행한다고 했는데 이미 추상화는 DataSource도 되고 있는 것 같은데 파라미터를 통한 동일한 커넥션 넘겨주는 부분 때문에 트랜잭션 매니저를 사용하는 것일까요?

  • spring
  • mvc
  • spring-jdbc
nick 댓글 2 좋아요 0 조회수 478

SQLExceptionTranslator DI 관련 질문

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 1-1. 선생님 방식 코드 (MemberRepositoryV4_2) private final DataSource dataSource; private final SQLExceptionTranslator exTranslator; @Autowired public MemberRepositoryV4_2(DataSource dataSource){ this.dataSource = dataSource; this.exTranslator = new SQLErrorCodeSQLExceptionTranslator(dataSource); } 1-2. 선생님 방식 코드 (MemberServiceV4Test) @TestConfiguration static class TestConfig{ @Bean public MemberRepository memberRepository(){ return new MemberRepositoryV4_2(dataSource) } } 2-1.제가 생각한 방식 코드 (MemberRepositoryV4_2) private final DataSource dataSource; private final SQLExceptionTranslator exTranslator; @Autowired public MemberRepositoryV4_2(DataSource dataSource, SQLExceptionTranslator exTranslator) { this.dataSource = dataSource; this.exTranslator = exTranslator; } 2-2.제가 생각한 방식 코드(MemberServiceV4Test) @TestConfiguration static class TestConfig{ @Bean public SQLExceptionTranslator sqlExceptionTranslator(){ return new SQLErrorCodeSQLExceptionTranslator(dataSource); } @Bean public MemberRepository memberRepository(){ return new MemberRepositoryV4_2(dataSource , sqlExceptionTranslator()); } } 안녕하세요 "스프링 예외 추상화 적용" 관련 강의보다 궁금한 점이 생겨 질문드립니다. 지금까지 코드 설계 시에 수동 빈 등록을 하는 경우 해당 영역은 설정 영역으로 간주되어, @Configuration을 사용하는 설정 영역 / 애플리케이션 영역 으로 나누어서 설계하는 것이 객체지향적인 관점에서 훨씬 좋은 코드라고 이해하고 설계해왔습니다. 즉 TestConfig와 같이 수동 빈 등록을 해주는 설정 영역 코드가 테스트 상황이 아닌 실제 상황이라고 가정하였을 때, 저는 2-2. 제가 구현한 코드 처럼 SQLErrorCodeSQLExceptionTranslator을 설정 영역(TestConfig)에서 수동 빈 등록을 해주고 2-1.제가 구현한 코드 처럼 리포지토리(MemberRepositoryV4_2) 에서 해당 객체를 생성자의 파라메터로 DI 받는 형태로 구현하였습니다. 하지만 1-1. 선생님 코드 에선 SQLErrorCodeSQLExceptionTranslator 객체를 직접 리포지토리에서 생성하여 변수에 주입하고 1-2. 선생님 코드 처럼 설정 영역에선 파라메터의 변경 없이 그저 구현체만 MemberRepositoryV4_1 에서 MemberRepositoryV4_2로 갈아끼우는 것을 확인할 수 있었습니다. [핵심 질문] 선생님께서 1-1 및 1-2 와 같이 코드를 구현하신 이유가 1-2의 설정 영역 코드(TestConfig)에서 서비스에선 MemberRepository라는 인터페이스를 구현하니, 파라메터의 변경 없이 그냥 구현체를 MemberRepositoryV4_1 => MemberRepositoryV4_2 로 갈아끼울 수 있다는 것을 보여주시기 위해 하신 건지 아니면 SQLErrorCodeSQLExceptionTranslator 객체의 의존관계 주입은 선생님 방식대로 하는 게 맞는 건지 궁금해서 여쭤봅니다 !

  • spring
  • mvc
  • spring-jdbc
경민 댓글 1 좋아요 0 조회수 393

import pygame에서 계속 오류가 발생해요

미해결

파이썬 무료 강의 (활용편1) - 추억의 오락실 게임 만들기 (3시간)

cmd에서 import pygame했을 때는 오류없이 제대로 됐는데 Vs code에서 import pygame을 하면 이런 오류가 계속해서 발생합니다. 어떻게 해야되나요? Exception has occurred: ModuleNotFoundError No module named 'pygame' File " C:\Users\User\Desktop\PythonWorkspace\pygame_basic\1_create_ frame.py ", line 1, in <module> import pygame ModuleNotFoundError: No module named 'pygame'

  • python
  • pygame
  • gui
서민서 댓글 2 좋아요 0 조회수 3708

직접 RuntimeException을 상속한 예외를 만든 이유

해결됨

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 리포지토리에선 체크예외(Exception)를 언체크예외(RuntimeException)로 변환함으로써 서비스 계층에선 더 이상 throws SQLException을 할 의무가 사라져 더 이상 JDBC 기술에 종속적이지 않을 수 있으며 순수 비즈니스 로직만 남길 수 있었습니다. 여기서 RuntimeException으로 직접 변환하지 않고, 그를 상속받은 MyDuplicateKeyException , MyDbException 예외를 만들어서 해당 예외로 변환한 이유는 명시적으로 어디서 어떤 예외가 터졌는지 알기 위함이라고 이해해도 괜찮을까요?

  • spring
  • mvc
  • spring-jdbc
경민 댓글 1 좋아요 0 조회수 339

트랜잭션 어노테이션

미해결

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

[질문 내용] 트랜잭션 애너테이션을 적용하면 트랜잭션 템플릿도 자동으로 적용이 되는걸까요 ?? 그리고 트랜잭션 애노테이션을 적용하지 않고 템플릿만 적용하는건 어떤경우에 쓸수있나요 ??

  • spring
  • mvc
  • spring-jdbc
해톨 댓글 1 좋아요 0 조회수 241

기본환경설정(2-1) 강의에서, Ctrl+F5 눌러도 Hello python!일 출력되지 않습니다.

미해결

프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)

안녕하세요. 이전강의들을 포함해서, "파이썬 기본 환경 설정(2-1) : 개발 환경 설정(Vscode) - Windows" 강의 내용을 그대로 따라서 했습니다. 그런데 해당 강의 동영상의 25:33에서처럼 Ctrl+F5 단축키를 누르거나 Run 메뉴에서 Run Without Debugging을 직접 선택해도, 강의에서처럼 Hello python!이 출력되지 않고 이렇게 Select debugger라고 나옵니다. 이때 무엇을 선택해야 하나요? 어떻게 하면 강사선생님처럼 Run Without Debugging을 실행할 수 있나요? 참고로 오른쪽 상단의 오른쪽 방향 세모 아이콘을 클릭하면 문제없이 실행하고 Hello python!이 출력됩니다. (저는 단축키 설정에 대해서 질문을 드린 게 아닙니다.)

  • python
defoogle 댓글 2 좋아요 0 조회수 619

NullPointerException

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. java.lang.NullPointerException: Cannot invoke "hello.jdbc.repository.MemberRepositoryV1.save(hello.jdbc.domain.Member)" because "this.memberRepository" is null memberRepositoryV1.save 하는 과정에서 널포인터익셉션이 났습니다. package hello.jdbc.repository; import hello.jdbc.connection.DBConnectionUtil; import hello.jdbc.domain.Member; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.jdbc.support.JdbcUtils; import javax.sql.DataSource; import java.sql.*; import java.util.NoSuchElementException; /** * JDBA - DataSource 사용, JdbcUtils 사용 */ @Slf4j public class MemberRepositoryV1 { private final DataSource dataSource; public MemberRepositoryV1(DataSource dataSource) { this.dataSource = dataSource; } public Member save(Member member) throws SQLException { String sql = "insert into member(member_id, money) values (?,?)"; Connection con = null; PreparedStatement pstmt = null; try { con = getConnection(); pstmt = con.prepareStatement(sql); pstmt.setString(1, member.getMemberId()); pstmt.setInt(2, member.getMoney()); pstmt.executeUpdate(); return member; }catch (SQLException e) { log.info("db error", e); throw e; }finally { close(con, pstmt, null); } } public Member findById(String memberId) throws SQLException { String sql = "select * from member where member_id=?"; Connection con = null; PreparedStatement pstmt = null; ResultSet rs = null; try { con = getConnection(); pstmt = con.prepareStatement(sql); pstmt.setString(1, memberId); rs = pstmt.executeQuery(); if (rs.next()) { Member member = new Member(); member.setMemberId(rs.getString("member_id")); member.setMoney(rs.getInt("money")); return member; } else { throw new NoSuchElementException("member not found memberId=" + memberId); } } catch (SQLException e) { log.info("db error", e); throw e; }finally { close(con, pstmt, rs); } } public void update(String memberId, int money) throws SQLException { String sql = "update member set money=? where member_id=?"; Connection con = null; PreparedStatement pstmt = null; try { con = getConnection(); pstmt = con.prepareStatement(sql); pstmt.setInt(1, money); pstmt.setString(2, memberId); int resultSize = pstmt.executeUpdate(); log.info("resultSize={}", resultSize); }catch (SQLException e) { log.info("db error", e); throw e; }finally { close(con, pstmt, null); } } public void delete(String memberId) throws SQLException { String sql = "delete from member where member_id=?"; Connection con = null; PreparedStatement pstmt = null; try { con = getConnection(); pstmt = con.prepareStatement(sql); pstmt.setString(1, memberId); pstmt.executeUpdate(); }catch (SQLException e) { log.info("db error", e); throw e; }finally { close(con, pstmt, null); } } private void close(Connection con, Statement stmt, ResultSet rs) { JdbcUtils.closeResultSet(rs); JdbcUtils.closeStatement(stmt); JdbcUtils.closeConnection(con); } private Connection getConnection() throws SQLException { Connection con = dataSource.getConnection(); log.info("get connection={}, class={}", con, con.getClass()); return con; } } package hello.jdbc.repository; import com.zaxxer.hikari.HikariDataSource; import hello.jdbc.connection.ConnectionConst; import hello.jdbc.domain.Member; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.jdbc.datasource.DriverManagerDataSource; import java.net.URL; import java.sql.DriverManager; import java.sql.SQLException; import java.util.NoSuchElementException; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; @Slf4j class MemberRepositoryV1Test { MemberRepositoryV1 repository; @BeforeEach void beforeEach() { //기본 driverManager - 항상 새로운 커넥션을 획득 // DriverManagerDataSource dataSource = new DriverManagerDataSource(ConnectionConst.URL, ConnectionConst.USERNAME, ConnectionConst.PASSWORD); //커넥션 풀링 HikariDataSource dataSource = new HikariDataSource(); dataSource.setJdbcUrl(ConnectionConst.URL); dataSource.setUsername(ConnectionConst.USERNAME); dataSource.setPassword(ConnectionConst.PASSWORD); repository = new MemberRepositoryV1(dataSource); } @Test void crud() throws SQLException { //save Member member = new Member("memberV2", 10000); repository.save(member); //findById Member findMember = repository.findById(member.getMemberId()); log.info("findMember={}", findMember); log.info("member != findMember {}", member == findMember); assertThat(findMember).isEqualTo(member); //update repository.update(member.getMemberId(), 20000); Member updateMember = repository.findById(member.getMemberId()); assertThat(updateMember.getMoney()).isEqualTo(20000); //delete repository.delete(member.getMemberId()); assertThatThrownBy(() -> repository.findById(member.getMemberId())) .isInstanceOf(NoSuchElementException.class); } }

  • spring
  • mvc
  • spring-jdbc
아가미 댓글 2 좋아요 0 조회수 324

테스트 할 때 궁금한점입니다!

미해결

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

========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 테스트 코드를 작성하다가 궁금한점입니다! assertion을 사용할 때 JUnit이 아닌 AssertJ 를 추천하는 이유가 있을까요?

  • spring
  • mvc
  • spring-jdbc
김태헌 댓글 1 좋아요 0 조회수 232

h2 에서 연결 시험에서 오류가 나시는 분들께

미해결

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

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 연결 시험 에서 실패하시는 분들은 바로 연결 을 누르시면 됩니다. 저는 연결 시험 에서 실패하길래 뭐가 문제인지 찾다가 연결 을 누르니 db 가 정상적으로 생성되네요. 참고 하세요!

  • spring
  • mvc
  • spring-jdbc
뚜비 댓글 2 좋아요 4 조회수 565

h2 데이터베이스는 preparestatement를 구현하고 있는 것일까요?

미해결

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

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. JDBC 개발에 있어 제일 핵심이 되는 내용은 JDBC는 인터페이스이고 각각의 데이터베이스는 이 JDBC인터페이스를 구현하여 제공하고 있기에, 개발자들은 JDBC를 통해 다양한 데이터베이스를 용이하게 사용할 수 있는 점인 것 같습니다. preparedStatement는 JDBC 의 3가지 기능인 1. Connection 획득 SQL 전달 결과 조회 중 두 번째 SQL 전달과 관련된 기능이라 생각되는데요. 그런 prepareStatement는 Connection 인터페이스 안에 있는 메서드였고, Statement를 상속하고 있는 또 다른 인터페이스인 PreparedStatement 타입인 것을 알게 되었습니다. 1) 그렇다면 Preparedstatement 또한 JDBC의 일부분이고, h2데이터베이스는 이 PreparedStatement에서 지정해놓은 메서드들을 구현하고 있다고 생각해도 되는지 궁금합니다. 2) Connection 인터페이스든 Statement 인터페이스이든 package를 보면 java.sql 에 속해 있는데, java.sql 패키지 자체가 jdbc라고 생각해도 되는지 궁금합니다.

  • spring
  • mvc
  • spring-jdbc
노동준 댓글 1 좋아요 0 조회수 255

안녕하세요 복습은 어떤식으로 하면 되나요

미해결

[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

안녕하세요 복습은 어떤식으로 하면 되나요

  • python
  • 웹-크롤링
닉네임을 등록해주세요 댓글 1 좋아요 0 조회수 258

포스트맨 구성이 달라졌어요

미해결

[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)

- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다) - 이외의 문의등은 평생강의이므로 양해를 부탁드립니다 - 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다 - 잠깐! 인프런 서비스 운영(다운로드 방법포함) 관련 문의는 1:1 문의하기를 이용해주세요. 포스트맨 구성이 달라져서 블로그 보고 따라해봐서 성공했습니다 업데이트 되어 달라진 것 같아서, 다른 분들도 참고하실 수 있게 강의 내용도 업데이트 되거나 게시판에 업로드 해주시면 좋을 거 같습니다-

  • python
  • 웹-크롤링
  • 포스트맨
juhyun2393 댓글 2 좋아요 2 조회수 444

인기 태그

인프런 TOP Writers

주간 인기글