[Spring Boot] Swagger 3.0 적용
2022. 7. 9. 17:32
Spring Boot/문법 정리
Swagger 란? API 명세를 도와주는 도구 (협업을 할 때 유용) API 명세 : 프론트엔드와 백엔드 사이에서 어떤 방식으로 데이터를 주고 받을지에 대해 명세하는 것 회원 추가, 조회 예제를 만들어보고, 이 예제에 Swagger 3.0을 적용 시켜봄 회원 추가, 조회 예제 여기가 포인트가 아니기 때문에 최대한 간단하게 구현 DB도 연결 안하고 최대한 간단하게 구현 회원 추가 : 닉네임, 비밀번호를 입력받음 ID를 자동으로 추가해 회원가입 진행 회원 조회 : ID를 Path Variable로 받아 해당 회원 정보를 출력 회원 리스트 : 전체 회원 리스트 출력 User 객체 @Getter @AllArgsConstructor public class User { private int id; private ..
[JAVA] 백준 25307 - 시루의 백화점 구경
2022. 7. 8. 20:51
JAVA/백준(BOJ) 문제풀이
문제 https://www.acmicpc.net/problem/25307 25307번: 시루의 백화점 구경 첫째 줄에 백화점의 세로 길이, 가로 길이, 마네킹과 떨어져야 하는 거리를 의미하는 정수 $N, M, K$가 공백으로 구분되어 주어진다. ($1 \leq N,M \leq 2\,000$, $0 \leq K \leq 4\,000$) 둘째 줄부터 $N$개의 줄 www.acmicpc.net 해결 방법 시루의 시작 위치에서 의자를 찾는 과정은 BFS를 돌리면 될 것이라 생각함 하지만 문제는 마네킹과의 거리가 K 이하인 곳을 방문하지 않아야 된다는 것 만약 모든 마네킹에서 각각 BFS나 DFS 등을 진행하여 갈 수 없는 곳들을 체크한다 마네킹이 최대 2000 * 2000 개 있을 수 있고 K가 최대 4000이..
[Spring Boot] JpaRepository를 사용한 CRUD 예제
2022. 7. 8. 14:51
Spring Boot/문법 정리
JpaRepository 란? https://chb2005.tistory.com/105 이 예제에서는 EntityManager을 주입받아 직접 CRUD 코드를 직접 작성했었음 등록 : em.persist(member) 검색 : em.find(Member.class, memberId) ... 사실 이런 코드들은 매우 반복적임 MemberRepository, ItemRepository, ContentRepository 등 여러 Table에서 사용되는 Repository에 들어가는 코드는 대부분 비슷비슷함 이를 편리하게 하기 위해 스프링 JPA에서 미리 JpaRepository에 기능들을 구현해놓음 개발자는 구현클래스 없이 인터페이스만 작성하고 JpaRepository를 상속받아 사용하면 됨 사용방법은 매우 ..
[Spring Boot] 관계형 DB - 순환 참조 해결 방법 ( DTO활용 방법 등 )
2022. 7. 3. 18:31
Spring Boot/문법 정리
순환 참조 란? 1:1 연관관계 매핑 예제 참고 Author라는 객체와 Book이라는 객체가 있다고 생각해보자 둘은 1:1 관계로 매핑되어 있음 Author은 name, age 정보 포함 Book은 name, price 정보 포함 Book을 저장할 때 책의 저자(Author)도 같이 저장 이 상황에서 아래와 같이 Book을 조회한다면 아래와 같이 출력됨 (StackOverflow Error 발생) @GetMapping("/book/{bookId}") public Book showBook(@PathVariable Long bookId) { return bookRepository.findById(bookId).get(); } 이렇게 출력되는 이유는 1번 Book 조회시 book1에 저장되어 있는 이름, 가격..
[Spring Boot] Entity Manager을 사용한 MySQL CRUD 예제
2022. 7. 1. 17:53
Spring Boot/문법 정리
Entity Manager 란? Entity를 관리하는 역할 CRUD 기능과 같이 Entity와 관련된 모든 일을 처리하는 역할 Entity Manager는 영속성 컨텍스트에 Entity를 보관하고 관리 => Entity의 상태 변화를 감지하고 필요한 쿼리를 자동으로 수행 Entity Manager을 사용한 MySQL CRUD 예제 User 객체를 만들고 DB에 CRUD 하는 예제를 만들어 봄 MySQL에 DB 생성 (testdb) spring-boot-starter-data-jpa, mysql-connector-java 라이브러리 추가 build.gradle에 다음 코드 추가 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' ..
[MySQL] 한글 깨질 때 해결방법
2022. 7. 1. 16:09
Database
MySQL 기본 설정이 UTF-8이 아니기 때문에 처음 테이블을 생성하고 한글값을 넣으면 에러가 발생함 이 때 MySQL에 접속해서 아래 코드를 입력하면 테이블의 기본 세팅이 UTF-8로 변경되어 한글 입력이 가능해짐 ALTER SCHEMA TABLE명 DEFAULT CHARACTER SET utf8mb4; utf8mb4는 utf8에서 이모지까지 포함한다고 함
[Spring Boot] JPA 관련 개념 정리
2022. 7. 1. 14:16
Spring Boot/문법 정리
JPA 란? Java Persistence Api의 약자로 자바 진영의 ORM 기술 표준 JPA는 인터페이스이므로 구현체가 필요함 대표적인 라이브러리(구현체) : Hibernate ORM 이란? Object Relational Mapping의 약자로 객체와 관계형 DB를 매핑 SQL Mapper 란? 객체와 SQL의 필드를 매핑하여 데이터를 객체화하는 기술 대표적인 라이브러리 : MyBatis, JdbcTemplate ORM VS SQL Mapper SQL Mapper은 쿼리를 직접 작성해야 하지만 ORM은 직접 작성하지 않아도 됨 SQL Mapper은 DBMS에 종속적이지만 ORM은 DBMS에 종속적이지 않고 객체 중심의 개발 가능 하지만 복잡한 쿼리를 해결할 때는 SQL Mapper가 더 용이하고 O..