728x90

전체 글 143

JPA 영속성과 캐시의 관계 – 캐시처럼 동작하는 영속성 컨텍스트

JPA = ORM + 캐시?JPA를 쓰다 보면 마치 자동으로 캐시를 써주는 것 같은 경험을 하게 됩니다. 같은 데이터를 여러 번 조회해도 SQL 쿼리가 한 번만 날아가고, 트랜잭션 내에서 바뀐 값이 자동으로 DB에 반영되기도 하죠. 이 모든 비밀은 영속성 컨텍스트에 있습니다.1. 영속성 컨텍스트는 1차 캐시다JPA에서 영속성 컨텍스트는 1차 캐시 역할을 합니다.1차 캐시란?트랜잭션 범위 내에서만 유효한 메모리 캐시입니다.동일한 EntityManager에서 같은 엔티티를 여러 번 조회해도 DB에서 재조회하지 않고 캐시에서 반환합니다.2. persist()와 캐시의 관계📍 persist() 호출 시엔티티는 영속성 컨텍스트에 저장됩니다.이후 해당 엔티티는 1차 캐시에 존재합니다.같은 엔티티를 다시 조회하면 ..

JPA 2025.04.24

JPA 영속성 컨텍스트란? 쉽게 이해하는 JPA 핵심 개념

1. 영속성 컨텍스트란 무엇인가?JPA(Java Persistence API)를 사용하다 보면 "영속성 컨텍스트(Persistence Context)"라는 용어를 자주 접하게 됩니다. 영속성 컨텍스트는 엔티티를 관리하는 일종의 메모리 공간으로 이해할 수 있습니다. 더 정확히 말하면, 엔티티 객체를 데이터베이스와 동기화된 상태로 유지해주는 캐시입니다.JPA를 처음 접할 때 혼란스러울 수 있는 이 개념, 지금부터 쉽게 풀어보겠습니다.2. 영속성 컨텍스트의 역할엔티티 관리: 데이터베이스에서 조회한 엔티티 객체를 관리합니다.1차 캐시: 같은 트랜잭션 내에서 동일한 엔티티를 여러 번 조회해도 데이터베이스에 다시 접근하지 않고 메모리에서 가져옵니다.변경 감지 (Dirty Checking): 영속성 컨텍스트에 저장된..

JPA 2025.04.24

JPA에서 트랜젝션

