일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 서블릿
- 싱글톤
- java
- 테스트코드
- 인터페이스
- 스프링컨테이너
- 코드트리
- JSON
- DI
- objecterror
- 추상클래스
- fielderror
- 오블완
- HttpServletResponse
- 참조변수
- html form
- 프록시
- 다형성
- 스프링
- 오버라이딩
- 김영한
- @configuration
- 코딩테스트
- 의존관계
- 티스토리챌린지
- 코드트리조별과제
- 백준
- ocp
- http 메시지 컨버터
- equals()
- Today
- Total
목록TIL (147)
minOS
순수한 서비스 계층애플리케이션 구조 프레젠테이션 계층 (Presentation Layer) - @Controller사용자 인터페이스를 담당웹 페이지, 모바일 앱, 데스크톱 애플리케이션 등이 포함사용자 입력을 받고 결과를 표시서비스 계층 (Service Layer) - @Service비즈니스 로직을 처리데이터 유효성 검사, 트랜잭션 관리 등을 수행프레젠테이션 계층과 데이터 접근 계층 사이의 중간 매개체 역할데이터 접근 계층 (Data Access Layer) - @Repository데이터베이스와 직접 상호작용SQL 쿼리 실행, ORM(Object-Relational Mapping) 등을 담당데이터베이스로부터 데이터를 가져오거나 저장순수한 서비스 계층- 여기서 가장 중요한 곳은 어디일까? 바로 핵심 비즈니..
트랜잭션 - 적용1트랜잭션 없이 단순하게 계좌이체 비즈니스 로직만 구현@RequiredArgsConstructorpublic class MemberServiceV1 { private final MemberRepositoryV1 memberRepository; public void accountTransfer(String fromId, String toId, int money) throws SQLException { Member fromMember = memberRepository.findById(fromId); Member toMember = memberRepository.findById(toId); memberRepository.update(fromId,..
트랜잭션 - 개념 이해데이터를 저장할 때 단순히 파일에 저장해도 되는데, 데이터베이스에 저장하는 이유는 무엇일까?여러가지 이유가 있지만, 가장 대표적인 이유는 바로 데이터베이스는 트랜잭션이라는 개념을 지원하기 때문이다.트랜잭션을 이름 그대로 번역하면 거래라는 뜻이다. 이것을 쉽게 풀어서 이야기하면, 데이터베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻한다. 그런데 하나의 거래를 안전하게 처리하려면 생각보다 고려해야 할 점이 많다. 예를 들어서 A의 5000원을 B에게 계좌이체한다고 생각해보자. A의 잔고를 5000원 감소하고, B의잔고를 5000원 증가해야한다.5000원 계좌이체1. A의 잔고를 5000원 감소2. B의 잔고를 5000원 증가계좌이체라는 거래는 이렇게 2가지 작..
DataSource이해커넥션을 얻는 방법은 앞서 학습한 JDBC `DriverManager` 를 직접 사용하거나, 커넥션 풀을 사용하는 등 다양한 방법이 존재한다.커넥션을 획득하는 다양한 방법우리가 앞서 JDBC로 개발한 애플리케이션 처럼 `DriverManager` 를 통해서 커넥션을 획득하다가, 커넥션 풀을 사용하는 방법으로 변경하려면 어떻게 해야할까?예를 들어서 애플리케이션 로직에서 `DriverManager` 를 사용해서 커넥션을 획득하다가 `HikariCP` 같은 커넥션 풀을 사용하도록 변경하면 커넥션을 획득하는 애플리케이션 코드도 함께 변경해야 한다. 의존관계가`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 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환한다.1. 리소스 측면의 문제복잡한 커넥션 생성 과정으로 인한 ..
데이터 베이스 연결애플리케이션과 데이터베이스를 연결해보자.주의 H2 데이터베이스 서버를 먼저 실행해두자.package hello.jdbc.connection;public abstract class ConnectionConst { public static final String URL = "jdbc:h2:tcp://localhost/~/test"; public static final String USERNAME = "sa"; public static final String PASSWORD ="";}위 코드는 데이터베이스 연결에 필요한 상수 값을 모아둔 클래스이다. 주요 특징을 간략히 설명하자면:1. `abstract` 키워드 사용: `ConnectionConst` 클래스는 `abstract`로 선언되어, ..