분류 전체보기 610

[몽고DB 완벽 가이드] 3. 도큐먼트 생성, 갱신, 삭제

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다.1. 도큐먼트 삽입 insertOne()insertMany()기능단일 도큐먼트 삽입다수 도큐먼트 일괄 삽입특징insertedId 반환→ 성공 여부 및 생성된 _id 확인 가능크기 제한- 48MB (maxMessageSizeBytes)제한 크기 초과 시 자동 분할 삽입옵션- bypassDocumentValidation: 유효성 검사 비활성화- writeConcern: 쓰기 신뢰성- bypassDocumentValidation, writeConcern- ordered: 삽입 중 에러 시 중단 여부 예시) 옵션더보기더보기bypassDocumentValidation// age는 유효성 검사 설정이 된 필..

Database/MongoDB 2025.04.28

[몽고DB 완벽 가이드] 2. 몽고DB 기본

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다. 1. 도큐먼트MongoDB 데이터의 기본 단위키-값 집합ex) JSON, 맵, 해시, 딕셔너리, 객체항목내용키문자열- 정렬된 상태로 저장됨- 대소문자 구분- 중복 불가- null 사용 불가- . (점)과 $는 예약어값다양한 데이터형 지원- 대소문자 구분 2. 컬렉션도큐먼트 모음보통 유사한 구조의 도큐먼트를 그룹화함쿼리 속도 향상효율적인 인덱싱데이터 지역성 향상 특징항목내용동적 스키마하나의 컬렉션 안에 서로 다른 구조의 도큐먼트 존재 가능네이밍 규칙- 빈 문자열 불가- null 문자 불가- 'system' 시작 불가- $ 사용 불가서브 컬렉션- 네임스페이스에 .(점)을 사용하여 서브컬렉션 생성 가..

Database/MongoDB 2025.04.27

[몽고DB 완벽 가이드] 1. 몽고DB 소개

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다. MongoDB의 만들어진 배경과 지향점, 선택해야 하는 이유를 설명합니다. 1. 손쉬운 사용Document-Based Database항목설명예시 (MongoDB)분산 확장의 용이성분산 시스템에서 데이터를 쉽게 분산/관리할 수 있음샤딩 지원유연한 모델미리 정의된 스키마 없이 데이터 저장 ✅➡️ 빠른 개발 가능동적으로 도큐먼트 필드 추가/삭제 가능ex) JSON복잡한 계층 관계 표현내장 도큐먼트 및 배열을 하나의 레코드로 표현 ✅➡️ OOP 개발에 적합embedded documents, arrays 지원 2. 확장 가능한 설계설계 배경애플리케이션의 발전으로 다루는 데이터 규모가 커짐 (대용량 데이..

Database/MongoDB 2025.04.27

[자바 ORM 표준 JPA 프로그래밍] 16. 트랜잭션과 락, 2차 캐시

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다.1. 트랜잭션과 락NON-REPEATABLE READ사용자 A, B가 동시에 같은 데이터를 수정 → 나중에 저장한 B의 값만 반영되어 A의 수정사항이 유실됨.트랜잭션만으로는 해결 불가능 (트랜잭션 범위를 넘어선 문제)해결 방법설명구현 방식마지막 커밋만 인정마지막에 커밋한 트랜잭션의 값이 저장됨(이전 변경 내용이 덮어씌워짐)버전 관리 없이 단순히 UPDATE 수행최초 커밋만 인정먼저 커밋한 트랜잭션만 인정이후 커밋은 버전 불일치로 예외 발생JPA 낙관적 락 적용 (@Version)충돌 내용 병합동시에 수정된 데이터를 병합하여 둘 다 반영OptimisticLockException 발생 시 직접 예외 처리 낙관적 락과 비관적 락구분..

[자바 ORM 표준 JPA 프로그래밍] 15. 고급 주제와 성능 최적화

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다.1. 예외 처리JPA 예외 변환서비스 계층이 JPA 구현 기술에 의존하지 않게 하기 위해 예외를 추상화항목설명기능 제공 클래스PersistenceExceptionTranslationPostProcessor적용 방식@Repository가 붙은 클래스를 대상으로 AOP 적용JPA 예외를 스프링 예외로 변환 (DataAccessException 등) JPA 표준 예외PersistenceException (RuntimeException 하위 클래스)구분설명롤백 필수(심각한 예외)예외 복구 시, 커밋 ❌- EntityExistsException: 엔티티 영속화 시도 중, 이미 같은 엔티티가 있음- EntityNotFoundExcepti..

[자바 ORM 표준 JPA 프로그래밍] 13. 웹 애플리케이션과 영속성 관리

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다.1. 트랜잭션 범위의 영속성 컨텍스트기본 전략구분내용생명 주기트랜잭션과 영속성 컨텍스트는 같은 생존 범위를 가짐- 트랜잭션이 시작될 때 영속성 컨텍스트 생성 (초기화 상태)- 트랜잭션이 종료될 때 영속성 컨텍스트 종료공유- 같은 트랜잭션 간 같은 영속성 컨텍스트를 공유함- 다른 트랜잭션 간 다른 영속성 컨텍스트를 가짐 예시) 공유더보기같은 트랜잭션@Test@Transactionalvoid same_transaction() { User user1 = entityManager.find(User.class, 1); user1.setName("test"); searchName();}private void search..

