Spring boot

Spring boot

[spring 데이터 접근 핵심 원리 5] transaction - 2 (트랜잭션 동기화)

https://codenme.tistory.com/91 [spring 데이터 접근 핵심 원리] transaction, lock 데이터를 저장할 때, 파일로 저장하지 않고 "데이터 베이스" 로 저장하는 이유 -> 대표적인 이유는 "트랜잭션" 때문이다. 이번 글에선 스프링을 통해 @Transactional 어노테이션으로 단순화 되었던 트 codenme.tistory.com 위의 글에서 transaction에 관련한 코드를 jdbc로 구현하며, 아래와 같은 문제점들이 발생했다. 트랜잭션 문제 예외 누수 문제 JDBC 반복 문제 트랜잭션 문제 가장 큰 문제는 트랜잭션을 적용하면서 생긴 다음과 같은 문제들이다. JDBC 구현 기술이 서비스 계층에 누수되는 문제 트랜잭션을 적용하기 위해 JDBC 구현 기술이 서비스..

Spring boot

Spring 관점에서 알아보는 SOLID 원칙

SOLID 원칙 SOLID: 시간이 지나도 유지보수, 확장이 쉬운 소프트웨어를 만들기 위한 원칙( 객체 지향 원칙) Fast PreView SRP (단일 책임 원칙): 클래스당 1개의 책임 OCP ( 개방-폐쇄 원칙): 새로운 기능이 추가되거나 변경이 발생할 때 기존 코드를 수정하지 않고 확장할 수 있어야 합니다. 이를 위해 추상화, 다형성, 인터페이스 등을 활용하여 모듈 간의 의존성을 최소화하고 변경에 유연하게 대처할 수 있습니다. LSP (리스코프 치환 원칙): 자식 클래스는 언제나 부모 클래스의 자리에 사용될 수 있어야 합니다. ex) discountPolicy 인터페이스 -> 해당 인터페이스를 implements하는 fixedDiscountPolicy, percentDisCountPolicy 로 ..

Spring boot

[spring 데이터 접근 핵심 원리 4] transaction - 1

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 어노테이션으로 단순화 되었던 트랜잭션 로직이 내부에서 어떻게 ..

Spring boot

[spring 데이터 접근 핵심 원리 3] 커넥션 풀, 데이터 소스 (connection pool, data source)

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 같은 ..

Spring boot

[spring 데이터 접근 핵심 원리 2] jdbc를 통한 crud

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..

Spring boot

[spring 데이터 접근 핵심 원리 1] OverView

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에 자료를 쿼리, 업데이트 하..

Spring boot

[Spring boot] 트랜잭션 설정

@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..

Spring boot

[query Optimization] 캐싱 (Caching)

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..

코앤미
'Spring boot' 카테고리의 글 목록 (4 Page)