1. 트랜잭션 기본 개념JPA에서 모든 데이터 변경 작업(CREATE, UPDATE, DELETE) 은 반드시 트랜잭션 안에서 이루어져야 해.트랜잭션 생명주기시작: tx.begin();작업 수행: persist, find, remove, 등.성공 시 커밋: tx.commit();오류 시 롤백: tx.rollback(); 2. 매번 트랜잭션을 직접 만드는 방식 (지금처럼)EntityManager 를 사용할 때 매 작업마다 트랜잭션을 시작하고 종료해야 해.이 방식은 단순한 자바 SE 환경 (Spring 없이 순수 JPA) 에서 많이 씀.예시:EntityTransaction tx = em.getTransaction();tx.begin();try { // 작업 em.persist(...); tx..

JPA 2025.04.24

소프트웨어 공학

1. 소프트웨어 공학 개요1.1 소프트웨어 공학의 정의소프트웨어 공학(Software Engineering)은 효율적인 비용으로 높은 품질의 소프트웨어를 개발하기 위한 학문이다. 단순한 프로그래밍이 아닌, 소프트웨어의 계획, 분석, 설계, 구현, 테스트, 유지보수 등 전체 생명주기를 체계적으로 다룬다.궁극적으로는 개발 생산성을 높이고, 유지보수가 쉬운 품질 좋은 소프트웨어를 만드는 것이 목표다.1.2 소프트웨어 공학의 3R소프트웨어의 생산성을 극대화하고, 개발 비용을 절감하며, 유지보수를 효율적으로 하기 위한 세 가지 핵심 전략은 다음과 같다.Reverse Engineering (역공학)이미 개발된 시스템으로부터 설계나 구조를 추출하는 과정이다.문서화가 부족한 기존 시스템을 분석하여 문서를 생성하거나 새..

프로세스 스케줄링 기법 정리

운영체제에서 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있습니다. 이때 어떤 프로세스를 먼저 실행시킬지를 결정하는 것이 바로 프로세스 스케줄링입니다. 다양한 방식이 존재하며, 각각의 장단점이 다릅니다.1. FCFS (First-Come, First-Served)의미: 먼저 도착한 순서대로 실행장점: 구현이 쉽고 직관적단점: 대기 시간이 길어질 수 있음 (특히 실행 시간이 긴 작업이 앞에 있을 경우)예시A(도착 0, 실행 30), B(도착 5, 실행 10), C(도착 10, 실행 5)실행 순서: A → B → C2. SJF (Shortest Job First)의미: 실행 시간이 가장 짧은 프로세스를 먼저 실행장점: 평균 대기 시간을 최소화할 수 있음단점: 실행 시간이 긴 작업은 계속 밀림 (기아..

==와 equals

✅ == 비교 대상: 객체의 참조(reference) 를 비교설명: 두 객체가 같은 메모리 주소(= 같은 인스턴스) 를 가리키는지를 확인기본형(primitive) 타입에서는 실제 값을 비교String a = new String("hello");String b = new String("hello");System.out.println(a == b); // false → 서로 다른 객체를 참조✅ .equals() 메서드비교 대상: 객체의 내용(값) 을 비교설명: 두 객체가 논리적으로 같은지를 판단String, Integer 등 대부분의 클래스는 .equals() 를 오버라이딩해서 내용 비교가 되도록 정의돼 있음System.out.println(a.equals(b)); // true → 문자열 내용이 같음🔎 ..

C언어 문자열 관련 함수

주요 문자열 관련 함수들을 예시와 함께 쉽게 정리해 보겠습니다.1. 문자열 길이 측정: strlen기능문자열의 길이를 반환합니다. (널 문자는 계산하지 않습니다.)사용 예:설명: "Hello, world!"는 13개의 문자를 포함하므로 출력은 13이 됩니다.#include #include int main(void) { char str[] = "Hello, world!"; size_t len = strlen(str); printf("문자열 길이: %zu\n", len); return 0; }2. 문자열 복사: strcpy와 strncpya. strcpy기능원본 문자열(source)을 목적지 문자열(destination)로 복사합니다. 널 문자까지 복사하므로, 목적지 배열은 충분한 크기를 가져야 합니다. ..

C언어 2025.04.11

Chapter 01. 파이썬 자료형

파이썬에서 자료형은 데이터의 종류를 정의하는 가장 기본적인 개념입니다. 숫자, 문자, 리스트, 딕셔너리 등 다양한 형태의 데이터를 다루기 위해 꼭 알아야 할 주제죠. 이 글에서는 파이썬의 기본 자료형을 예제와 함께 상세히 설명합니다.1. 숫자형(Number)파이썬에서 숫자형은 int(정수)와 float(실수)를 기본으로 합니다.🔹 정수형 (int)a = 10b = -5print(type(a)) # 특징소수점 없음크기 제한 없음 (메모리 허용 범위 내)🔹 실수형 (float)pi = 3.14159print(type(pi)) # 연산 예시x = 10y = 3print(x / y) # 3.333...print(x // y) # 3 (정수 나눗셈)print(x % y) # 1 (나머지)🔹 형변환a ..

Python 2025.04.07

애자일(Agile)이란? – 고객 중심 개발을 위한 민첩한 접근

애자일이 뭐예요?애자일(Agile)은 ‘빠르고 유연하게’ 소프트웨어를 개발하기 위한 방법론이에요. 전통적인 폭포수(Waterfall) 모델처럼 모든 계획을 처음에 확정하고 한 번에 개발을 끝내는 방식과 달리, 애자일은 작은 단위로 나눠서 반복적으로 개발하고, 그때그때 피드백을 반영하는 방식이에요.2001년, 17명의 개발자들이 만든 애자일 선언문(Agile Manifesto)에 다음과 같은 핵심 가치가 담겨 있어요프로세스와 도구보다 개인과 상호작용을방대한 문서보다 작동하는 소프트웨어를계약 협상보다 고객과의 협업을계획을 따르기보다 변화에 대응하기를요약하자면, 사람 중심, 작동하는 결과 중심, 고객 협업 중시, 변화 수용이라는 네 가지 핵심 철학이 애자일의 본질입니다.왜 애자일이 중요할까?요즘처럼 요구사항이..

IT 2025.03.31
728x90