728x90

백엔드/Spring 53

[Spring] JPA 개요

JPA (Java Persistence API) Java 애플리케이션에서 객체-관계 매핑(ORM) 기술을 사용하여 데이터베이스와 상호 작용하는 표준 APIJava EE (Enterprise Edition) 스펙의 일부로, 객체지향 프로그래밍과 관계형 데이터베이스 사이의 간극을 줄여줌JPA는 인터페이스의 모음이며, 실제 구현은 여러 ORM 프레임워크에서 제공주요 구현체Hibernate: 가장 널리 사용되는 JPA 구현체로, 풍부한 기능과 높은 성능을 제공EclipseLink: Eclipse Foundation에서 제공하는 구현체로, Java EE의 참조 구현OpenJPA: Apache Software Foundation에서 제공하는 오픈 소스 구현체SQL 중심 개발의 문제점상속 표현의 차이객체: 인터페이스..

백엔드/Spring 2024.09.07

[Spring] 변경 감지 & 병합

변경 감지(Dirty Checking)JPA (Java Persistence API)는 Java에서 객체와 관계형 데이터베이스 간의 매핑을 제공하는 APIJPA가 엔티티 객체의 상태를 자동으로 추적하고, 객체의 상태가 변경되었는지 여부를 감지하는 기능EntityManager의 flush() 메서드를 호출할 때 작동동작 방식상태 추적JPA는 엔티티의 최조 상태를 스냅샷으로 저장스냅샷은 1차 캐시에 저장되고 엔티티의 원본 상태를 나타냄변경 감지EntityManager의 flush() 메서드가 호출되면 JPA는 현태 엔티티 상태와 스냅샷을 비교엔티티 객체의 필드가 변경된 것이 감지되면 JPA는 SQL UPDATE 쿼리로 변환자동 동기화flush() 메서드가 호출되면, JPA는 감지된 모든 변경 사항을 데이터베..

백엔드/Spring 2024.09.06

[Spring] 스프링 트랜잭션 전파 Propagation

스프링 트랜잭션 전파 Propagation트랜잭션 전파는 한 트랜잭션이 다른 트랜잭션에 어떻게 영향을 미치는지를 정의트랜잭션을 각각 사용하는 것이 아닌 트랜잭션이 이미 진행 중일 때 추가로 트랜잭션을 수행하는 경우사용법@Transactional 어노테이션 속성 값으로 정의 하여 사용ex) @Transactional(propagation = Propagation.REQUIRED)기본 옵션 Required 스프링 트랜잭션의 기본 설정 옵션으로 생성된 트랜잭션이 없다면 생성하고 이미 존재한다면 참여처음 시작된 트랜잭션 1(외부)이 진행 중이고 트랜잭션 2(내부)가 시작되는 경우 스프링은 트랜잭션 1,2를 묶어 하나의 트랜잭션으로 만듦하나로 묶인 트랜잭션은 물리 트랜잭션이 되고 내부의 트랜잭션 1,2는 논리 트..

백엔드/Spring 2024.09.05

[Spring] 스프링 트랜잭션

스프링 트랜잭션 Spring Transaction스프링 프레임워크에서 데이터베이스의 트랜잭션 관리를 지원하는 핵심 기능스프링은 PlatformTransactionManager 인터페이스를 통해 트랜잭션을 추상화PlatformTranscationManager스프링 트랜잭션 추상화의 핵심 인터페이스주요 구현체DataSourceTransactionManager(JDBC)JpaTransactionManager(JPA)HibernateTransactionManger(Hibernate)사용법선언적 트랜잭션 관리스프링은 주로 XML 설정 또는 어노테이션을 통해 트랜잭션을 선언적으로 관리@Transactional 어노테이션을 선언하여 사용이름 그대로 해당 로직에 트랜잭션을 적용하겠다고 어딘가에 선언하기만 하면 트랜잭션..

백엔드/Spring 2024.09.04

[Spring] MyBatis

MyBatisJava 애플리케이션과 관계형 데이터베이스 간의 매핑을 지원하는 데이터베이스 매핑 프레임워크JdbcTemplate이 제공하는 대부분의 기능들을 제공하고 동적 쿼리를 편리하게 작성 가능주요 특징SQL 쿼리를 직접 작성하여 XML 파일이나 어노테이션을 통해 정의하고 Java 메서드와 매핑쿼리와 Java 객체 간 매핑을 주로 XML 파일을 통해 정의하고 SQL 쿼리, 매핑 규칙, 파라미터 처리 등을 설정 가능복잡한 쿼리나 데이터베이스 작업을 유연하게 처리, 프로시저 호출 지원1차 캐시와 2차 캐시를 지원하여 성능 개선 가능JDBC를 사용하여 다양한 데이터베이스와 호환사용 방법스프링 프레임워크의 내장 기술이 아니라 별도의 설정 필요mybatis-config.xml을 정의하여 MyBatis의 전체 설..

백엔드/Spring 2024.09.01

[Spring] JDBC Template

