JPA
-
JPA 주의점 (1) - OSIV false 설정 (open-in-view)Spring Boot/JPA 2024. 4. 19. 23:25
웹 서비스 성능에 중요한 지표로 "처리량"과 "응답시간"이 있다. 처리량 (throughput) - https://www.youtube.com/watch?v=JJJ4LReZ5q4서버에서 들어온 요청이 처리되는시간을 말한다.db connection 획득 시간db statement 전송 및 쓰기 시간요청 받은 statement 처리 시간db clent에게 result set 반환하는데 걸리는 시간db connection을 반환하고 Transaction이 idle되는 시간처리량을 숫자로 표현할때 TPS (Transaction Per Second)를 사용한다. TPS = transaction count / time초당 몇개의 클라이언트 요청 처리할 수 있는지 지표응답 시간 (response time) - 아래의..
-
[JPA] 간단하게 OneToMany 데이터 API 구현하기 - @Embeddable, @Embedded, @ElementCollection 활용하기Spring Boot/JPA 2023. 10. 15. 23:14
요구사항 레시피를 저장하고 조회, 삭제할 수 있는 API를 구성한다. JPA 연관관계 설정 없이 OneToMany 데이터 모델링 방법을 정리한다. API Spec 레시피 저장 api POST localhost:8881/api/recipe/new # requestBody { "name": "Fresh Mint Tea", "description": "Light, aromatic and refreshing beverage, ...", "ingredients": ["1 inch ginger root, minced", "1/2 lemon, juiced", "1/2 teaspoon manuka honey"], "directions": ["Place all ingredients in a mug and fill wit..
-
[JPA] Repository단에 Transactional을 선언하는 이유Spring Boot/JPA 2023. 10. 5. 22:37
적어도 일년 이상 궁금했던 의문이 풀려서 정리해본다. Mybatis를 쓰다가 처음로 JPA를 실무에 도입을 할때,위에 코드처럼 Repository단에 @Transcational를 선언하는 경우가 있었다. Service단에 @Transcational을 선언하면 Spring이 AOP로 하나의 Transcation으로 전파되는데왜 굳이 Repository에 선언해야할까?Github에 유명하신 분들 코드를 뜯어봐도,새로 이직한 회사의 코드를 뜯어봐도,ChatGPT, 구글, 공식문서 다 찾아봤지만 알 수 없었는데... 드디어 알게 되었다. 요약하면 Transaction이 너무 긴 Long Transaction이고 동시적인 요청을 받고 있을때 성능적으로 단점이 있기 때문이다. 스프링은 Transaction이 시작..
-
Spring boot JPA/하이버네이트?Spring Boot/JPA 2022. 1. 4. 10:54
"JPA는 데이터베이스 기술이라기보다 애플리케이션의 데이터를 객체지향으로 볼 수 있게 해주는 객체 지향 기술이다." 전자정부 프레임워크에는 몇 가지 데이터 액세스 기술을 제공하는데. JPA는 데이터에 접근하는 방법 중 하나 1) 아이바티스(or 마이바티스) 2) 하이버네이트 3) JPA 4) 스프링 JPA 5) 스프링 몽고 DB ... 등등 목차 JPA란 하이버네이트란? JPA란? JPA(Java Persistence API)는 자바 진영의 ORM 표준 기술이다. ORM - Oriented Relational Mapping 은 이름 그대로 객체와 RDBMS를 매핑해주는 기술이다. SQL을 작성하는게 아니라, 자바 컬렉션 저장하듯이 객체를 ORM 프레임워크에 저장하고 프레임워크가 데이터베이스에 알아서 저장..