| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- list 컬렉션
- stream
- 윤성우 열혈자료구조
- JSON
- 혼자 공부하는 C언어
- C programming
- C 언어 코딩 도장
- 알기쉬운 알고리즘
- R
- Stack
- s
- 윤성우의 열혈 자료구조
- 이것이 자바다
- Algorithm
- 이스케이프 문자
- Selection Sorting
- buffer
- datastructure
- Serialization
- coding test
- 메모리구조
- Graph
- insertion sort
- Today
- Total
목록Server (76)
Engineering Note
QueryDSL 라이브러리라이브러리개념/용도querydsl-aptQuerydsl이 타입 안전한 쿼리를 생성할 수 있도록 코드 생성 기능을 제공합니다.(Q-Class 생성)querydsl-jpaJPA(Java Persistence API) 환경에서 타입 안전한 쿼리를 작성 할 수 있도록 지원하는 Querydsl의 핵심 라이브러리입니다.(복잡한 동적 쿼리 작성에 유용) Spring Boot 라이브러리라이브러리개념/용도spring-boot-stater-webSpring MVC를 사용하여 웹 애플리케이션 개발을 위한 기본적인 의존성 집합(스타터)을 제공하며, 내장 톰캣을 포함합니다.spring-boot-stater-tomcat스프링 부트 애플리케이션에 내장된 웹 서버로 사용되는 톰캠 라이브러리입니다.sprin..
EntityManagerFactory는 애플리케이션 마다 하나가 존재하고, EntityManagerFactory가 EntityManager를 생성한다. 그리고 EntityManager는 영속성 컨텍스트를 관리하는데, 요청 트랜잭션 마다 영속성컨텍스트를 생성하고 소멸시킨다. 영속성 컨텍스트만 자세히 살펴보면 아래와 같다.영속성 컨텍스트는 JPA에서 가장 중요한 개념으로 Entity를 관리하는 공간이고 트랜잭션과 생명주기를 함께한다. 메모리에 존재하면서 DB 테이블의 캐시 역할을 하는데, 실행부터 테이블이 캐시화돼서 존재하는 건 아니고 트랜잭션 내에서 한 번이라도 조회되거나 persist된 엔티티가 key:value 형태로 저장된다. key는 PK, value는 **엔티티 객체(DB 테이블의 row를 표현하..
1. 영속성 컨텍스트 생명주기JPA를 사용하는 환경(주로 Spring Boot의 Service Layer)에서 @Transactional 어노테이션이 붙은 메서드가 호출될 때 영속성 컨텍스트는 다음과 같은 생명주기를 가집니다. 1-1. 트랜잭션 시작 (생성)@Transactional 메서드가 호출되면 데이터베이스 트랜잭션이 시작됩니다.이와 동시에 JPA의 영속성 컨텍스트가 생성되어 현재 실행 중인 쓰레드의 트랜잭션에 바인딩됩니다.이 영속성 컨텍스트가 1차 캐시 역할을 하며, 트랜잭션 내에서 조회되거나 저장된 모든 엔티티 객체들을 관리합니다. 1-2. 비즈니스 로직 실행 (유지)메서드 내에서 JPA 관련 작업(조회, 저장, 수정 등)이 실행되는 동안 영속성 컨텍스트는 유지됩니다.엔티티를 수정하더라도, 이 ..
1. 의존성 주입이란?의존성 주입(Dependency Injection, DI)은 객체가 사용할 다른 객체를 직접 생성하지 않고, 외부에서 주입받는 방식을 말합니다.스프링에서는 컨테이너(ApplicationContext)가 객체를 Bean으로 관리하고, 필요한 곳에 자동으로 주입해주기 때문에 @Autowired나 생성자 주입을 통해 쉽게 DI를 구현할 수 있습니다. 2. 왜 필요한가? (순수 자바 관점)순수 자바에서 보자면, 클래스가 의존 객체를 직접 생성하는 경우 테스트와 유지보수가 어렵습니다. 의존성을 직접 생성하는 경우class A { private B b = new B(); // A가 B를 직접 생성 public void doSomething() { b.work(); ..
BindingResult- 스프링 프레임워크에서 데이터바인딩과 검증결과를 담는 인터페이스 주요 역할1. 데이터 바인딩 오류 수집- HTTP 요청 데이터를 객체로 변환할 때 발생하는 오류들을 수집2. 검증(Validation) 결과 저장- @Valid 어노테이션으로 수행된 검증 결과를 저장 사용 방법@PostMapping("/cart")public ResponseEntity addCart( @RequestBody @Valid CartItemDto cartItemDto, BindingResult bindingResult) { if (bindingResult.hasErrors()) { Map errors = new HashMap(); bin..
리버스 프록시란?- 클라이언트와 서버 사이에 위치해서 서버를 대신해 클라이언트의 요청을 받고 처리하는 중간 서버 특징- 클라이언트 입장에서는 리버스프록시가 실제 서버처럼 보임. 실제 백엔드 WAS 서버는 클라이언트로부터 숨겨진다.- 서버측들을 보호하고 대표하는 역할. 리버스 프록시의 주요 기능- 어느 백엔드로 보낼 지 라우팅 결정- 캐싱 - 정적 컨텐츠, 동적 컨텐츠(API 응답) 캐싱 - 보안(백엔드 서버 은닉)- SSL 종료(클라이언트가 HTTPS로 요청을 전송하면 리버스 프록시가 SSL/TLS 연결을 받아서 복호화 HTTP로 백엔드 서버에 전달, 다시 백엔드가 응답하면 HTTPS로 암호화해서 클라이언트에 전달) 캐싱 설정 예시proxy_cache_path /var/cache/nginx lev..
Pagination 개념- 웹사이트에서 데이터를 페이지별로 나누어서 표시하는 기술 Pagination 사용 이유- 페이지네이션을 사용하는 이유는 크게 Engineering 관점에서 성능향상과 사용자 관점에서 사용자 경험 개선이 있다.- 보통 데이터는 데이터베이스에 저장해두고 사용하는데 데이터베이스를 통해 대량의 데이터를 한 번에 요청하고 이를 다시 클라이언트로 전송하려면 네트워크를 많이 이용해야하고 그러면 결국 페이지 로딩 속도가 저하될 수밖에 없다. 그래서 페이지별로 데이터를 그룹화해서 원하는 만큼의 데이터를 요청하고 응답하면서 성능을 향상시킬 수 있다. 이렇게 되면 사용자가 페이지별로 원하는 데이터를 쉽게 탐색하고 검색할 수 있다. Pagination에서 사용되는 용어- page number : 데이..
Spring 6.2.11 버전 공식문서를 참고하여 작성하였습니다. @Configurationpublic class WebConfiguration implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**") .addResourceLocations("/public", "classpath:/static/"); }} "/resource"로 시작하는 요청이 있다면 그 다음에 설정된 상대경로 "/public"(루트 아래의 상대경로로 "/public" ), "classpath:/static/"(cl..