JDBC TemplateSpring Framework에서 제공하는 유틸리티 클래스로 JDBC를 사용할 때 반복되는 코드를 줄이고 작업을 편리하게 함Spring의 데이터 접근 계층에서 일반적인 작업을 단순화하는 데 유용주요 특징SQLException을 Spring의 데이터 접근 예외로 변환하여 처리자동으로 자원관리를 하여 자원 누수 방지SQL 인젝션 공격 방지를 위한 자동 파라미터 이스케이핑트랜잭션 관리 지원사용 방법application.properties에 url, username, password 설정을 통해 데이터소스 등록개발자는 SQL을 작성하고, 전달한 파라미터를 정의하고 응답 값을 매핑하여 사용주요 메서드queryForObject: 쿼리 결과에서 단일 객체를 반환query: 쿼리 결과를 리스트 ..

백엔드/Spring 2024.08.31

[Spring] 예외 처리

자바 예외 Exception자바의 예외도 객체로 Object의 하위 클래스Throwable: 예외의 최상위 클래스, 하위에 Exception과 Error가 있음Error: 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외, catch를 통해 사용자가 예외를 처리해선 안됨, 주로 JVM에 의해 발생하는 심각한 문제Exception: 애플리케이션 로직에서 사용가능한 실질적 최상위 예외, 하위에 체크 예외와, 언체크(런타임) 예외가 있음체크 예외컴파일러가 체크해 주는 예외예외에 대한 처리를 해주지 않으면 컴파일러 오류가 발생하여 사용자가 직접 처리를 해야 함try catch를 통해 예외에 대한 처리를 실행예외에 대한 처리를 하지 않을 경우 필수적으로 상위 클래스에 예외를 전..

백엔드/Spring 2024.08.30

[Spring] 트랜잭션 Transaction

Transaction 트랜잭션일련의 작업들을 하나의 단위로 묶어 처리하는 방법모두 성공하거나 모두 실패해야 하는 작업 단위 데이터베이스 일관성과 무결성을 유지하기 위해 사용비즈니스 로직의 신뢰성 보장트랜잭션을 사용하지 않을 경우동시에 여러 개가 상호작용으로 변경되어야 하는 경우 오류발생 시 문제 발생계좌이체와 같은 한쪽 값을 감소시킨 만큼 다른 상대의 값을 증가시켜야 하는 경우한쪽의 값만 감소시키고 장애가 발생할 경우 감소시킨 값은 그대로 감소되어 있고 상대의 값은 증가되지 않음한쪽만 완료된 부분 완료 상태가 발생정상처리를 위해선 한쪽에서 장애가 발생 시 모든 작업이 실패하여 취소되거나 모든 작업이 정상 처리 되어야 함트랜잭션 ACID원자성(Atomicity): 모든 작업은 하나의 단위로 처리 -> 모두..

백엔드/Spring 2024.08.28

[Spring] 커넥션 풀

데이터베이스 커넥션일반적으로 데이터베이스 사용 시 커넥션을 매번 획득데이터베이스 커넥션 획득 과정애플리케이션 로직은 DB 드라이버를 통해 커넥션을 조회DB 드라이버는 DB와 TCP/IP 커넥션을 연결 -> 3 way handshake 같은 TCP/IP 연결을 위한 네트워크 동작 발생커넥션이 연결되면 ID, PW와 기타 부가정보를 DB에 전달DB는 ID, PW를 통해 내부 인증을 완료하고, 내부에 DB 세션을 생성DB는 커넥션 생성이 완료되었다는 응답을 보냄DB 드라이버는 커넥션 객체를 생성해서 클라이언트에 반환커넥션을 만드는 과정은 복잡하고 시간을 많이 소모애플리케이션에서도 TCP/IP 연결을 위한 리소스 소모많은 시간 소모 -> 좋지 않은 사용자 경험커넥션 풀복잡하고 시간을 많이 소모하는 커넥션을 미리..

백엔드/Spring 2024.08.27

[Spring] JDBC

JDBC [ Java Database Connectivity ]JAVA 애플리케이션과 데이터베이스 간의 연결을 관리하는 JAVA APIJAVA 프로그램에서 데이터베이스로 SQL 쿼리를 보내고 결과를 받을 수 있음JDBC는 자바와 데이터베이스의 중개 역할동작과정커넥션 연결 : 주로 TCP/IP를 통한 커넥션 연결SQL 전달 : 애플리케이션 서버는 DB가 이해할 수 있는 SQL을 연결된 커넥션을 통해 DB에 전달결과 응답 : DB는 전달된 SQL을 수행하고 그 결과를 응답JDBC 표준 인터페이스수십 개의 관계형 데이터베이스의 연결 방법, SQL 전달 방법, 결과 응답 방법이 다름발생하는 문제데이터베이스 변경 시 데이터베이스 관련 사용 코드를 모두 변경해야 함각각 데이터베이스 연결 방법 및 사용법 학습 필요연..

백엔드/Spring 2024.08.26
728x90