본문 바로가기
반응형

JPA21

SQL Count & Assertion With 디버깅 저번 포스팅과 이어지는 부분이 있습니다. https://devdebin.tistory.com/366 JPA 거짓 연관 관계 맺기(프록시)동일한 테이블의 2개의 엔티티회사 프로젝트에 아래 예시 코드와 유사한 코드가 존재한다.@Table(name = "prod")@Entityclass Prod( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long = 0, @Column(name = "name")devdebin.tistory.com SQL Count & Assertion저번 포스팅에서는 getReferenceById를 사용해 실제 데이터를 조회하지 않고 프록시로 연관관계를 세팅했다.이 과정에서 데이터 조회하지 않는 내용을 눈으로 확인해봤는.. 2025. 11. 25.
JPA 거짓 연관 관계 맺기(프록시) 동일한 테이블의 2개의 엔티티회사 프로젝트에 아래 예시 코드와 유사한 코드가 존재한다.@Table(name = "prod")@Entityclass Prod( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long = 0, @Column(name = "name") val name: String, @JoinColumn(name = "vendor_id") @ManyToOne(fetch = FetchType.LAZY) val vendor: Vendor, /** * 더 연관 관계가 있다고 가정 */)@Table(name = "prod")@Entityclass ProdForExterna.. 2025. 11. 22.
낙관적 락, 비관적 락, 네임드 락 JPA는 데이터베이스 트랜잭션 격리 수준을 READ COMMITTED 정도로 가정한다. 만약 일부 로직에 더 높은 격리 수준이 필요하면 낙관적 락과 비관적 락 중 하나를 사용하면 된다. 추가적으로 네임드 락에 대해서도 다시 정리해보겠다. 낙관적 락 (OptimisticLock) 낙관적 락은 이름 그대로 트랜잭션 대부분은 충돌이 발생하지 않는다고 낙관적으로 가정하는 말이다. DB가 제공하는 락 기능을 사용하는 것이 아니라 JPA가 제공하는 버전 관리 기능을 사용한다. 즉 애플리케이션이 제공하는 락이다. 낙관적 락은 트랜잭션을 커밋하기 전까지는 트랜잭션의 충돌을 알 수 없다는 특징이 있다. 충돌이 빈번하지 않을 때 사용하는 것이 좋다. 충돌이 빈번하다면 비관적 락을 사용하는 것이 성능상 이점이 있다. 실패했.. 2023. 6. 16.
Spring Bean으로 등록된 EntityManager 자바 동적 프록시 기술을 알고 읽으시는 게 좋습니다!!! JPA를 처음에 배우면 엔티티 매니저는 여러 스레드가 동시에 접근하므로 스레드 간 공유하면 절대 안된다고 학습한다. 그러나 스프링 부트 애플리케이션을 돌려보면 처음에 엔티티 매니저가 스프링 빈으로 등록되는 것을 확인할 수 있다. '스프링 부트 자동 구성을 통해 엔티티 매니저가 스프링 빈으로 등록, 즉 싱글톤으로 사용이 되는 거 같아' 위와 같은 의문점이 들었고, 이에 관련해서 구글에 찾아보기 시작했다. 결론을 말하면 스프링 빈으로 등록되는 것은 엔티티 매니저 가짜 객체고 실제 애플리케이션에서 로직이 수행될 때 진짜 엔티티 매니저가 사용된다는 것이다. 이러면 쓰레드 세이프하다고 말할 수 있다. 단순히 그렇구나 하고 넘어간 것을 오늘은 눈으로 확인해보.. 2023. 5. 12.
Spring Data JPA 정리 강의를 수강한지 1년이 되가는 Spring Data JPA에 대해 정리해보도록 하겠습니다. Spring Data JPA 스프링 데이터 JPA는 스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트다. CRUD 처리를 위한 공통 인터페이스를 제공하며, 리포지토리를 개발할 때 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 인터페이스를 구현한 객체를 동적으로 생성해서 주입한다. 이 밖에도 많은 JPA의 기능을 편리하게 사용할 수 있도록 지원한다. 본격적으로 살펴보자. 공통 인터페이스 스프링 데이터 JPA에서 제공하는 공통 인터페이스 JpaRepository에 대해 살펴보자. //JpaRepository 공통 기능 인터페이스 public interface JpaRepository.. 2023. 2. 8.
스프링 부트와 JPA 활용 정리 스프링 부트와 JPA 강의 1편, 2편을 본지 거의 1년이 되어가는 상황이다. 남은 방학을 불태우자는 생각으로 복습을 진행했는데, 이번 기회에 한 번 글로 잘 정리해두려고 한다. 스프링 부트와 JPA 1편과 2편에서 느낀점과 중요한 부분을 남겨보겠다. 스프링 부트와 JPA 활용1 https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8-JPA-%ED%99%9C%EC%9A%A9-1/dashboard 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런 | 강의 실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게.. 2023. 2. 7.
반응형