일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- http
- 김영한
- Servlet
- 스프링
- 스프링 핵심 기능
- Greedy
- JDBC
- Exception
- 스프링 핵심 원리
- transaction
- 자바
- SpringBoot
- springdatajpa
- 알고리즘
- jpa
- QueryDSL
- Android
- pointcut
- 인프런
- db
- AOP
- java
- spring
- Spring Boot
- Thymeleaf
- 그리디
- JPQL
- Proxy
- 백준
- kotlin
- Today
- Total
목록db (18)
개발자되기 프로젝트
ConnectionTest - 드라이버 매니저 @Test void driverManager() throws SQLException { Connection con1 = DriverManager.getConnection(URL, USERNAME, PASSWORD); Connection con2 = DriverManager.getConnection(URL, USERNAME, PASSWORD); log.info("connection={}, class={}",con1, con1.getClass()); log.info("connection={}, class={}",con2, con2.getClass()); } ConnectionTest - 데이터소스 드라이버 매니저 추가 스프링이 제공하는 DataSource 가 적..
DataSource 이해 커넥션을 얻는 방법은 앞서 학습한 JDBC DriverManager 를 직접 사용하거나, 커넥션 풀을 사용하는 등 다양한 방법이 존재한다. Connection을 획득하는 다양한 방법 DriverManager를 통해 커넥션 획득 우리가 앞서 JDBC로 개발한 애플리케이션 처럼 DriverManager 를 통해서 커넥션을 획득하다가, 커넥션 풀을 사용하는 방법으로 변경하려면 어떻게 해야할까??? DriverManager를 통해 커넥션 획득하다가 커넥션 풀로 변경시 문제점 예를 들어서 애플리케이션 로직에서 DriverManager 를 사용해서 커넥션을 획득하다가 HikariCP 같은 커넥션 풀을 사용하도록 변경하면 커넥션을 획득하는 애플리케이션 코드도 함께 변경해야 한다. 의존관계가 ..
데이터베이스 커넥션을 매번 획득 1. 애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다. 2. DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 물론 이 과정에서 3 way handshake 같은 TCP/IP 연결을 위한 네트워크 동작이 발생한다. 3. DB 드라이버는 TCP/IP 커넥션이 연결되면 ID, PW와 기타 부가정보를 DB에 전달한다. 4. DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB 세션을 생성한다. 5. DB는 커넥션 생성이 완료되었다는 응답을 보낸다. 6. DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다. 이렇게 커넥션을 새로 만드는 것은 과정도 복잡하고 시간도 많이 많이 소모된다..ㅜ DB는 물론이고 애플리케이션 서버에서도 TCP/IP 커넥션..
수정과 삭제는 앞서 살펴본 등록과 비슷하다. 데이터를 변경하는 쿼리를 executeUpdate()를 통해 실행하면 된다. 두 메서드는 쿼리만 다르고 전체 흐름을 동일하다. 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.setStrin..
MemberRepositoryV0 - 회원 조회 추가 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();//select는 executeQuery if (rs.next()){//데이터 있으면 true, 내부..
ConnectionConst package hello.jdbc.connection; public abstract class ConnectionConst { public static final String URL = "jdbc:h2:tcp://localhost/~/dbtest"; public static final String USERNAME = "sa"; public static final String PASSWORD = ""; } DB에 접속하는데 필요한 기본 정보를 편리하게 사용하도록 상수로 만들었다. 이 때 해당 클래스는 객체로 생성하지 못하도록 abtract로 막아두었다. DBConnectionUtil package hello.jdbc.connection; import lombok.extern.s..
JDBC는 1997년에 출시될 정도로 오래된 기술이며, 사용하는 방법이 복잡하다... 그래서 최근에는 JDBC를 편리하게 사용하는 다양한 기술이 존재한다. 대표적으로 SQL Mapper와 ORM 기술로 나눌 수 있다. JDBC 직접 사용 SQL Mapper 장점: JDBC를 편리하게 사용하도록 도와준다. - SQL 응답 결과를 객체로 편리하게 변환해준다. - JDBC의 반복 코드를 제거해준다. 단점: 개발자가 SQL을 직접 작성해야한다. 대표 기술: 스프링 JdbcTemplate, MyBatis ORM 기술 ORM은 객체를 관계형 데이터베이스 테이블과 매핑해주는 기술이다. 이 기술 덕분에 개발자는 반복적인 SQL을 직접 작성하지 않고, ORM 기술이 개발자 대신에 SQL을 동적으로 만들어 실행해준다. 추..
0. Hibernate JPA의 구현체로 jpa를 한번 감싸서 사용하기 쉽게 해줌 JPA 소개 1. ORM(Object Relational Mapping) 객체와 관계형 Database를 자동으로 mapping시켜주는 것을 말한다. 객체지향 프로그래밍의 기본 단위는 object 이고 관계형 Datebase의 기본단위는 table이다. 따라서 객.. bsh-developer.tistory.com 1. DDL이란? 데이터 정의어(Data Definition Language)를 의미함. DataBase의 Table 생성/수정/삭제를 담당하는 명령어 2. ddl-auto 란? * ddl-auto : 5가지 옵션 제공 create 항상 새로 생성, persistance context 시작 전 drop --> cr..