[LeetCode] Second Highest Salary 문제 : https://leetcode.com/problems/second-highest-salary/description/ 풀이1. 서브쿼리 SELECT MAX(salary) AS SecondHighestSalary FROM ( SELECT salary, DENSE_RANK() OVER (ORDER BY salary DESC) AS rnk FROM Employee) rankedWHERE rnk = 2; DataBase🛢/LeetCode 문제 풀이 2025.05.09
JPA, Hibernate, spring Data JPA JPA는 표준 인터페이스를 제공하고, Hibernate는 JPA를 구현하며, Spring Data JPA는 JPA 사용을 간편하게 만들어주기 때문에 이 세 가지를 함께 사용합니다. Spring Data JPA는 Repository 인터페이스를 통해 데이터 액세스 코드를 줄이고, Hibernate는 JPA 표준을 준수하며 실제 데이터베이스와의 통신을 담당합니다. 1. JPA (Java Persistence API)JPA는 Java 애플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의하는 표준 명세이다. JPA는 인터페이스의 집합이며, 실제 구현은 제공하지 않는다. JPA는 객체-관계 매핑(ORM)을 위한 인터페이스와 어노테이션을 제공하며, EntityManager와 같은 핵심 인터페이스를 정의함.주.. General/JPA 2025.05.09
H2 DB를 local profile에 적용하기 H2 DB 는 경량 Database 로 개발 단계에서 많이 사용하고 있으며 , Disk 가 아닌 Memory 에 데이터를 저장할 수 있다 . 데이터가 휘발된다는 단점을 코드에만 집중하는 데 사용하는 것이다 ✅application.yml 설정spring: config: activate: on-profile: local //profile 선택: local datasource: url: "jdbc:h2:mem:library;MODE=MYSQL;NON_KEYWORDS=USER" username: "sa" password: "" driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create pro.. DataBase🛢/H2 2025.05.09
[LeetCode] Combine Two Tables 문제 : https://leetcode.com/problems/combine-two-tables/description/ 풀이:# 방법1. LEFT JOIN (가장 일반적인 방법)SELECT p.firstName, p.lastName, a.city, a.stateFROM person pLEFT JOIN address aON p.personId = a.personId;# 방법2. COALESCE (lEFT JOIN 과 효율성 동일 단지 결과 가공용)SELECT p.firstName, p.lastName, COALESCE(a.city, NULL ) AS city, COALESCE(a.state, NULL ) AS stateFROM Person pLEFT JOIN .. DataBase🛢/LeetCode 문제 풀이 2025.05.08
[JPA] orphanRemoval vs CascadeType.REMOVE 정리 orphanRemoval 과 CascadeType.REMOVE 는 JPA(Java Persistence API)에서 엔티티 간의 관계를 관리하고, 둘다 부모 엔티티와 자식 엔티티 간의 관계에서 자식 엔티티를 삭제하는 데 사용된다는 점에선 같지만, 삭제 트리거(Trigger)가 다르다. ✅ 요약비교: CascadeType.REMOVE vs orphanRemoval = true항목CascadeType.REMOVEorphanRemoval = true삭제 trigger부모 엔티티 자체가 삭제될 때연관관계에서 자식이 제거될때실행 시점entityManager.remove(parent)parent.getChildren().remove(child) 등자식 삭제 방식부모와 함께 삭제부모와의 관계가 끊어지면 삭제삭제 대.. General/JPA 2025.05.07
[JPA] 연관관계 주인이란? ✅ 결론부터 말하자면연관관계의 주인은 외래 키를 직접 가지므로, 해당 테이블에 외래 키 컬럼이 존재함.연관관계의 주인이 아닌 쪽은 외래 키 컬럼이 테이블에 존재하지 않는다.@Entitypublic class Member { @Id @GeneratedValue private Long id; @ManyToOne @JoinColumn(name = "team_id") // 외래 키가 있는 쪽 → 연관관계의 주인 private Team team;}@Entitypublic class Team { @Id @GeneratedValue private Long id; @OneToMany(mappedBy = "team") // 주인이 아님 (읽기 전용) private List.. General/JPA 2025.05.07
NOT IN 과 NOT EXISTS 차이 SQL에서 NOT IN과 NOT EXISTS는 서브쿼리에서 특정 조건을 만족하지 않는 데이터를 필터링하는 데 사용되는 연산자이다. 두 연산자는 비슷한 결과를 낼 수 있지만, 동작 방식과 성능, NULL 값 처리에서 차이점을 보인다. 🧩 NOT IN 연산자NOT IN 연산자는 서브쿼리 결과에 없는 값을 가진 행을 선택한다. 즉, 메인 쿼리의 특정 컬럼 값이 서브쿼리 결과 집합에 존재하지 않는 경우에 TRUE를 반환한다.SELECT column1, column2, ...FROM table_nameWHERE column_name NOT IN (subquery); 장점:구문이 간단하고 직관적이다.비교적 작은 데이터 집합에서 사용하기에 적합하다.단점:서브쿼리에 NULL 값이 포함될 경우, 전체 쿼리 결과가 .. DataBase🛢/query🔍 2025.05.06
CSS-in-JS React는 크게 2가지 방식으로 컴포넌트의 스타일을 적용한다.CSS in CSS리액트 컴포넌트 별로 css 파일을 갖는 형식으로 스타일을 관리CSS Module별도의 자바스크립트 전환 필요 없음(속도가 빠름)CSS in JS자바스크립트 내에서 css를 작성하는 방식대표적인 라이브러리로 styled-component, emotion 등이 있음현재 사용중인 스타일만 DOM에 포함시킬 수 있음별도 패키지를 설치하기 때운에 용량이 증가함(스크립트 전환이 필요하여 속도가 다소 느려짐) 🔥 CSS in JS 방식으로 하기위해 Emotion 적용하기yarn add @emotion/react @emotion/styled또는npm install @emotion/react @emotion/styled 설치 완료되면 .. General/React⚛️ 2025.05.06
reportWebVitals.ts (오류 : Unknown options: extensions, resolvePluginsRelativeTo) 오류 해결 : 아래와 같이 수정 (참고 링크: https://github.com/GoogleChrome/web-vitals/issues/482)import { MetricType } from "web-vitals";const reportWebVitals = (onPerfEntry?: (metric: MetricType) => void) => { if (onPerfEntry && onPerfEntry instanceof Function) { import("web-vitals").then(({ onCLS, onINP, onFCP, onLCP, onTTFB }) => { onCLS(onPerfEntry); onINP(onPerfEntry); onFCP(onPerfEntry);.. Project/profile-service 2025.05.06
ESLint 설치 방법 ESLintESLint는 ES(ECMAScript)와 Lint의 합성어로, 자바스크립트를 분석하여 오류나 버그를 찾는데 도움을 주는 정적 분석도구 1. 설치 yarn add --dev eslint eslint-config-prettier eslint-config-prettier : eslint에서 prettier와 충돌할 수 있는 rule을 끔 2. ESLint 설정 파일을 생성하고 초기 설정을 도와주는 마법사(wizard) 를 실행npx eslint --init 위의 과정이 끝나고 설치되면 eslint.config.mjs 파일이 만들어짐 3. eslint.config.mjs 파일 설정import js from "@eslint/js";import globals from "globals";import p.. Project/profile-service 2025.05.06