본문 바로가기

Back-End173

트랜잭션 트랜잭션이란 여러 개의 작업들을 하나의 그룹으로 묶어서 처리하는 단위이다. ACID 원칙 원자성(Atomicity): 하나의 그룹 단위는 모두 성공하거나, 모두 실패해야 한다. 일관성(Consistency): 트랜잭션이 성공적으로 종료되면, 비즈니스 로직의 의도대로 일관성 있게 처리돼야 한다. 격리성(Isolation): 여러 개의 트랜잭션이 실행될 때, 서로 영향을 주지 않고 독립적으로 실행되어야 한다. 지속성(Durability): 트랜잭션이 완료되면 DB가 종료되어도 데이터는 물리 저장소에 저장되어 결과가 지속되어야 한다. 커밋과 롤백 커밋: 모든 작업을 최종적으로 DB에 반영한다. 이 명령을 수행하면 하나의 트랜잭션 과정이 종료된다. 롤백: 작업 중 문제가 생겼을 때, 트랜잭션 내 수행된 작업을 .. 2022. 9. 5.
[JPA] 엔티티 매핑 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 수강하며 정리한 글입니다. 객체 - 테이블 매핑: @Entity, @Table 필드 - 컬럼 매핑: @Column 기본 키 매핑: @Id 연관 관계 매핑: @ManyToOne, @JoinColumn 객체와 테이블 매핑 🌝 @Entity @Entity @Table(name = "MBR") public class Member { @Id private Long id; private String name; ... } 기본 생성자가 필수이다. (public 또는 protected) final 클래스, enum, interface, inner 클래스는 사용할 수 없다. DB에 저장할 필드에 final을 사용할 수 없다. 데이터베이스 스키마 .. 2022. 9. 4.
[JPA] 영속성 관리 및 내부 동작 방식 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 수강하며 정리한 글입니다. JPA의 핵심 포인트 🌟 객체 - 관계형 DB 매핑 (ORM) 🌟 영속성 컨텍스트 JPA의 동작 엔티티 매니저 팩토리: 하나만 생성해서 애플리케이션 전체 범위에서 공유한다. 엔티티 매니저: 애플리케이션이 관계형 데이터베이스에서 엔터티를 관리하고 검색할 수 있도록 하는 데 사용된다. 고객의 요청마다 생성된다. 쓰레드 간 공유하지 않으므로 사용하고 버려야 한다. public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello");.. 2022. 9. 4.
JPA의 정의와 JPA를 사용해야 하는 이유 이 글은 김영한 님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의를 수강하며 정리한 글입니다. 🐰 SQL 중심적인 개발의 문제점 애플리케이션을 개발할 때 흔히 객체 지향 언어를 사용하나, 데이터베이스에서는 관계형 DB가 많이 사용된다. 객체를 관계형 DB를 통해 관리하면 SQL에 의존적인 상황이 발생한다. 만약에 기획이 달라져서 객체에 필드가 하나 추가된다면 모든 쿼리문을 수정해야 할 것이다. 객체지향과 관계형 DB는 패러다임이 불일치 하다. 객체의 상속 관계를 DB에 표현하려면 부모 테이블과 자식 테이블 사이의 조인 과정이 필요하다. 연관 관계를 객체에서는 참조로 표현하지만, 테이블에서는 외래키를 사용하여 조인을 해야 한다. 객체는 자유롭게 객체 그래프를 탐색할 수 있어야 한다. 그러나 데이터베.. 2022. 9. 4.
Optional이란? Class Optional null일 수도 있는 값을 감싸는 Wrapper 클래스이다. 코드를 작성하다보면 빈번하게 볼 수 있는 NPE(NullPointerException)을 방지할 수 있다. Optional optional = Optional.ofNullable(getName()); String name = optional.orElse("Hello!"); // 값이 없다면 'Hello!' 리턴 //값이 존재하면 로직을 함수형 인자로 넘긴다 Optional.ofNullable(member.getName()) .ifPresent(name -> findMember.setName(name)); boolean value = optional.isPresent(); //값이 존재하는가? //값이 존재하면 retu.. 2022. 9. 1.
Spring Data JPA 보호되어 있는 글 입니다. 2022. 9. 1.