일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 1차원 DP
- 2차원 dp
- 99클럽
- @Builder
- @GeneratedValue
- @GenericGenerator
- @NoargsConstructor
- @Transactional
- Actions
- Amazon EFS
- amazon fsx
- Android Studio
- ANSI SQL
- ApplicationEvent
- assertThat
- async/await
- AVG
- AWS
- Azure
- bind
- builder
- button
- c++
- c++ builder
- c03
- Callback
- case when
- CCW
- chat GPT
- CICD
- Today
- Total
목록교육 (40)
기록
1. 단위 테스트란 무엇인가?단위 테스트(Unit Test) 는 애플리케이션의 가장 작은 단위(클래스, 메서드)를 독립적으로 테스트하는 과정입니다. 개발자가 작성한 코드가 기대한 대로 동작하는지 확인하며, 주로 하나의 특정 기능에 초점을 맞춥니다.단위 테스트의 주요 목적:코드의 동작을 빠르게 확인할 수 있음.개발 초기 단계에서 버그를 발견할 가능성이 높아짐.리팩토링이나 기능 추가 시 변경된 코드가 기존 기능에 영향을 미치지 않도록 보장.2. 수동 테스트먼저, 수동 테스트로 단위 테스트를 시도해보겠습니다. 아래는 간단한 수동 테스트 코드입니다:@Testvoid add() { CafeKiosk cafeKiosk = new CafeKiosk(); cafeKiosk.add(new Americano()..
시작하면서소프트웨어 개발에서 테스트는 선택이 아닌 필수입니다. 그러나 현실에서는 "테스트를 어떻게 작성해야 할까?", "효율적인 테스트 전략은 무엇일까?"와 같은 고민에 빠지기 마련입니다. 이 시리즈는 그러한 고민에 실용적인 해답을 제공하기 위해 시작되었습니다.이 블로그 시리즈는 Inflearn의 Practical Testing 강의를 듣고 학습한 내용을 기반으로 작성되었습니다. 강의의 주요 개념과 실습 과정을 정리하고, 실제 프로젝트에 활용할 수 있는 팁을 공유합니다.이 시리즈에서 다룰 내용단위 테스트와 TDD의 기본 개념Spring & JPA 기반의 레이어드 테스트 작성법Mocking과 Stubbing을 활용한 테스트 최적화BDD 스타일과 테스트 문서화 기법더 나은 테스트를 위한 구체적 조언
시작하면서Java Persistence API(JPA)는 객체와 관계형 데이터베이스 간의 매핑을 지원하는 강력한 도구로, 개발자들이 SQL을 직접 다루지 않고도 데이터를 효율적으로 관리할 수 있도록 돕습니다. 이 글에서는 책 "자바 ORM 표준 JPA 프로그래밍"의 16장에서 다룬 중요한 개념과 예제를 중심으로 내용을 정리하였습니다.1. 격리 수준과 문제점JPA에서는 트랜잭션 격리 수준을 이해하고 데이터 일관성을 유지하는 것이 중요합니다. 격리 수준에 따라 발생할 수 있는 문제점을 아래 표에 정리하였습니다.격리 수준설명발생할 수 있는 문제READ UNCOMMITTED트랜잭션에서 커밋되지 않은 데이터를 읽을 수 있음Dirty ReadREAD COMMITTED커밋된 데이터만 읽을 수 있음Non-repeata..
JPA 활용과 심화 이해이 글은 "자바 ORM 표준 JPA 프로그래밍" 책의 주요 내용을 바탕으로 작성되었습니다. 특히 15장에서 다룬 예외 처리, 엔티티 비교, 프록시 문제 및 성능 최적화에 관한 내용을 정리한 기록입니다.1. 예외 처리1.1 JPA 예외 개요JPA를 사용할 때 주로 발생하는 예외는 두 가지로 구분됩니다.트랜잭션 롤백이 필요한 예외데이터베이스 상태를 되돌려야 할 정도로 심각한 문제.예시: DataIntegrityViolationException, OptimisticLockingFailureException롤백이 필요한 이유는 데이터 무결성 위반이나 잠금 충돌 같은 경우 데이터의 일관성을 보장해야 하기 때문입니다.트랜잭션 롤백이 필요하지 않은 예외시스템에 큰 영향을 주지 않고 처리 가능한..
시작하면서JPA는 객체 지향 프로그래밍의 장점을 살려 데이터베이스를 효율적으로 관리할 수 있도록 도와줍니다. 특히 컬렉션, 컨버터, 리스너, 엔티티 그래프와 같은 부가 기능은 코드의 생산성과 유지보수를 크게 향상시킵니다. 이 글에서는 이러한 기능을 이해하기 쉽게 정리하고, 실제 코드와 함께 활용법을 살펴보겠습니다.1. 컬렉션컬렉션은 엔티티와 연관된 데이터를 저장하는 데 사용됩니다. JPA는 Collection, List, Set, Map 등 다양한 컬렉션 타입을 지원하며, 각 타입은 고유한 특징을 가지고 있습니다.1.1 Collection과 List중복 데이터를 허용합니다.엔티티를 추가해도 지연 로딩된 컬렉션은 초기화되지 않습니다.코드 예제@Entitypublic class Team { @Id @G..
시작하면서JPA를 사용하면서 트랜잭션과 영속성 컨텍스트가 어떻게 상호작용하는지, 그리고 이를 서비스와 프리젠테이션 계층에서 어떻게 관리할지에 대한 이해는 매우 중요합니다. 이번 글에서는 트랜잭션 범위의 영속성 컨텍스트, 준영속 상태에서 발생하는 지연 로딩 문제, 그리고 OSIV(Open Session In View)를 활용해 문제를 해결하는 방법을 알아보겠습니다.1. 트랜잭션 범위의 영속성 컨텍스트1.1 트랜잭션과 영속성 컨텍스트의 관계스프링 프레임워크는 기본적으로 트랜잭션 범위의 영속성 컨텍스트 전략을 사용합니다. 이 전략은 트랜잭션의 생명주기와 영속성 컨텍스트의 생명주기가 동일하다는 의미입니다. 즉, 트랜잭션이 시작되면 영속성 컨텍스트도 생성되고, 트랜잭션이 종료될 때 함께 종료됩니다. 같은 트랜잭션..
시작하면서아래는 "자바 ORM 표준 JPA 프로그래밍" 책과 강의를 듣고 정리한 내용입니다. JPA를 사용하다 보면 성능 문제로 많은 고민을 하게 됩니다. 특히 연관관계가 설정된 엔티티를 조회할 때 발생할 수 있는 대표적인 문제로 N+1 문제가 있습니다. 이 포스팅에서는 N+1 문제의 발생 원인과 해결 방법, 검색 조건 최적화, 그리고 특정 필드만 조회하는 최적화 기법에 대해 알아보겠습니다.1. N+1 문제N+1 문제를 이해하기 위해 우선 연관된 엔티티 설계를 살펴보겠습니다. 아래는 Member와 Team의 엔티티 설계 예시입니다. Member는 Team과 다대일(ManyToOne) 관계를 가지고 있습니다.@Entitypublic class Member { @Id @GeneratedValue(..
시작하면서아래 내용은 "자바 ORM 표준 JPA 프로그래밍" 책을 읽고 정리한 내용입니다. 스프링 데이터 JPA는 Java Persistence API(JPA)를 더 쉽게 사용할 수 있도록 도와주는 모듈로, 데이터베이스와의 상호작용을 효율적으로 처리하는 데 큰 역할을 합니다. 이 모듈은 CRUD(생성, 조회, 수정, 삭제) 작업을 위한 공통 인터페이스를 제공하며, 개발자가 리포지토리를 구현할 때 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 해당 구현체를 동적으로 생성하고 주입해줍니다. 이를 통해 데이터 접근 계층을 간결하게 유지할 수 있고, 생산성을 크게 높일 수 있습니다.공통 인터페이스 기능스프링 데이터 JPA는 CRUD 작업을 위한 공통 메서드를 제공합니다. 대표적인 메서드는 다음과 같습..