programming study 73

@Async

How does @Async work? @Async를 지금까지 잘 못 쓰고 있었습니다(@Async 사용할 때 주의해야 할 것, 사용법) (tistory.com) [Spring] @Async 비동기 멀티스레드 사용법 (tistory.com) Spring 에서 async 처리 (@Async) (tistory.com) 스프링에서 @Async로 비동기처리하기 :: 스프링부트는 사랑입니다 (tistory.com) 비동기란? 비동기란 다른 쓰레드에서 병렬로 동작시키면서 응답을 기다리지 않고 처리할 수 있는 기술이며, 요청이 몰리거나 오래걸리는 작업을 처리할 때 사용하여 어플리케이션의 성능 향상을 위해 사용된다 @Acync 어노테이션 사용 시 주의 사항 @Async어노테이션의 사용법에 관한 주의사항이 있습니다. @A..

JPA fetch 전략 - 왜 LAZY가 성능상 이점인지?

JPA에서는 엔티티를 가져오는 방식에 대해 fetch 전략을 설정할 수 있습니다. Fetch 전략은 엔티티와 관련된 연관 관계의 데이터를 어떤 시점에 가져올지를 결정하는 것입니다. JPA에서는 기본적으로 두 가지 fetch 전략을 제공합니다. EAGER Fetch 전략 EAGER fetch 전략은 엔티티를 조회할 때 연관된 엔티티도 함께 조회합니다. 즉, 엔티티와 연관된 엔티티들이 모두 로딩됩니다. 이 방식은 필요한 모든 데이터를 한 번에 가져올 수 있어서 편리하지만, 불필요한 데이터를 가져오게 되면 성능 이슈가 발생할 수 있습니다. LAZY Fetch 전략 LAZY fetch 전략은 엔티티를 조회할 때 연관된 엔티티를 로딩하지 않고, 실제로 사용될 때 로딩합니다. 이 방식은 필요한 데이터만 가져오기 때..

JPA - N+1 문제에 대해서

서론 JPA에서 대표적으로 겪는 이슈로 N+1 현상이 있다고 한다. 토이 프로젝트로 만들었던 곳에서도 이 현상이 일어나는지 확인해보고 수정을 해보고자 한다. [10분 테코톡] 수달의 JPA N+1 문제 - YouTube 에서 설명한 내용이 이해하기에 좋은 것 같아서 정리해보고 내 프로젝트에 관련된 내용을 추가로 정리한다음 적용해보자. 본론 N+1 이란? 요청이 한개의 쿼리만 실행하기를 기대했는데, N개의 쿼리가 추가로 발생하는 현상 따라서 1+N이라고 생각하면 쉽다. @OneToOne, @oneToMany, @ManyToOne 등 여러 상황에서 발생할 수 있다. @OneToMany 지연로딩일 때 1. findAll()로 크루 목록을 조회 참고) JPQL Java Persistence Query La..

MySQL - index, 복합 인덱스 주의 사항, 스칼라 서브 쿼리 vs left join, index 실행 계획

index 인덱스와 카디널리티 (velog.io) [SQL] 인덱스(INDEX) (tistory.com) 인덱스 컬럼의 분포도 및 순서(오라클 인덱스) (tistory.com) DB Index 동작원리를 알아보자 | Eric's DevLog (데브로그) (kyungyeon.dev) 3장 인덱스 튜닝 - 그래서 어쩌라고? (velog.io) 인덱스 튜닝 – DATA ON-AIR (dataonair.or.kr) [mysql] 인덱스 정리 및 팁 (tistory.com) MySQL Index 특징 및 유의사항 정리 :: 뱀귤 블로그 (tistory.com) index란 데이터베이스에서 검색을 할 때 더 빠르게 검색하기 위한 기술입니다. index는 Clustered index와 Non Clustered Ind..

키워드 정리

코딩테스트 SQL (MySQL) (tistory.com) [MYSQL]코딩테스트용 문법 정리 :: 빈둥벤둥 IT logging (tistory.com) [MYSQL]코딩테스트용 문법 정리 📝 코딩테스트에서 자주 나오는 SQL 문법 정리 📌 요즘 코딩테스트에 SQL문제가 포함된 경우를 자주 만나고 있다. 📌 그럴 때마다 프로그래머스의 SQL문제를 다시한번 쭉 풀어보고 있으며 프로 moonsbeen.tistory.com Mysql 문자열 자르기와 나누기 함수 (tistory.com) Mysql 문자열 자르기와 나누기 함수 1. 왼쪽에서 문자열 자르기 left(컬럼명 또는 문자열, 왼쪽에서 잘라낼 문자열의 길이) 사용예 : SELECT left("https://abbo.tistory.com", 5) 결과 : ..

CORS와 쿠키(Same-Site, Secure, httpOnly), CSRF와 XSS

출처 이해하기 쉬운 웹 보안 모델 이야기 1 (SOP, CORS) :: Stay hungry, Stay foolish. (zairo.kr) [WEB] 동일 출처 정책(SOP)과 교차 출처 리소스 공유(CORS)란? (tistory.com) CORS와 쿠키(Same-Site, Secure, httpOnly) (velog.io) [WEB] 📚 악명 높은 CORS 개념 & 해결법 - 정리 끝판왕 👏 (tistory.com) [Web] CORS (Cross Origin Resource Sharing) 이해하기 (tistory.com) [Web] XSS와 CSRF (Cross Site Scripting and Cross Site Request Forgery) (tistory.com) XSS와 CSRF 차이점 (t..

JPA란?

Java Persistence API - 자바 애플리케이션에서 ORM 을 사용하는 방식을 정의한 인터페이스입니다. - 주로 hivernate를 객체로 사용함 - 관계형 데이터베이스와 객체의 패러다임 불일치 문제를 해결할 수 있다는 점과 영속성 컨텍스트(엔티티를 영구 저정하는 환경) 제공이 큰 특징입니다. Hivernate - 자바 언어를 위한 ORM 프레임워크 Object Relational Mapping - 객체와 관계형DB를 맵핑해주는 기술 Spring Data JPA, Query DSL - JpaRepository 을 상속받아 repository 생성 -> 기본적인 CRUD 쿼리를 사용할 수 있게 해줌 - 쿼리 메서드, @Query 어노테이션을 이용한 JPQL, 네이티브 쿼리 사용, Query DS..