본문 바로가기

Spring JPA4

[Hibernate] setAutoCommit 최적화 Hibernate Transaction 작업 수행 시, setAutoCommit 동작 순서 Transaction 시작 -> setAutoCommit(false) -> 쿼리 1 수행 -> 쿼리 2 수행 -> setAutoCommit(true) -> Commit 또는 Rollback Hibernate가 매번 setAutoCommit(false) & setAutoCommit(true) 설정을 해야하므로, 불필요한 실행시간이 발생 (2ms ~ 4ms) 또한 setAutoCommit 은 실제 DB에 직접 쿼리(set autocommit = {true or false}) 를 날리게 됨 -> 비효율적 ※ setAutoCommit(true) 로 다시 설정하는 이유 트랜잭션을 위해 false 로 설정했던 auto com.. 2023. 1. 3.
[Spring Data Common] Repository, @NoRepositoryBean Spring Data Spring Data는 Spring 에서 SQL & NoSQL 저장소 지원 프로젝트의 묶음입니다. Spring 에서 제공하는 여러 저장소 지원 프로젝트의 공통 프로젝트가 바로 Spring Data Common 입니다. Spring Data Common JpaRepository 인터페이스는 Spring Data Jpa 에서 제공하는 인터페이스 JpaRepository 가 상속받는 PagingAndSortingRepository는 Spring Data Common 에서 제공하는 인터페이스 PagingAndSortingRepository부터는 Spring Data Common단의 인터페이스 이다. PagingAndSortingRepository : 페이징, 정렬 지원하는 메서드 제공합니다.. 2021. 8. 23.
[Spring Data JPA] JpaRepository를 상속받기만 하면 빈으로 등록된다? Spring Data Jpa를 사용하면서 우리가 사용하는 Repository 인터페이스는 아래와 같습니다. import org.springframework.data.jpa.repository.JpaRepository; public interface AccountRepository extends JpaRepository { } 이 코드만 봐서는 어떻게 AccountRepository가 빈으로 등록되는지 알 수 없습니다. @Repository 애노테이션을 붙이지 않았지만 실제로 빈으로 등록되어있고 다른곳에서 주입받아서 사용할 수 있습니다. 추측할 수 있는 곳은 JpaRepository내부 구현입니다. 하지만 JpaRepository 내부를 타고 들어가도 빈으로 등록해주는 코드는 존재하지 않습니다. @Enab.. 2021. 8. 23.
[JPA] JPA 기초 왜 JPA를 학습해야 할까요? JDBC API를 사용해서 코딩하다 보면 SQL과 JDBC API를 작성하는데 많은 시간을 투자합니다. 특히 CRUD용 SQL은 뻔한 반복작업이 되고 많은 반복적인 코드인 탓에 재미도 없습니다. 또한 객체와 관계형 데이터베이스의 패러다임 불일치 문제도 존재합니다. 객체와 관계형 데이터베이스(RDB)의 패러다임 불일치 문제 상속 객체는 상속이라는 기능을 가지고 있지만 테이블은 상속이라는 기능이 없습니다. 연관관계 객체는 참조를 사용해서 다른 객체와 연관관계를 가지고 참조에 접근해서 연관된 객체를 조회합니다. 관계형 데이터베이스의 테이블은 외래 키를 사용해서 다른 테이블과 연관관계를 가지고 조인을 사용해서 연관된 테이블을 조회할 수 있습니다. 여기서 한쪽의 테이블에서 외래 키를.. 2021. 8. 23.