https://codenme.tistory.com/91 [spring 데이터 접근 핵심 원리] transaction, lock 데이터를 저장할 때, 파일로 저장하지 않고 "데이터 베이스" 로 저장하는 이유 -> 대표적인 이유는 "트랜잭션" 때문이다. 이번 글에선 스프링을 통해 @Transactional 어노테이션으로 단순화 되었던 트 codenme.tistory.com 위의 글에서 transaction에 관련한 코드를 jdbc로 구현하며, 아래와 같은 문제점들이 발생했다. 트랜잭션 문제 예외 누수 문제 JDBC 반복 문제 트랜잭션 문제 가장 큰 문제는 트랜잭션을 적용하면서 생긴 다음과 같은 문제들이다. JDBC 구현 기술이 서비스 계층에 누수되는 문제 트랜잭션을 적용하기 위해 JDBC 구현 기술이 서비스..
SOLID 원칙 SOLID: 시간이 지나도 유지보수, 확장이 쉬운 소프트웨어를 만들기 위한 원칙( 객체 지향 원칙) Fast PreView SRP (단일 책임 원칙): 클래스당 1개의 책임 OCP ( 개방-폐쇄 원칙): 새로운 기능이 추가되거나 변경이 발생할 때 기존 코드를 수정하지 않고 확장할 수 있어야 합니다. 이를 위해 추상화, 다형성, 인터페이스 등을 활용하여 모듈 간의 의존성을 최소화하고 변경에 유연하게 대처할 수 있습니다. LSP (리스코프 치환 원칙): 자식 클래스는 언제나 부모 클래스의 자리에 사용될 수 있어야 합니다. ex) discountPolicy 인터페이스 -> 해당 인터페이스를 implements하는 fixedDiscountPolicy, percentDisCountPolicy 로 ..
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard 스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의 백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 www.inflearn.com 김영한님의 위 강의를 바탕으로 작성하였습니다. 데이터를 저장할 때, 파일로 저장하지 않고 "데이터 베이스" 로 저장하는 이유 -> 대표적인 이유는 "트랜잭션" 때문이다. 이번 글에선 스프링을 통해 @Transactional 어노테이션으로 단순화 되었던 트랜잭션 로직이 내부에서 어떻게 ..
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard 스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의 백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 www.inflearn.com 김영한님의 위 강의를 바탕으로 작성하였습니다. 데이터베이스 커넥션을 획득할 때는 다음과 같은 복잡한 과정을 거친다. 애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회한다. DB 드라이버는 DB와 TCP/IP 커넥션을 연결한다. 물론 이 과정에서 3 way handshake 같은 ..
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard 스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의 백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 www.inflearn.com 김영한님의 위 강의를 바탕으로 작성하였습니다. public abstract class ConnectionConst { public static final String URL = "jdbc:h2:tcp://localhost/~/test"; public static final String..
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/dashboard 스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의 백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 www.inflearn.com 김영한님의 위 강의를 바탕으로 작성하였습니다. jdbc 하지만, 각 db 마다 사용법이 다르기에, db를 변경 시, 코드도 전부 변경해야한다. jdbc 표준 인터페이스가 등장한다. jdbc: 자바에서 db에 접속 가능하도록 하는 자바 API.JDBC는 DB에 자료를 쿼리, 업데이트 하..
@Transactional 와 같이 propagation 옵션 없이 실행 시 아래의 옵션이 디폴트로 적용된다. @Transactional(propagation = Propagation.REQUIRED) 또한 readOnly 옵션 없이 실행 시, 아래의 옵션이 디폴트로 적용된다. @Transactional(ReadOnly = false) [readOnly 속성] import javax.transaction.Transactional import org.springframework.transaction.annotation.Transactional; @Transactional(readOnly=true) **주의 사항 1. org.springframework.transaction.annotation.Transac..
Caching: 동일한 요청에 대한 응답을 미리 저장해두고, 사용한다. 캐시에서 가져올 경우 속도가 비약적으로 상승( 탐색 필요 x disk에서 정보를 가져오지 않고, 메모리에서 가져오기에 Disk IO 감소) 다만 캐싱은 "일관성" 유지가 필수 적이다. 일관성: 캐시 내의 정보와 disk 내의 정보가 다르다면, 해당 캐싱 값은 "INVALID" 한 값이다. 캐싱 방법 1) 스프링 내장 캐싱 사용하기 implementation 'org.springframework.boot:spring-boot-starter-cache' @SpringBootApplication @EnableCaching public class TestApplication { public static void main(String[] ar..