일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인프런
- SpringBoot
- http
- 알고리즘
- Android
- JPQL
- QueryDSL
- Proxy
- Thymeleaf
- Spring Boot
- db
- 스프링
- JDBC
- Greedy
- pointcut
- 스프링 핵심 기능
- transaction
- 김영한
- 그리디
- springdatajpa
- jpa
- spring
- Servlet
- 자바
- Exception
- 백준
- 스프링 핵심 원리
- kotlin
- java
- AOP
- Today
- Total
목록인프런 (43)
개발자되기 프로젝트
기본 데이터 입력 set autocommit true; delete from member; insert into member(member_id, money) values ('memberA',10000); lock 0 lock 1 - 세션1 set autocommit false; update member set money=500 where member_id = 'memberA'; 세션1이 트랜잭션을 시작하고, memberA 의 데이터를 500원으로 업데이트 했다. 아직 커밋은 하지 않았다. memberA 로우의 락은 세션1이 가지게 된다. lock 2 - 세션 2 SET LOCK_TIMEOUT 60000; set autocommit false; update member set money=1000 where..
데이터베이스 커넥션을 매번 획득 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 커넥션..
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 등장 이유 애플리케이션을 개발할 때 중요한 데이터는 대부분 DB에 보관한다. 클라이언트, 애플리케이션 서버, DB 구조 클라이언트가 애플이케이션 서버를 통해서 DATA 저장, 조회를 한다고 하자. 이 때 애플리케이션 서버는 다음 과정을 통해서 DB를 사용한다. 애플리케이션 서버와 DB-일반적인 경우 커넥션 연결: 주로 TCP/IP를 사용해서 커넥션을 연결한다. SQL전달: 애플리케이션 서버는 위에서 연결된 커넥션을 통해 DB가 이해할 수 있는 SQL을 DB에 전달 결과 응답: DB는 전달된 SQL을 수행하고 결과를 응답. 애플이케이션 서버는 응답 결과를 받고 활용 애플리케이션 서버와 DB-DB변경 옛날에는 각 DB마다 커넥션을 연결하는 방법, SQL을 전달하는 방법, 결과를 응답받는 방법이 모두..
1. application.yml, 설정하기 datasource 설정 datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa driver-class-name: org.h2.Driver --> datasource의 url을 명확하게 h2 콘솔에서 접근하는 url과 동일하게 입력해주자. --> url이 달라서 H2와 연결이 되지 않아 ApplicationContext load fail 발생 jpa 설정 jpa: hibernate: ddl-auto: create Properties: hibernate: show_sql: true format_sql: true - ddl-auto : table 자동 생성 여부 - ddl-auto : create --> ..
1. 인터넷 프로토콜 스택의 4계층 애플리케이션 계층 - HTTP, FTP 전송 계층 - TCP, UDP 인터넷 계층 - IP 네트워크 인터페이스 계층 TCP는 IP위에 얹어져서 보완하는 기능. 2. 프로토콜 계층 3. 패킷 4. TCP/IP 패킷 정보 5. TCP 의 특징 : ip로만 해결되지 않던 문제 보완함. 전송 제어 프로토콜(Transmission Control Protocol) 연결지향 - TCP 3 way handshake(가상 연결) --> 연결을 하고! 메세지 보냄. 데이터 전달 보증 : 패킷 누락되면 알 수 있음. 순서 보장 신뢰할 수 있는 프로토콜 현재는 대부분 TCP 사용 6. 연결지향, TCP 3way handshake - 메세지 세 번 주고받음. SYN : 접속 요청 메세지 AC..
1. proxyMode @Component @Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS) public class MyLogger { private String uuid; private String requestURL; proxyMode = ScopedProxyMode.TARGET_CLASS를 추가. - 적용 대상이 class? --> TARGET_CLASS - 적용 대상이 interface? --> INTERFACE MyLogger를 상속받는 가짜 프록시 객체를 빈으로 등록함. 그럼 mylogger의 클래스를 확인해보자 System.out.println("myLogger = " + myLogger.getClass()); Requ..