JPA에서 N+1 문제
·
개발 노트/Spring
N+1 문제란?N+1 문제는 JPA나 ORM을 사용할 때 발생할 수 있는 성능 문제 중 하나다. 간단히 말해, 하나의 쿼리를 실행한 후 관련된 N개의 항목에 대해 추가로 N개의 쿼리가 실행되는 상황을 말한다. 예를 들어, 한 번의 조회 쿼리로 여러 개의 부모 엔티티를 가져온 후, 각 부모 엔티티와 관련된 자식 엔티티를 조회하기 위해 N번의 추가 쿼리가 실행되는 경우가 이에 해당한다. N+1 문제 예시Entity Class@Entitypublic class Parent { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @OneToMany(mappedBy = "parent", fetch = FetchTy..
JPA에서 트랜잭션 처리 및 데이터베이스 격리 수준
·
개발 노트/Spring
트랜잭션이란?트랜잭션(Transaction)은 데이터베이스의 상태를 변화시키기 위해 수행하는 일련의 연산들을 말한다. 트랜잭션은 데이터의 무결성과 일관성을 보장하기 위해 ACID 속성을 따른다.원자성(Atomicity): 트랜잭션 내의 모든 작업이 완벽하게 수행되거나 전혀 수행되지 않아야 한다.일관성(Consistency): 트랜잭션이 성공적으로 완료되면 데이터베이스는 일관성 있는 상태를 유지해야 한다.격리성(Isolation): 트랜잭션이 실행되는 동안 다른 트랜잭션의 영향을 받아서는 안 된다.지속성(Durability): 트랜잭션이 완료되면 그 결과는 영구적으로 반영되어야 한다. JPA와 트랜잭션 처리JPA에서 트랜잭션 관리는 주로 EntityManager를 통해 이루어진다. 하지만 Spring Da..
Spring Data JPA 이해하기: 주요 구성 요소와 어노테이션
·
개발 노트/Spring
Spring Data JPA 개요 및 사용 방법Spring Data JPA란?Spring Data JPA는 Spring 프레임워크의 일부로, JPA(Java Persistence API)를 쉽게 사용할 수 있도록 도와주는 라이브러리이다. Spring Data JPA는 리포지토리 추상화(Repository Abstraction)를 제공하여, 개발자가 데이터 접근 계층을 더욱 간편하게 구현할 수 있도록 돕는다. 이를 통해 반복적인 CRUD (Create, Read, Update, Delete) 작업을 줄이고, 복잡한 쿼리 작성도 손쉽게 할 수 있다. 왜 Spring Data JPA를 사용하는가?Spring Data JPA를 사용하는 이유는 다음과 같다:생산성 향상: 반복적인 CRUD 작업을 자동화하여 개발 ..
JPA 이해하기: 동작 원리와 핵심 구성 요소
·
개발 노트/Spring
JPA 개요 및 동작 원리JPA란?JPA(Java Persistence API)는 자바 애플리케이션에서 관계형 데이터베이스를 사용하여 데이터를 저장, 수정, 삭제, 조회할 수 있도록 하는 자바 표준 API이다. JPA는 객체 지향 프로그래밍과 관계형 데이터베이스 간의 패러다임 불일치를 해결하는 데 중점을 두고 있으며, 개발자가 데이터베이스 작업을 보다 쉽게 할 수 있도록 도와준다. JPA 사용 이유JPA를 사용하는 이유는 다음과 같다:객체와 관계형 데이터베이스 간의 매핑: JPA는 객체 지향 프로그래밍의 장점을 살려 데이터베이스 테이블과 자바 객체 간의 매핑을 자동화한다.생산성 향상: JPA는 데이터베이스 작업을 추상화하여 반복적인 코드 작성을 줄여준다. 이는 개발자의 생산성을 크게 향상시킨다.유지보수성..
SOLID 원칙: 객체 지향 프로그래밍의 5대 기본 원칙
·
개발 노트/etc.
SOLID 원칙SOLID 원칙이란?SOLID 원칙은 객체 지향 프로그래밍에서 코드의 유지보수성과 확장성을 높이기 위한 다섯 가지 기본 원칙을 의미한다. 이 원칙들은 Robert C. Martin(일명 Uncle Bob)에 의해 제안되었으며, 잘 설계된 소프트웨어 시스템을 구축하는 데 중요한 가이드라인을 제공한다. SOLID는 다음 다섯 가지 원칙의 약자이다: 단일 책임 원칙(Single Responsibility Principle), 개방-폐쇄 원칙(Open/Closed Principle), 리스코프 치환 원칙(Liskov Substitution Principle), 인터페이스 분리 원칙(Interface Segregation Principle), 의존 역전 원칙(Dependency Inversion P..
Git Flow VS GitHub Flow
·
개발 노트/etc.
Git Branch 전략여러 개발자가 하나의 저장소에 작업을 할 때, 협업을 좀 더 효과적으로 하기 위해 git branch에 대한 규칙을 정하고 저장소를 잘 활용하기 위한 workflow를 정의하는 것을 바로 git branch 전략이라고 한다. 소프트웨어 개발 팀에서는 프로젝트의 특성에 따라 적절한 브랜치 배포 전략을 채택하는 것이 중요하다. Git Branch 전략의 필요성Git branch 전략은 여러 명의 개발자가 동시에 작업할 때 특히 유용하다. 각자 다른 기능을 담당하는 브랜치를 사용하여 작업하면, 개발 중인 기능이나 수정사항이 서로 독립적으로 진행될 수 있다. 또한, 각각의 브랜치가 특정 기능, 이슈에 대응하여 특정 작업을 추적하고, 필요한 경우 작업 단위의 Rollback이 가능하여 프로..