전체 글
-
[스프링] 트랜잭션과 락,2차캐리스프링 2022. 12. 28. 18:24
김영한님의 자바 ORM 표준 JPA 프로그래밍에 기반되어 작성되었습니다 트랜잭션은 ACID를 지켜야한다 1. 원자성 : 하나의 작업처럼 모두 작업을 성공하거나 실패해야 한다 2. 일관성 : 일관성 있는 DB 상태 유지 ( 무결성 제약 조건 항상 만족 ) 3. 격리성 : 트랜잭션들이 서로에게 영향을 미치지 못하도록 격리하기 4. 지속성 : 트랜잭션의 결과가 항상 기록 되어야한다 ( 중간에 시스템 문제가 생겨도 성공한 트랜잭션으로 복구 ) 문제는 격리성에서 발생한다! 1. 격리 수준 1. Read Uncommited : 커밋하지 않은 데이터를 읽을 수 있다 ( 모든 문제 발생 ) 2. Read Commited : 커밋한 데이터만 읽을 수 있다 ( Dirty Read 제외하고 2문제 가능 ) 3. Repeat..
-
[스프링] OSIV스프링 2022. 12. 28. 16:49
김영한님의 자바 ORM 표준 JPA 프로그래밍에 기반되어 작성되었습니다 ( 책 추천합니다! ) 1. JPA 내부 동작 방식 트랜잭션 범위 == 영속성 컨텍스트의 생존 범위 -> 트랜잭션이 시작할 때 영속성 컨텍스트를 생성하고, 트랜잭션이 끝날 때 영속성 컨텍스트를 종료한다 비즈니스 로직을 시작하는 서비스 계층에서 @Transactional 선언해서 트랜잭션을 시작한다. 이 애노테이션이 있으면 호출한 메소드 실행 직전에 스프링 트랜잭션 AOP 먼저 동작 간단 정리, 트랜잭션 AOP -> transaction 커밋해서 영속성 컨텍스트 플러스해서 DB 반영O or transaction 롤백해서 DB 반영 X 참고로, 트랜잭션이 같으면 다른 엔티티 매니저를 주입받아도 같은 영속성 컨텍스트를 사용한다 ( tran..
-
[스프링] 스프링 데이터 JPA스프링 2022. 12. 28. 15:46
JPA(Java Persistent API)란? JPA는 자바 ORM(Object Relational Mapping) 기술에 대한 API 표준 명세를 뜻한다. 그 말은 즉, 실제적으로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. -> 인터페이스의 모음이기에 Hibernate가 JPA를 구현한다. ORM을 간단히 짚고가자, 객체와 DB테이블을 매핑(연결)해서 데이터를 객체화하는 기술이다. [ 객체 DB테이블 ]개발자가 직접적으로 SQL문을 직접 작성하지 않아 DBMS에 종속적이지 않은 상태로 객체를 RDB 테이블에 자동으로 영속화 해준다고 생각하면 된다. ORM 장점 개발자가 SQL문을 직접 작성하지 않아도 되어서 비즈니스 로직에만 집중할 수 있. SQL문이 아닌 클래스의..
-
[CS] 멀티 스레드CS 2022. 12. 27. 17:18
스레드 프로세스가 할당받은 자원을 이용하는 실행의 단위 하나의 프로세스 내에서 동작되는 여러 실행 흐름으로 프로세스 내의 Heap, Data, Code 영역을 공유 ( 멀티 스레드의 경우, 이 프로세스의 영역들을 공유 ) 하나의 프로세스를 안에서 다양한 작업을 담당하는 최소 실행 단위를 스레드라고 한다. 멀티 스레딩의 경우, 스레드 간의 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시킨다. 멀티스레드 하나의 프로세스 내에서 둘 이상의 스레드가 동시에 작업을 수행하는 것을 의미합니다. 이러한 작업 ( 프로그램 둘 이상을 동시에 실행 )은 컨텍스트 스위칭을 통해서 이뤄진다. 컨텍스트 스위칭은 엄청 빠르게 일어나면서, 유저의 시선에서는 프로그램이 동시에 수행되는 것 처럼 보인다 멀..
-
[CS] 클라우드CS 2022. 12. 27. 17:08
클라우드 클라우드란 인터넷을 말하며, 모든 가상화 서비스가 이뤄지는 공간을 말한다 클라우드 서비스는 SaaS라고 불리며, 인터넷 서비스이다. → 인터넷이 가능한 환경에서만 사용할 수 있다 ex) 네이버 클라우드, 구글 클라우드 클라우드 컴퓨팅은 컴퓨팅 리소스를 인터넷을 통해 필요에 따라 제공하고 사용한 만큼만 비용을 지불하는 것이다 ex) AWS 클라우드 이점 민첩성 클라우드를 통해 많은 기술에 빠르게 접근하여, 이 전보다 빠르게 구현하고자 하는 것들을 구현 할 수 있게 된다 탄력성 요구사항에 맞게 자원의 크기를 조절 할 수 있어 탄력적으로 자원을 운영할 수 있게 된다. 비용 절감 → 경제성 측면에서 좋다 간단히 말해서 서버 안사고 서버 운영안하고 싼 가격에 가상 서버 운영하니까 좋다. 클라우드 제공 형..
-
[CS] 추상클래스, 인터페이스CS 2022. 12. 27. 16:32
추상 클래스 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스이다. 미완성 설계도 라고도 불린다 ( 미완성 → 추상 메서드를 포함한다는 의미 ) 상속을 위한 클래스이기 때문에 new를 통해 객체를 생성할 수 없다 class 앞에 "abstract" 예약어를 사용하여 상속을 통해서 구현해야한다는 것을 알려주고 선언부만 작성하는 추상메서드를 선언할 수 있습니다. abstract class 클래스이름 { ... public abstract void 메서드이름(); } 인터페이스 추상 클래스보다 추상화가 높아서, 추상 클래스와 달리 일반 메서드나 멤버 변수를 갖을 수 없다 기본 설계도라고 할 수 있습니다 다중 상속이 가능하다. interface 인터페이스이름 { public sta..
-
[CS] CDNCS 2022. 12. 27. 16:13
CDN ( Content Delivery Network ) 폭발적으로 증가하는 데이터를 최대한 지연 없이 효율적으로 전달하기 위해서 생긴 기술로써, 지리적인 제약없이 전 세계 사용자에게 빠르고 안전하게 컨텐츠 전송을 할 수 있는 기술이고 이를 통해서 컨텐츠의 병목 현상을 피할 수 있다. → 느린 응답속도 / 다운로딩 타임 을 극복하기 위한 기술 한국인에게 꼭 필요한 기술이다 CDN의 원리 물리적인 제약을 해결하기 위해서 서버를 분산시켜 캐싱해두고 사용자의 컨텐츠 요청이 들어오면 가장 가까운 위치에 존재하는 서버로 매핑 시켜서 요청된 콘텐츠의 캐싱된 내용을 내어주는 방식으로 빠르게 데이터를 전송할 수 있게 된다. 동작 원리 최초 요청은 서버로 부터 컨텐츠를 가져와 고객에게 전송하며 동시에 CDN 캐싱장비에..
-
[CS] 메세지 큐CS 2022. 12. 27. 15:49
메세지 큐 프로세스, 프로그램 간에 데이터를 교환할 때 사용되는 통신 방법 중 하나 MOM(Message Oriented Middleware: 메세지 지향 미들웨어) 을 구현한 시스템을 의미한다 메세지 지향 미들웨어 - 비동기 메세지를 사용하는 응용 프로그램들 사이에서 데이터를 송수신하는 것을 의미한다 간단한 정리, 메세지 큐는 메세지를 임시 저장하는 간단한 버퍼라고 생각하면 된다. → 메세지를 전송 및 수신하기 위해 중간에 메세지 큐를 두는 것이다. 메세지 큐는 왜 필요한가? 서버가 사용자에게 빠르고 안정적으로 정보를 전달하기 위해서 존재하며, 일부 작업을 메세지 큐에 맡김으로써 성능 향성을 위하여 필요하다 메세지 큐(Message Queue)의 장점 비동기 : Queue에 넣어서 나중에 처리가 가능하..