CS
-
[CS] DB - 정규화CS 2023. 10. 19. 12:14
정규화란? 이상현상이 있는 릴레이션을 분해해서 이상현상을 없애는 과정이다. 결국에는 데이터들의 무결성을 향상 시키고 중복을 제거하기 위해서 사용한다. 데이터 무결성은 데이터베이스에 저장된 데이터의 정확성, 일관성, 유효성을 지키는 것 이상현상은 테이블을 설계할 때 잘못 설계하여 데이터를 삽입, 삭제, 수정할 때 논리적으로 생기는 오류. 정규화의 장,단점 - [ 장점 ] : DB 변경시 이상 현상 제거 가능 - [ 장점 ] : 정규화된 DB 구조에서 새로운 데이터 형 추가해도 구조를 변경하지 않아도 되거나 일부만 변경해도 된다 - [ 단점 ] : JOIN연산이 많아질 수 있다 -> 데이터 처리 속도 느려질 수 있다 -> 성능 저하가 발생하면 반정규화를 적용할 수 있다 전제적인 정규화 흐름 제 1 정규화 (..
-
[CS] - CORSCS 2023. 10. 18. 10:12
CORS(Cross-Origin Resource Sharing)란? 교차 출처 리소스 공유로써 브라우저에서는 보안상의 문제로 cross-origin HTTP 요청들을 제한합니다. 해당 요청은 서버의 동의가 필요한데, 이는 HTTP-header를 통해서 서버에게 동의를 구하는데, 이를 CORS라고 합니다. 그래서 브라우저는 cross-origin 요청을 안전하게 할 수 있도록 하는 메커니즘입니다. cross-origin cross-origin이란 다음 중 한가지라도 다른 경우를 말합니다 1. 프로토콜 - [EX] https, http는 프로토콜이 다르다 ( SSL 차이 ) 2. 도메인 - [EX] domain.com과 other-domain.comdms ekfmek 3. 포트 번호 - [EX] 8080이랑..
-
[CS] OAuth2.0 간단한 이해CS 2023. 3. 10. 23:42
OAuth 프로토콜 인스타 / 페북 같은 서비스를 운영하기 위해서는 리소스가 필요함 리소스 수집 및 가공은 힘듬 & 사용자도 불편함 구글 / 네이버 같은 대기업이 미리 만들어 놓은 리소스를 사용할 수 있도록 api 를 공개하는 경우가 있음 ( 구글 / 네이버 = OAuth provide : authorization server + resource server ) 이 리소스는 민감한 정보일 수 있음 그래서 안전하게 HTTP 상으로 주고 받을 수 있도록 규악을 정했는데, 이를 'OAuth 프로토콜' 이라고 함 OAuth 구성요소 이거 그림만 이해해도 구성요소가 눈에 들어온다 resource owner = end-user = 즉, 나 client = App = 인스타 / 페북 resource server + ..
-
[CS] batch InsertCS 2023. 1. 9. 11:21
Batch Insert 여러 개의 SQL Statement를 하나의 구문으로 처리할 수 있다. Statement - Connection으로 연결된 객체에게, Query 작업을 실행하기 위한 객체이다 여러 개의 구문을 여러 번 network 를 통해 보내는 것이 아니라 여러 개의 구문을 합쳐서 1개로 보내기에 성능 개선을 할 수 있습니다. 다시 정리하면 spring data jpa 를 이용한다면 write-behind 를 통해 addBatch 와 같은 로직을 직접 작성할 필요 없고, batch_size 옵션을 준다면 batch 기능을 사용할 수 있습니다 spring data jpa batch insert 사용하는 방법 hibernate.jdbc.batch_size → 최대 몇 개까지 statements 를..
-
[CS] 동적 프록시CS 2023. 1. 7. 23:44
프록시 타겟 코드의 수정 없이 접근제어 혹은 부가 기능을 추가하기 위해 주로 사용한다. 하지만, 프록시 사용을 위해서는 대상 클래스 수만큼의 프록시 클래스를 만들어줘야 한고 그 안의 코드들이 중복된다는 문제점이 있다. ( 클래스 만큼 프록시 클래스를 만드는 것은 너무나 힘들다 ) 이러한 문제점을 해결하기 위해서 동적 프록시가 사용되는데, 이는 컴파일 시점이아닌, 런타임 시점에 프록시 클래스를 만들어주는 방식이다. 동적 프록시 JDK Dynamic Proxy - JAVA 에서 제공 CGLIB - 오픈소스 기술(Spring에서 사용하므로, Spring 의존관계가 있다면 사용할 수 있다. JDK 동적 프록시 JDK 동적 프록시는 인터페이스를 기반으로 프록시를 동적으로 만들어준다. 따라서 인터페이스 가 필수다...
-
[CS] 직렬화CS 2023. 1. 7. 23:10
자바 직렬화 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있게 바이트(byte) 형태로 데이터 변환하는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술(역직렬화)을 얘기한다. 직렬화 : 객체 or 데이터 → 바이트 형태의 데이터 , 역직렬화 : 바이트 형태의 데이터 → 객체 or 데이터 인터페이스 Serializable public interface Serializable { } Serializable 인터페이스는 메소드가 하나도 없다 → 그러면 왜 존재할까? 개발을 하다보면, 생성한 객체를 파일로 저장하는 경우, 저장한 객체를 읽는 경우, 다른 서버에서 생성한 객체를 받는 경우 등등이 있다. 이런 경우에 이 인터페이스가 필요하다 결론적으로, 1. 우리..
-
[CS] JPA 영속성 컨텍스트CS 2023. 1. 6. 11:56
영속성 컨텍스트란? 영속성 컨텍스트라고 하면, 엔티티를 영구 저장하는 환경 이라는 뜻이다 애플리케이션 ———- 영속성 컨텍스트( 가상의 디비 ) ————- 디비 이렇게, 애플리케이션과 디비 사이의 가상의 디비라고 생각하면 편하다. 엔티티 매니저를 통한 엔티티를 영속성 컨텍스트에 저장하는 방법 em.persist(member); // em 은 엔티티 매니저인데, 코드를 설명해보면, 엔티티 매니저로 member라는 엔티티를 저장한다! 영속성 컨텍스트 특징 영속성 컨텍스트의 식별자 값 영속성 컨텍스트는 엔티티를 식별자 값으로 구분한다. 따라서 영속 상태는 식별자 값이 반드시 있어야 한다. 영속성 컨텍스트와 디비 저장 JPA는 보통 트랜잭션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 엔티티를 데이터 베이스에..
-
[CS] 스프링부트를 쓰는 이유와 자동설정 원리CS 2023. 1. 5. 10:48
스프링을 사용하는 이유 기존에는 EJB(Enterprise Java Bean)을 사용하였는데, 개발, 배포, 예외처리, 단위 테스트 등에 관한 많은 문제점들이 있었다. Spring framework는 DI로 단위 테스트를 가능케 하고 AOP로 코드 감소하는 등의 생산성을 향상시키고 유지보수 비용을 감소 시키게 해주기에 우리는 스프링을 사용한다. 스프링에는 핵심적인 기능 3가지를 스프링 삼각형이라고 부른다 IoC / DI - 의존성 주입 기능 AOP - 비즈니스 로직과 관계가 적은 트랜잭션, 로깅, 예외처리 등의 횡단관심으로 모듈화하여 처리할 수 있는 프로그래밍 방법 PSA - 실제 사용하는 기술에 관계없이 일관된 기술 접근 환경을 제공하도록 서비스의 추상화 계층을 제공 ( ex : Spring Trasa..