반응형

공부/Spring Boot 10

Spring JPA과 QueryDSL

Spring JPA스프링 데이터 JPA는 JPA를 사용할때 지루하게 반복하는 코드를 자동화 해준다. 이미 라이브러리는 포함되어있다. MemberRepository를 스프링 데이터 JPA로 변경해보자.public interface MemberRepository extends JpaRepository { //select m from Member m where m.name = ? List findByName(String name);}public class MemberService { private final MemberRepository memberRepository; //회원 가입 @Transactional public Long join(Member member) { ..

공부/Spring Boot 2025.02.20

API 개발 고급 - 실무 필수 최적화

OSIV와 성능 최적화Open Session In View : 하이버 네이트Open EntityManager In View : JPA(관례상 OSIV라고 한다.) spring.jpa.open-in-view : JPA 기본값 애플리케이션을 동작하면 시작지점 로그에 warn이 하나 뜨게 되는데, WARN 6920 --- [  restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. spring.jpa.open-in-view is enabled by default라는 warn 로그가 출력되는 것을 알 수 있다. OSIV 전략은 트랜잭션 시작(서비스계층의 @Transactional)..

공부/Spring Boot 2025.02.19

API 개발 고급 - 컬렉션 조회 최적화

https://surrealcode.tistory.com/121 API 개발 고급 - 지연 로딩과 조회 성능 최적화https://surrealcode.tistory.com/120 API 개발 고급 - 준비현업에서는 API 개발을 한 이후 성능이 나오지 않아 튜닝을 하기도 하는데 보통은 아래와 같은 문제를 지키지 않아 발생한다.- 지연로딩, 조회 성surrealcode.tistory.com앞서 본 API 개발은 xToOne 관계만 있는 개발이었다. 이번에는 컬렉션인 OneToMany 를 조회하고, 최적화를 진행해 볼 예정이다. 주문내역에서 추가로 주문한 상품 정보를 추가로 조회하자.Order 기준으로 컬렉션인 'OrderItem'과 'Item'이 필요하다. 컬렉션 조회 같은 경우에는 DB 입장에서 뻥튀기가..

공부/Spring Boot 2025.02.19

API 개발 고급 - 지연 로딩과 조회 성능 최적화

https://surrealcode.tistory.com/120 API 개발 고급 - 준비현업에서는 API 개발을 한 이후 성능이 나오지 않아 튜닝을 하기도 하는데 보통은 아래와 같은 문제를 지키지 않아 발생한다.- 지연로딩, 조회 성능 최적화- 컬렉션 조회 최적화- 페이징, 한계 돌surrealcode.tistory.com개발에 앞서, 이전 포스팅을 참고하여 조회용 데이터 샘플을 넣어주도록 하자.  지연 로딩과 조회 성능 최적화이전까지는 단일 엔티티만을 조회하는 API를 만들었다. 이번엔 주문 + 배송정보 + 회원을 조회하는 API를 만들어본다.여러 정보를 조회하는 API의 문제는 지연 로딩이다.지연 로딩 때문에 발생하는 성능 문제를 단계적으로 해결해보자. **참고 : 지금부터 설명되는 내용은 정말 중..

공부/Spring Boot 2025.02.03

API 개발 고급 - 준비

현업에서는 API 개발을 한 이후 성능이 나오지 않아 튜닝을 하기도 하는데 보통은 아래와 같은 문제를 지키지 않아 발생한다.- 지연로딩, 조회 성능 최적화- 컬렉션 조회 최적화- 페이징, 한계 돌파- OSIV, 성능 최적화 보통은 API 장애의 90%는 조회 쪽에서 발생한다. -> 사람들이 조회를 많이 하기 때문이다.  조회용 샘플 데이터를 입력하도록 하자.우선 application.yml파일의 ddl-auto를 create로 만들어주도록 하자. - userA  - JPA1 BOOK  - JPA2 BOOK- userB  - SPRING1 BOOK  - SPRING2 BOOK 클래스를 하나 만들고 데이터들을 집어넣어주었다./** * 총 주문 2개 *- userA * - JPA1 BOOK * - JP..

공부/Spring Boot 2025.01.31

API 개발 기본

API(Application Programming Interface) : 클라이언트(웹 브라우저, 모바일 앱)와 서버 간의 데이터 교환을 위한 인터페이스이다. API의 역할1. 클라이언트 요청을 받아 서버에서 처리2. 데이터베이스에서 데이터를 가져와 JSON 형태로 응답3. CRUD(Create, Read, Update, Delete)의 기능 제공 스프링 부트에서는 API가 기본적으로 JSON 형식의 데이터를 주고 받는다.API가 정상적으로 동작하는지 알아보기 위해 우선 Postman을 설치한다.https://www.postman.com/ Postman: The World's Leading API Platform | Sign Up for FreeAccelerate API development with P..

공부/Spring Boot 2025.01.31

웹 계층 개발

https://surrealcode.tistory.com/98 애플리케이션 구현(도메인 개발)구현 전 앞서 만든 예제를 통해 도메인 분석과 설계를 하여 구현 준비를 한다https://surrealcode.tistory.com/97 도메인 분석 설계JPA 프로그래밍의 이론을 알기 전 실전 코딩을 통해 직접 코드를 만들어surrealcode.tistory.com애플리케이션까지 구현이 마무리 되었다면, 웹 계층을 개발하도록 한다.Controller 관련과 front 관련 개발이다.thymeleaf를 사용할 예정이다. 개발 순서는 다음과 같이 진행한다.홈 화면과 레이아웃 -> 회원 등록 -> 회원 목록 조회 -> 상품 등록 -> 상품 목록 -> 상품 수정 -> 변경 감지와 병합(merge) -> 상품 주문 ->..

공부/Spring Boot 2024.11.25

애플리케이션 구현(도메인 개발)

구현 전 앞서 만든 예제를 통해 도메인 분석과 설계를 하여 구현 준비를 한다https://surrealcode.tistory.com/97 도메인 분석 설계JPA 프로그래밍의 이론을 알기 전 실전 코딩을 통해 직접 코드를 만들어보고, 기본 학습을 다시 다루어 볼 예정이다. 목차는 다음과 같다. 목차1. 요구사항 분석2. 도메인 모델과 테이블 설계3. 엔surrealcode.tistory.com 만들어볼 UI는 다음과 같다.º 회원 기능  - 회원 등록  - 회원 조회º 상품 기능  - 상품 등록  - 상품 수정  - 상품 조회º 주문 기능  - 상품 주문  - 주문 내역 조회  - 주문 취소 ---예제를 단순화 하기 위해 다음 기능은 구현하지 않았다.---1. 로그인과 권한 관리2. 파라미터 검증과 예외 ..

공부/Spring Boot 2024.11.21

도메인 분석 설계

JPA 프로그래밍의 이론을 알기 전 실전 코딩을 통해 직접 코드를 만들어보고, 기본 학습을 다시 다루어 볼 예정이다. 목차는 다음과 같다. 목차1. 요구사항 분석2. 도메인 모델과 테이블 설계3. 엔티티 클래스 개발4. 엔티티 설계시 주의점   1. 요구사항 분석굉장히 간단한 쇼핑몰을 만들 예정이다.회원 기능, 상품 기능, 주문 기능, 총 세가지의 기능이 있다. *기능 목록*회원 기능  - 회원 등록  - 회원 조회상품 기능  - 상품 등록  - 상품 수정  - 상품 조회주문 기능  - 상품 주문  - 주문 내역 조회  - 주문 취소기타 요구사항  - 상품은 재고 관리가 필요하다.  - 상품의 종류는 도서, 음반, 영화가 있다.  - 상품을 카테고리로 구분할 수 있다.  - 상품 주문 시 배송 정보를 입..

공부/Spring Boot 2024.11.18

프로젝트 환경 설정

https://start.spring.io/이전처럼 spring프로젝트를 구성해준다.gradle, java, 메이저 버전을 선택하고, 아래와 같은 dependencies를 구성하여준다. 이렇게 설정하면 압축 파일이 하나 생성되는데 압축을 해제하고(원하는 위치, 프로젝트를 만들 위치, 보통 C드라이브 밑에 폴더를 하나 구성하여 만든다.) build.gradle을 인텔리제이를 통해 프로젝트 open을 해준다. 롬복에 대한 구성 방법은 아래의 방법을 참고하도록 하자.https://surrealcode.tistory.com/93 의존관계 자동 주입다양한 의존관계 주입 방법 의존관계 주입은 크게 4가지 방법이 있다.- 생성자 주입- 수정자 주입(setter 주입)- 필드 주입- 일반 메서드 주입  생성자 주입- ..

공부/Spring Boot 2024.11.17
반응형