JPA. 3

[우아한테크캠프 Pro] JPA Hands-on Part 1 정리

해당 글은 우아한 테크캠프 PRO에서 진행된 JPA Hands-on Part 1 강의의 내용을 정리한 내용이다. JPA 도입 배경 JdbcTemlapte, MyBatis는 객체 그래프를 완성하는게 쉽지 않다. Spring Data JDBC는 도메인주도설계 영향을 굉장히 많이 받은 프레임워크다. - 지연로딩, 더티체크 등 영속성과 관련된 기능이 없음 - 무조건 엔티티 save를 호출해야함 JPA - 객체지향 패러다임과 RDB 패러다임을 중간에서 Java Persistence API - 현재는 Jakarta Persistence API - Spring은 JPA의 구현체를 Hibernate 6로 사용 JPA 특징 1. JPA 데이터베이스 스키마 생성 전략 - create, validate, none 등 2. ..

JPA. 2022.11.03

JPA 동시성 문제 해결하기 (feat. JMeter)

(해당 글은 온전히 학습을 위한 부분이라는 점 참고 부탁드립니다. Pessimistic Lock을 사용하면 성능 상 좋지 않습니다.) 사용자가 컨텐츠 상세페이지에 방문할때마다 조회수가 1씩 증가되도록 로직을 구현하려고 합니다. 그런데 만약 1000명의 사용자가 동일한 상세페이지에 동시에 접근하면 어떻게 될까요? 동시성 고려하기 전 (로직 구현 및 테스트) 1. 조회수 증가 로직 위 코드를 참고하면, contentsRepository를 통해 contentEntity를 조회한 후 hits를 1씩 증가시키고 있습니다. 2. JMeter를 이용한 동시성 테스트 JMeter에 Thread Group을 생성하고 Number of Threads를 1000으로 설정한 후, 실행해보겠습니다. 먼저 DB를 통해 정상적으로..

JPA. 2022.09.13

[Spring] JPA 동작 방식

엔티티란 데이터베이스의 테이블에 대응하는 클래스라고 생각하시면 됩니다. @Entity가 붙은 클래스는 JPA에서 관리하며 엔티티라고 합니다. 데이터베이스에 item 테이블을 만들고, 이에 대응되 는 Item.java 클래스를 만들어서 @Entity 어노테이션을 붙이면 이 클래스가 엔티티가 되는 것입니 다. 클래스 자체나 생성한 인스턴스도 엔티티라고 부릅니다. 엔티티 클래스를 설계하는 방법은 예제 를 진행하면서 알아보겠습니다. 엔티티 매니저 팩토리는 엔티티 매니저 인스턴스를 관리하는 주체입니다. 애플리케이션 실행 시 한 개만 만들어지며 사용자로부터 요청이 오면 엔티티 매니저 팩토리로부터 엔티티 매니저를 생성합니다. 엔티티 매니저란 영속성 컨텍스트에 접근하여 엔티티에 대한 데이터베이스 작업을 제공 합니다. ..

JPA. 2022.02.02