애플리케이션을 개발할 떄 중요한 데이터는 대부분 데이터 베이스에 보관한다.클라이언트가 애플리케이션 서버를 통해 데이터를 정하거나 조회하면 애플리케이션 서버는 밑과 같은 방법으로 데이터베이슬르 사용한다.!커넥션 연결 : 주로 TCP/IP를 사용해서 커넥션 연결SQL 전달
H2 데이터베이스를 사용하기 때문에 H2 데이터베이스 서버를 먼저 실행해두고 진행.필요한 기본 정보를 편리하게 사용하기 위해서 추상 함수 추가실제 DB에 연결하는 코드데이터 베이스 연결 테스트주의점slf4j 어노테이션이 작동이 안될수 있는데 gradle에 설정이 추가로
애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회DB 드라이버는 DB와 TCP/IP 커넥션 연결 -> 3 wayHandShake 같은 TCP/IP 연결 을통한 네트워크 동작 발생DB 드라이버는 TCP/IP 커넥션이 연결되면 ID,PW 와 기타 부가정보를 DB에 전
커넥션을 획득하는 방법을 추상화 하는 인터페이스만약 DB 드라이버에서 HikariCP 커넥션 풀을 사용하게 변경을 진행하는 경우, 커넥션 획득 코드를 변경해줘야한다.의존관계가 변경되기 때문에획득하는 방법을 추상화 시켜서 사용하게 되는 경우개발자의 경우 DataSourc
동시성과 관련된 성능 이슈로 인해 트랜잭션 격리 수준을 선택할 수 있음.READ UNCOMMITED(커밋되지 않은 읽기)READ COMMITTED(커밋된 읽기)REPEATABEL READ(반복 가능한 읽기)SERIALIZABLE(직렬화 가능)커밋 하지 않은 데이터를 읽
예제의 기본 데이터계좌이체 성공 SQLa의 계좌에서 b의 계좌로 2000원을 송금하는 sql 작성아직 커밋이 진행되지 않았기 때문에 기존 데이터가 조회되고 commit을 호출시 데이터가 업데이트 된다.계좌이체 문제상황실수로 member_idddd라는 필드 오류가 발생하
애플리케이션에서 DB 트랜잭션을 적용하기적용해보기 전 비교를 위해 트랜잭션을 적용하지 않고 진행트랜잭션이 적용되지 않은 MemberServiceV1이체중 예외발생 테스트 코드계속 공부하던 문제를 테스트를 통해서 실행해서 확인 해본 결과memberA의 경우 8000원을
가장 단순하면서 많이 사용하는 방법은 역할에 따라서 3가지로 나누는 것.UI 관련된 처리 담당웹 요청 과 처리 응답사용자 요청을 검증서블릿과 같은 HTTP 같은 웹기술과 스프링 MVC 를 주로 사용함.비즈니스 로직 담당가급적 특정 기술에 의존하지 않으며 순수 자바코드로
구현 기술에 따른 트랙잭션 사용법이 다르다.JDBC : con.setAutoCommit(false)JPA : transaction.begin()트랜잭션을 사용하는 코드는 데이터 접근 기술마다 다르다 -> JDBC 기술을 사용하고, JDBC 트랜잭션에 의존하다가 JPA
현재까지 한 코드의 경우 아래의 패턴이 반복되는 것을 확인트랜잭션을 시작하고, 비즈니스 로직 실행 -> 성공하면 커밋 , 실패하면 롤백 진행다른 서비스에서도 트랜잭션을 시작시 try,catch,finally를 포함한 성공시 커밋, 실패시 롤백 코드가 반복될 것이다.이런
스프링 AOP를 통해서 프록시를 도입시에 순수한 비즈니스 로직만 남길수 있게 할 수있다.트랜잭션 프록시 코드 예시AOP를 적용한 코드 Transactional 어노테이션을 통해서 스프링이 제공하는 트랜잭션 AOP를 사용비즈니스 로직만 남게되고 트랜잭션 관련 코드는 모두