전체보기(195)
-
JPA
JPA의 개념 JPA는 자바에서 ORM 기술 표준으로 사용되는 인터페이스의 모음입니다. 즉, 실제적으로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크입니다. ORM(Object Relational Mapping) ORM이란 우리가 일반적으로 알고 있는 어플리케이션 Class와 RDB의 테이블을 매핑한단느 뜻이며 기술적으로는 어플리케이션의 객체를 RDB 테이블에 자동으로 영속화해주는 것입니다. ORM의 장점 SQL 문이 아닌 Method를 통해 DB를 조작할 수 있어 개발자는 객체 모델을 이용하여 비즈니스 로직을 구성하는데만 집중 Query와 같이 필요한 선언문, 할당 등의 부수적인 코드가 줄어들어 각종 객체에 대한 코드를 별도로 작성하여 코드의 가독성을 높임 객체지항적인 코드..
2023.01.22 -
Http3
Http2의 단점 TCP 고유의 문제 Http2 까지 모든 Http 프로토콜은 신뢰성을 높이기 위해 TCP를 사용하고 있었습니다. 신뢰성을 높이기 위해 TCP는 몇 가지 방법을 사용하는데 이 방법을 또한 클라이언트와 서버 간의 통신이기 때문에 레이턴시가 발생할 수 밖에 없습니다. 대표적으로 3 Way Handshake와 4 Way Handshake가 있습니다. 물론 Http2 에서 많이 개선되었지만 TCP를 사용하는 이상 Handshake는 반드시 있어야 하는 과정이기 때문에 레이턴시는 여전히 존재합니다. Head of line Blocking(HOLB) TCP를 사용한 통신에서 패킷은 무조건 정확한 순서대로 처리되어야 합니다. 수신 측은 송신 측과 주고받은 시퀀스 번호를 참고하여 패킷을 재조립해야하기 ..
2023.01.12 -
Next Js
Next Js란 Next Js는 React를 기반으로하는 프레임워크입니다. Next Js는 React가 SEO를 위해 SSR을 가능하게 해줍니다. SEO란 Search Engine Optimization의 약자로 검색 엔진들이 서버에 등록된 웹사이트를 하나씩 돌아다니면서 웹사이트의 HTML 문서를 분석해주는 것입니다. SSR이란 서버사이드 렌더링를 의미하는데 서버로부터 완전하게 만들어진 html 파일을 받아와 페이지 전체를 렌더링하는 방식입니다. Next JS의 SSR 단계 SSR을 기반으로 서버에 사전 저장된 Render Tree의 HTML을 로드 사전 렌더링 이후에는 CSR 사용 페이지가 그려진 이후에 페이지 내부에서 동적인 데이터를 패치하는 과정은 CSR 방식을 따름 만약 페이지가 로드될 때 데이터..
2022.12.29 -
Java Serialize
직렬화(Serialize)란 Serialize란 Java에서 사용되는 Object 혹은 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태로 데이터를 변환하는 기술을 의미합니다. 직렬화 하는 방법 java.io.ObjectOutputStream을 사용해서 직렬화를 진행합니다. 역직렬화(Deserialize)란 Deserialzie란 byte 형태로 변환된 데이터를 원래대로 Java의 Object나 데이터로 변환하는 기술을 의미합니다. 역직렬화 조건 직렬화와 역직렬화를 진행하는 시스템이 서로 다를 수 있음 직렬화 대상 객체는 동일한 serialVersionUID를 가지고 있어야함 직렬화 단점 직렬화하고 있는 시스템과 역직렬화를 진행하는 시스템의 모델에 차이가 있을 경우에 Exception이 ..
2022.11.27 -
MySQL Lock
Row Level Lock Shared Lock Shared Lock은 특정 Row를 읽을 때 사용되는 Lock 입니다. Shared Lock끼리는 동시에 접근이 가능합니다. 즉 하나의 row를 여러 트랜잭션이 동시에 읽을 수 있다는 것입니다. 하지만 Shared Lock이 설정된 Row에 Exclusive Lock을 사용할 수는 없습니다. 즉, 특정 Row를 누가 읽고 있음으로 Shared Lock이 설정되어 있는데, 다른 사용자가 그 데이터에 쓰기 작업을 하기 위해 Exclusive Lock을 걸 수 없다는 의미입니다. 일반적인 Select 쿼리는 Lock을 사용하지 않고 DB를 읽어 들입니다. 하지만 Select ... FOR Share 등 일부 Select 쿼리는 특정 Row를 읽을 때 InnoD..
2022.11.14 -
TRUNCATE VS DELETE VS DROP
TRUNCATE 전체 데이터를 한 번에 삭제하는 방식 최초 생성되었을 당시의 STORAGE만 남기고 데이터가 담겨있던 STORAGE는 RELEASE됨 TRUNCATE 명령어를 실행하면 처음 테이블을 CREATE한 상태와 동일 자동 COMMIT이 되기 때문에 삭제된 데이터는 복구 불가 DELETE WHERE절을 사용하여 테입르에 있는 데이터를 하나하나 석택하여 제거하는 방법 WHERE절을 사용하지 않고 테이블의 모든 데이터를 삭제하더라도 내부적으로는 한줄 한줄 일일이 제거함 처리 속도가 느린 편이고 성능에 좋지 않은 영향을 줄 수 있음 COMMIT 명령어가 실행되기 전이라면 ROLLBACK 명령어를 통해 삭제된 데이터를 복구할 수 있음 데이터를 삭제하더라도 데이터가 담겨있던 STORAGE는 RELEASE ..
2022.11.04