Spring/Spring Boot

    [Spring Boot, RIOT API] - Unirest로 RIOT API를 요청하고 ObjectMapper를 배워보자.

    https://www.op.gg/ 롤 전적 검색 OP.GG - 전적 검색, 관전, 리플레이, 챔피언 공략, 카운터, 랭킹 롤 전적, 모든 게임의 전적, 챔프 평점, KDA, 승률을 볼 수 있고 리플을 보거나 자신의 게임을 녹화를 할 수 있습니다. 지금 바로 당신의 소환사명을 검색해보세요! www.op.gg OP.GG의 기능 중 전적검색과 랭커조회를 구현해보려고 합니다. 리팩토링된 서비스 코드는 맨 아래를 참고해주세요. 소환사 아이콘은 주소 참조방식을 사용했습니다. 리액트 코드와 전체코드는 맨 아래에 깃허브 주소를 참고해주세요. 감사합니다 :) 오랜만에 리액트를 복습할 겸 프로젝트를 시작했다. 1차 목표는 내 소환사 명을 검색하면 나의 정보를 불러오고, 현 랭커들의 정보도 불러온다. 현재 랭커들의 아이콘을..

    [Spring Boot] Transactional 어노테이션에 대해 알아보자.

    데이터베이스와 트랜잭션 트랜잭션 트랜잭션은 작업을 구성하는 가장 작은 작업이다. 출근하는 과정을 예시로 설명하겠다. 집에서 나와 버스 정류장으로 간다 버스를 타고 신도림역에 내린다. 신도림역에서 2호선을 타고 합정역에서 내린다. 합정역에서 회사까지 걸어간다. 이 네개의 과정은 하나의 트랜잭션으로 묶을 수 있다. 1, 2번 과정이 성공적으로 끝나도 3번에서 지하철이 오지않아 SubwayNotFoundException이 발생한다면 트랜잭션은 실패라고 볼 수 있다. 스프링에서는 예외 발생 시 롤백하는 범위와 과정을 정할 수 있다. 트랜잭션의 성질 (ACID) 원자성 Atomicity 원자성은 모두성공 or 모두실패라고 생각하면 편합니다. 대표적인 예시로 돈을 입금하는 과정에서 돈을 뺴오는 과정은 성공하고 돈을..

    [Spring Data Jpa] (JUNIT, DDL) 외래키 제약조건에 NOT NULL을 추가해보자.

    책 DB ( Book Entity ) package com.example.jpa.domain; @Entity @NoArgsConstructor @Data @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) public class Book extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String category; private Long authorId; private Long publisherId; } PK로 id를 들고있고 문자열 타입으로 name, category, ..

    naver search api 사용해서 rest-api 구현하기

    JPA가 없는 IN-MEMORY DB구현 MemoryDbRepositoryInterface package com.example.restaurant.db; import java.util.List; import java.util.Optional; public interface MemoryDbRepositoryIfs { Optional findById(int index); T save(T entity); void deleteById(int index); List findAll(); } MemoryDbRepositoryAbstract package com.example.restaurant.db; import java.util.ArrayList; import java.util.List; import java.ut..