코딩 도구/백엔드 개발 (Backend Development)(36)
-
[Spring DB] 스프링 데이터 JPA
스프링 데이터 JPA 정리이 글은 인프런 김영한님의 "스프링 DB 2편 - 데이터 접근 활용 기술" 강의를 수강하고 정리한 내용이다. 이번 글에서는 스프링 데이터 JPA의 개념부터 시작해, 설정, 기본 기능, 쿼리 메서드, 동적 쿼리 처리 방식까지 실무 흐름에 따라 간단하게만 정리한다. JPA 위에 추상화되어 있는 스프링 데이터 JPA는 단순한 CRUD를 넘어서 다양한 편의 기능을 제공하며, 개발 생산성을 극대화한다.0. 데이터 접근 기술 간단 요약기술 : 설명QueryDSLJPQL을 자바 코드로 타입 안전하게 작성할 수 있도록 도와주는 동적 쿼리 도구이다. 복잡한 조건 조합이 많은 실무에서 많이 사용된다.Spring Data JPAJPA를 추상화하여 기본 CRUD, 쿼리 메서드, 페이징 등을 자동으로 ..
2025.07.28 -
[Spring DB] JPA 도입 전 반드시 이해해야 할 핵심 개념
JPA 도입 전 반드시 이해해야 할 핵심 개념 정리JPA는 단순히 SQL을 생략해주는 기술이 아니라, 객체 중심의 설계를 가능하게 해주는 강력한 도구이다. 그러나 제대로 이해하지 않고 도입하면 성능 문제나 데이터 정합성 오류를 겪을 수 있다. 따라서 JPA를 실무에 도입하기 전 반드시 이해해야 할 개념들을 정리해야할 것 같아서해본다.1. 본인이 작성한 JPQL이 어떤 SQL로 변환되는지 이해해야 한다JPQL(Java Persistence Query Language)은 JPA에서 사용하는 객체 지향 쿼리 언어이다. SQL과 문법이 유사하지만, 테이블이 아닌 엔티티 객체 기준으로 작성한다.String jpql = "SELECT m FROM Member m WHERE m.age >= :age";이 JPQL은 ..
2025.07.21 -
[Spring DB] JPA
JPA 정리이 글은 인프런 김영한님의 "스프링 DB 2편 - 데이터 접근 활용 기술" 강의를 수강하고 정리한 내용이다. 이번 글에서는 JPA의 기본 개념부터 설정, 리포지토리 구현, 예외 처리까지 실제 스프링 프로젝트에 JPA를 도입하는 전체 흐름을 정리한다. JPA는 자바 ORM(Object Relational Mapping)의 표준으로, SQL 중심의 개발 방식에서 벗어나 객체 지향적인 방식으로 데이터를 다룰 수 있도록 도와준다.1. JPA 도입 배경SQL 중심적인 개발은 아래와 같은 문제를 가진다:무한 반복되는 CRUD SQL 작성객체를 테이블에 맞추어 모델링객체 그래프 탐색의 한계계층형 아키텍처 분리 어려움이러한 문제를 해결하기 위해 JPA는 자바 객체 그대로 설계하고, RDB는 관계형 구조 그대..
2025.07.14 -
[Spring DB] MyBatis
MyBatis 정리이 글은 인프런 김영한님의 "스프링 DB 2편 - 데이터 접근 활용 기술" 강의를 수강하고 정리한 내용이다. 이번 글에서는 MyBatis의 기본 개념부터 설정, 동적 쿼리 작성, 기타 고급 기능까지 실무에서 활용할 수 있는 전체 흐름을 가볍게 정리한다. MyBatis는 SQL Mapper로서 XML 기반 쿼리 작성과 강력한 동적 쿼리 기능을 통해 복잡한 데이터 접근 요구사항을 효과적으로 해결할 수 있는 도구이다.1. MyBatis 소개MyBatis는 JDBC 또는 JdbcTemplate보다 더 강력한 기능을 제공하는 SQL Mapper 프레임워크이다.SQL을 XML로 분리하여 유지보수가 용이하다.동적 쿼리 작성이 편리하다.자바 객체와 SQL 쿼리 간의 매핑을 자동화한다.예시: SQL 여..
2025.07.07 -
[Spring DB] 데이터 접근 기술 테스트
데이터 접근 기술 테스트 정리이 글은 인프런 김영한님의 "스프링 DB 2편 - 데이터 접근 활용 기술" 강의를 수강하고 정리한 내용이다. 이번 글에서는 데이터 접근 기술을 테스트할 때 반드시 알아야 할 개념들과 실무에서 자주 활용되는 테스트 전략들을 정리한다. 데이터베이스 분리, 트랜잭션 롤백, 임베디드 DB 활용 등 1. 데이터베이스 연동 테스트데이터 접근 기술이 정상적으로 동작하는지 확인하기 위해서는 실제 DB에 연동한 테스트가 필요하다. 이를 위해 ItemRepositoryTest를 실행하고, 다음과 같은 설정이 되어 있어야 한다:src/main/resources/application.propertiesspring.profiles.active=localspring.datasource.url=jdbc..
2025.06.30 -
[Spring DB] 스프링 JdbcTemplate
스프링 JdbcTemplate 정리이 글은 인프런 김영한님의 "스프링 DB 2편 - 데이터 접근 활용 기술" 강의를 수강하고 정리한 내용이다.1. JdbcTemplate이란?JdbcTemplate은 순수 JDBC를 사용할 때 반복되는 코드를 줄여주는 템플릿 콜백 방식의 유틸리티다. spring-jdbc 라이브러리에 포함되어 있으며, 데이터베이스 접근 시 다음과 같은 반복 작업을 대신 처리해준다.커넥션 획득 및 종료PreparedStatement 준비 및 실행ResultSet 반복 처리예외 변환 (SQLException → DataAccessException)// build.gradle 의존성 추가implementation 'org.springframework.boot:spring-boot-starter-..
2025.06.23 -
[Spring DB] 데이터 접근 기술 정리
데이터 접근 기술 시작 이 글은 인프런 김영한님의 "스프링 DB 2편 - 데이터 접근 활용 기술" 강의를 수강하고 정리한 내용이다. 이번 글에서는 실무에서 사용하는 다양한 데이터 접근 기술들을 소개하고, 이를 프로젝트에 적용하는 전체 흐름과 배경 지식을 정리한다. 1. 학습할 데이터 접근 기술의 분류이번 강의에서 다루는 기술들은 크게 두 가지 분류로 나뉜다.SQL Mapper 기반 기술JdbcTemplateMyBatisORM 기반 기술JPA (Hibernate)Spring Data JPAQuerydsl정리하면 다음과 같다:SQL MapperJdbcTemplate, MyBatisSQL을 개발자가 직접 작성하고 매핑ORMJPA, Hibernate, Spring Data JPA, Querydsl객체 중심으로 ..
2025.06.16 -
[Spring DB] 예외 처리와 반복 문제 해결 정리
예외 처리와 반복 문제 해결 정리이 글은 인프런 김영한님의 "스프링 DB 1편 - 데이터 접근 핵심 원리" 강의를 수강하고 정리한 내용이다. 이번 글에서는 스프링 환경에서 예외 처리 문제를 어떻게 해결할 수 있는지, 그리고 JDBC의 반복 문제를 JdbcTemplate으로 어떻게 해결할 수 있는지를 정리한다. 실무에서 매우 중요한 주제인 서비스 계층의 순수성 유지, 예외 전환, 스프링의 예외 추상화, 템플릿 콜백 패턴까지 폭넓게 , 깊지는 않게 다룬다.1. 체크 예외와 인터페이스 문제서비스 계층은 특정 구현 기술에 의존하지 않고 순수하게 유지하는 것이 좋다. 그런데 JDBC는 SQLException이라는 체크 예외를 발생시킨다. 이 예외는 인터페이스에도 선언해야 하므로, 다음과 같이 특정 기술에 종속된 ..
2025.06.09 -
[Spring DB] 자바 예외 이해 정리
자바 예외 이해 정리이 글은 인프런 김영한님의 "스프링 DB 1편 - 데이터 접근 핵심 원리" 강의를 수강하고 정리한 내용이다. 이번 글에서는 자바 예외의 기본 개념부터 시작해, 체크 예외와 언체크 예외의 차이, 각각의 장단점, 그리고 실무에서 자주 사용되는 예외 처리 전략까지 상세하게 정리한다. 1. 자바 예외 계층 구조 이해예외는 자바 언어의 핵심 문법 중 하나로, 모든 예외는 Throwable을 기준으로 계층 구조를 가진다.Object: 모든 클래스의 최상위 부모Throwable: 예외와 오류의 최상위 부모Error: 메모리 부족, 시스템 장애 등 복구 불가능한 예외Exception: 개발자가 처리 가능한 예외RuntimeException: 언체크 예외 (컴파일러가 강제하지 않음)그 외: 체크 예외..
2025.06.02 -
[Spring DB] 스프링과 트랜잭션 문제 해결 정리
스프링과 트랜잭션 문제 해결 정리이 글은 인프런 김영한님의 "스프링 DB 1편 - 데이터 접근 핵심 원리" 강의를 수강하고 정리한 내용이다. 이번 글에서는 JDBC 트랜잭션을 시작으로, 트랜잭션 추상화, 트랜잭션 매니저, 트랜잭션 템플릿, 그리고 AOP 기반 선언적 트랜잭션 관리 방식까지 스프링이 제공하는 다양한 트랜잭션 처리 기법들을 실무 흐름에 맞춰 정리한다.1. 트랜잭션을 서비스 계층에서 직접 관리할 때의 문제점MemberServiceV2에서는 서비스 계층에서 다음과 같이 JDBC 트랜잭션을 직접 제어한다:Connection con = dataSource.getConnection();con.setAutoCommit(false);try { // 비즈니스 로직 con.commit();} ca..
2025.05.26