HTTP 버전 및 HOL Blocking에 대하여
·
Programming/Network
HTTP/1.0하나의 연결당 한개의 요청만 처리하도록 설계되었다. 서버로부터 파일을 가져올때마다 3-way handshake를 계속해서 열어야 했기 때문에 RTT가 증가하는 단점이 있다.RTT (Round Trip Time) : 네트워크 패킷이 송신 측에서 수신 측으로 전달되고, 다시 송신 측으로 돌아오기까지 걸리는 시간. RTT 증가를 해결하기 위한 방법1. 이미지 스플리팅이미지를 여러개의 작은 조각들로 나누어 효율적으로 전송하는 방식이다. 필요한 부분만 전송하여 불필요한 RTT를 감소한다. 2. 코드 압축코드를 압축해서 개행문자, 빈칸 등을 없애 코드의 크기를 최소화 하는 방식이다. 3. 이미지 Base 64 인코딩이미지 파일을 64비트로 이루어진 문자열로 인코딩 하는 방식이다. 일반적으로 웹 페이지..
[JPA/Hibernate] Flush 차이
·
Programming/Spring,JPA
FlushJPA와 Hibenate의 flush 동작은 개념적으로 동일하지만, 구현의 세부 사항에서 차이가 있다. JPA flushJPA는 표준 사양으로 구현체가 다양한데 Hibernate가 그 중 하나이다. JPA의 flush 는 엔티티 매니저를 통해 수행되며 아래와 같은 경우에 호출된다.트랜잭션이 커밋될 때JPQL 쿼리 실행 전명시적으로 flush 호출 Hibernate flushHibernate는 JPA 구현체 중 하나로, JPA 사양을 따르면서도 자체적으로 flush 실행 시점을 좀 더 세밀하게 제어한다. Hibernate에서 flush가 호출 되는 경우는 아래와 같다.트랜잭션을 커밋하기 전에 트리거 된다.JPQL 쿼리 결과가 영속성 컨텍스트의 변경 사항에 영향을 받을 수 있을 때, 쿼리를 실행하기..
[JPA] JPA 상속관계 매핑(@Inhertinace)
·
Programming/Spring,JPA
JPA 상속관계 매핑JPA 상속 관계 매핑이란, 객체지향 언어의 상속 개념을 데이터베이스 관계형 모델에 맞게 구현하는 기능이다.JPA는 객체 모델에서 상속 구조를 데이터베이스에 적절하게 매핑하기 위해 세 가지 전략을 제공한다.Joined TableSingle TableTable per ClassJPA에서 상속을 매핑할 때는 상위 클래스에 @Inheritance 어노테이션을 추가해 사용하며, 상속 전략을 지정할 수 있다.@Entity@Inheritance(strategy = InheritanceType.SINGLE_TABLE)public abstract class Product { @Id @GeneratedValue private Long id; private int price;} 1. Joined Tab..
[Java] 익명 클래스와 람다(Lambda) 정리
·
Programming/Java,Back-end
익명 클래스(Anonymous Class)익명 클래스란?익명 클래스는 상속 받는 클래스를 명시적으로 별도의 Java 파일을 통해 클래스를 만드는 것이 아닌, 코드 내부에 이름이 존재하지 않는 클래스를 만드는것이다. 예시 코드public class Coffee { public void make() { System.out.println("Make!!"); }}public class Main { public static void main(String[] args) { // TODO : Coffee 클래스를 상속 받는 익명 클래스 Coffee coffee = new Coffee() { // make 메서드 오버라이드 ..
[Spring] 예외 처리에만 국한되지 않는 @ControllerAdvice
·
Programming/Spring,JPA
@ControllerAdvice란?Spring MVC에서 컨트롤러 전역 설정을 정의하기 위해 사용하는 어노테이션이다. 해당 어노테이션을 사용하면 특정 컨트롤러에 국한되지 않고, 애플리케이션의 모든 컨트롤러에 적용할 전역 설정을 정의할 수 있다. @ControllerAdvice 어노테이션을 통해, 컨트롤러는 좀 더 컨트롤러의 역할에 집중할 수 있고, 코드의 중복을 제거하며 관심사의 분리를 이뤄낼 수 있다.  "@ControllerAdvice는 예외 처리에만 국한된 게 아니다."주로 예외 처리를 위한 글로벌 핸들러를 제공하는데 사용되지만 이 외에도 다양한 용도로 사용할 수 있다. @ControllerAdvice 사용 용도1. 글로벌 데이터 바인딩 초기화@RestControllerAdvicepublic cla..
[Spring] 단일 행이 반환될때는 queryForObject가 항상 정답일까?
·
Programming/Spring,JPA
프로젝트를 진행하며 queryForObject에 대해 공부한것을 정리해보려 한다. List result = jdbcTemplate.query("select * from member where id = ?", memberRowMapper(), id); 처음에 구현한 코드로, Member 테이블에서 "ID"는 unique한 컬럼이다. 따라서, 최대 단일 행이 조회되는것인데, List 객체를 반환하는것이 사실상 의미가 없다. queryForObject 사용 이유1.단일 행 반환이기에 List 필요없음2.내 코드를 보는 누군가에게 단일 행을 조회하는 것을 명시 이러한 이유들로 queryForObject를 사용하는것이 좋다고 생각했다.   🚫 에러처리그런데, 하나 더 유의할게 있었다. 최대 단일 행 반환이지, ..