전체 글 보기

Spring

[Spring/Redis] Spring @Cacheable과 Redis를 이용한 메서드 레벨 캐싱

Spring의 Cache 추상화개발을 하다 보면, 동적으로 변하진 않는데, 자주 필요한 데이터들을 조회하는 API를 호출할 일이 종종 있다. 간단한 예시로 아래와 같은 상황이 있을 수 있다.Frontend에서 select-box의 값을 채우기 위한 data List 조회외부 API에서 특정 데이터를 조회하는데, 외부 API에서 제공하는 데이터의 갱신 주기가 길 때자주 호출되는 데이터이지만, 실시간으로 변하는 값이 아닐 때Spring은 자주 호출되는 메서드의 실행 결과를 캐시에 저장하고, 이후 동일한 요청이 들어오면 캐시 된 값을 반환하여 응답 속도를 높이고 시스템 부하를 줄일 수 있도록 캐싱 기능을 추상화하여 제공한다.캐시 구현체와 무관하게 사용할 수 있도록 @Cacheable, @CacheEvict, ..

JPA & QueryDSL

[JPA] JPA 복합키 Entity Mapping @IdClass / @EmbeddedId

복합키(Composite key)관계형 데이터베이스에서 복합키(Composite Key)란, 두 개 이상의 컬럼을 조합하여 하나의 기본 키(Primary Key)로 사용하는 것을 의미한다. 단일 컬럼만으로는 데이터의 고유성을 보장할 수 없을 때, 여러 컬럼을 묶어 하나의 키로 사용하는 방식이다. 아래 테이블처럼, 주문번호와 상품번호 두개를 묶어야 하나의 고유한 key가 되는 경우를 말한다.이런 경우에 JPA에서 단일키를 사용할 때보다 복잡하고, 귀찮은 작업이 필요하다. 복합키가 꼭 필요하지 않다면, 단일키 전략을 사용하는 것이 낫다고 생각하지만,이미 존재하는 테이블을 엔티티 매핑 해야할 때가 있을것이다.복합키 매핑 시 특징key class에 Serializable을 구현해야된다.key class에 equ..

[ Frontend ]/Vue.js & Nuxt.js

[Nuxt3] Nuxt가 제공하는 페이지 이동 컴포넌트 <NuxtLink>

NuxtLink 개요는 Vue Router의 와 html의 태그를 모두 대체하는 Nuxt3의 내장 컴포넌트이다.내부 링크와 외부 링크를 자동으로 구분하고, 최적화를 사용하여 링크를 렌더링 한다.NuxtLink는 내부 링크인지 외부 링크인지 자동으로 감지하고 적절한 방식으로 처리합니다.내부 링크 (/main 같은 경로)는 Vue Router를 사용해 클라이언트 사이드 내비게이션을 수행합니다.외부 링크 (https://example.com)는 일반적인 태그로 렌더링 됩니다.내부 라우팅이렇게 내부 경로의 /main으로 설정되어 있는 경우, 내부의 다른 페이지에 연결한다. Main Page 외부 라우팅이렇게 외부 경로 url이 설정되어있는 경우, 외부 웹사이트에 연결한다. Nuxt Doc..

[ Frontend ]/Vue.js & Nuxt.js

[Nuxt3] 사용자 정의 페이지 메타 함수 definePageMeta()

definePageMeta()pages/ 디렉터리에 있는 페이지 컴포넌트에 대한 메타데이터를 설정하는 데 사용할 수 있는 컴파일러 매크로 함수이다. 주요 요소들은 아래와 같다.definePageMeta로 정의한 메타데이터의 주요 요소 • alias여러 URL을 동일한 페이지로 연결할 수 있도록 별칭을 지정합니다. • keepalive페이지를 로 감싸 상태를 유지하도록 설정합니다. • key의 렌더링을 제어하기 위한 키 값을 설정합니다. • layout페이지에 사용할 레이아웃을 지정합니다. false로 설정하면 레이아웃을 비활성화할 수 있습니다. • layoutTransition / pageTransition페이지 및 레이아웃 변경 시 사용할 전환 효과를 설정합니다. • middleware페이지를 로드하기..

[ Frontend ]/Vue.js & Nuxt.js

[Nuxt3] Props 선언 및 사용

1.  (구)Nuxt 2 Props 선언 props: { title: { type: String, default: '', }, seq: { type: Number, default: 1, }, },2. Nuxt3 Props 선언title 뒤에 ? 가 붙어있는 것을 볼 수 있다.?가 있을 경우 undefined도 할당할 수 있고, ?가 없을 경우 오직 string만 가능하다.interface Props { title?: string; seq?: number;}defineProps(); 3. default값 설정interface Props { title: string; seq: number;}withDefaults(defineProps(), ..

[ Frontend ]/Vue.js & Nuxt.js

[Nuxt3] 개발환경 구성 Get started

Nuxt 3 공식 문서https://nuxt.com/docs/getting-started/installation Installation · Get Started with NuxtGet started with Nuxt quickly with our online starters or start locally with your terminal.nuxt.com0. node version# node versionnvm install 20nvm use 20npm -v1. create nuxt빈 폴더 하나를 만들고, 터미널에서 pnpm으로 설치했다.npx nuxi@latest init nuxt3_lecture 2. package manager 선택npm 선택 3. package.json 수정 (nuxi)nuxt3부터..

JPA & QueryDSL

[QueryDSL] BooleanExpression을 이용한 WHERE 조건 표현식

QueryDSL은 JPA와 함께 사용하여, 복잡한 동적 쿼리, Join 쿼리 등을 최적화해 준다.이중 BooleanExpression을 주로 사용하여 where 조건절을 세팅한다.이 글은 Boolean expression을 사용하는 여러 상황을 정리하고, BooleanExpression이 제공하는 메서드를 살펴본다.Version# versionspring-boot: 3.4.3JPA: 3.1.0querydsl: 5.0.0# build.gradledependencies { implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta" annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" annot..

[ 기타 ]/끄적끄적...

[끄적끄적] 코딩주짓수와 구글 코딩 가이드

얼마 전에 봤던 인상 깊은 글의 내용을 소개하고자 합니다. 얼마 전에 커리어리라는 커뮤니티에서 한 시니어 개발자 분이 쓴  "코드 가독성과 빼기의 미학"이라는 제목의 글을 봤다.사실 내용은 어느정도 알고 있는 내용이었고, 여기서 가장 큰 수확은 "코딩 주짓수"라는 재밌는 단어를 알게 된 것이다.요약하자면 "코딩 주짓수"하지 말고 읽기 쉬운 코드를 작성하라는 것이다.구글 코딩 가이드라인을 보면, 코드 가독성(Readability)를 강조한다고 한다. 읽기 쉬운 코드를 작성해야, 본인이 나중에 본인의 코드를 볼 때도 도움이 되고, 타인이 볼 때도 도움이 되어 유지보수성 향상에 도움이 된다는 것이다. 회사에서 신입으로 입사 후 시니어분께 처음 주입받은 개념 중 하나는 "코딩 주짓수 하지 마라"와 비슷한 내용의..

HSRyuuu
'분류 전체보기' 카테고리의 글 목록