[자바 ORM 표준 JPA 프로그래밍] 12. 스프링 데이터 JPA

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 0. Spring Data 프로젝트모든 종류의 데이터 저장소에 대해 추상화 계층을 제공하는 Spring 프로젝트 모음 (RDB, NoSQL, 검색엔진 등)일관된 방식의 데이터 접근을 제공하여 코드 구조를 일관되게 유지할 수 있도록 도와줌인터페이스만 작성해도 DAO 구현체를 자동 생성 및 등록함 공통 구조Repository 인터페이스 정의Spring Data가 자동으로 구현체(프록시) 생성복잡한 쿼리는 @Query 또는 명시적 정의로 구현 1. Spring Data JPA 프로젝트JPA를 기반으로 RDBMS에 접근하는 기능을 제공하는 Spring Data의 하위 프로젝트Hibernate와 같은 JPA 구현체 위에 얹어서 사용함..

[자바 ORM 표준 JPA 프로그래밍] 10-5. 객체지향 쿼리 언어: 객체지향 쿼리 심화

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. 벌크 연산수백개의 엔티티 수정을 하기 위해 각각 상태를 변경할 경우 너무 오래걸림이를 위해 여러 건을 한번에 처리하는 벌크 연산을 지원함 예제)더보기@Test@Transactionalvoid bulk_operation() { String selectJpql = "select u from User as u"; List result = entityManager.createQuery(selectJpql, User.class).getResultList(); long start1 = System.currentTimeMillis(); for (User user : result) user.setName("upd..

[자바 ORM 표준 JPA 프로그래밍] 10-4. 객체지향 쿼리 언어: Native SQL

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. Native SQLJPA는 JPQL이 아닌 DB 고유의 SQL 문법을 직접 사용하는 방법을 지원합니다.결과 매핑 어노테이션을 사용하여 응답을 정의할 수 있습니다. 사용 상황상황이유복잡한 조인 / 서브쿼리JPQL로 표현하기 어려운 경우DB 특화 기능 사용예: 윈도우 함수, 특정 DB 함수 등성능 최적화JPQL보다 효율적인 쿼리 필요 시기존 SQL 자산 재사용DB에 이미 작성된 쿼리를 그대로 쓰고 싶을 때 예제) Native SQL더보기@Test@Transactionalvoid native_query_entity() { String sql = "SELECT ID, NAME, NICKNAME, AGE, TEAM_ID ..

[자바 ORM 표준 JPA 프로그래밍] 10-2. 객체지향 쿼리 언어: Criteria

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. CriteriaJPQL을 편하게 작성하도록 도와주는 빌더 클래스 모음컴파일 시점에 오류를 발견할 수 있음동적 쿼리를 작성하기 편함 2. 기초항목설명CriteriaBuilderCriteria 쿼리 생성을 위한 시작점CriteriaQuery쿼리 전체 구조를 담는 객체Root조회의 시작점 (FROM 절)PredicateWHERE 조건 표현OrderORDER BY 정렬 표현 예제더보기CriteriaBuilder cb = entityManager.getCriteriaBuilder();CriteriaQuery query = cb.createQuery(User.class);Root u = query.from(User.class);q..