목록[백엔드] (121)
개발자로 후회없는 삶 살기
서론 현재 진행하고 있는 백엔드 프로젝트에서 spring으로 작성된 어플리케이션 서버와 flask로 작성된 AI 서버를 통신하는 과정을 기록합니다. 본론 - spring to spring 문자열 주고 받기 로컬 호스트에서 서버 간 통신은 처음해보기도 하고 spring과 flask는 이미지를 주고 받을 것이라서 그 전에 spring와 spring을 먼저 연결해 봅니다. 1. 요청과 응답 DTO 객체 // 요청 객체 @Data public class RequestDTO { private String body; public RequestDTO(String body) { this.body = body; } public RequestDTO() { } } // 응답 객체 @Data public class Respo..
서론 DB에 데이터를 저장하기 위해서는 DB 컬럼 타입과 엔터티 필드 타입을 맞춰줘야 합니다. String을 varchar로 int를 integer로 맞추는 것을 의미합니다. @Enumerated(value = EnumType.STRING) 자바에서는 enum 타입이 있고 enum 타입의 데이터를 DB에 저장해야 할 필요가 있습니다. JPA에서는 이것을 어노테이션으로 해결할 수 있습니다. 그러면 JPA가 없으면 어떻게 해야 할까요? 이에 대해 알아봅니다. 본론 - 엔터티 필드 @Setter @Getter @ToString public class Item { private Long id; private String itemName; private int price; private int quantity; ..
서론※ 이 포스트는 다음 강의의 학습이 목표임을 밝힙니다.https://www.youtube.com/playlist?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 자바의 정석 기초편(2020최신)최고의 자바강좌를 무료로 들을 수 있습니다. 어떤 유료강좌보다도 낫습니다.www.youtube.com 본론자바 8부터 자바에 oop 기능에 함수형 언어 기능을 추가했습니다. 대표적인 함수형 언어 기능인 람다를 알아봅니다. - 람다식public int max(int a, int b) { return a > b ? a : b;}함수(메서드)를 간단한 식으로 표현하는 방법입니다. max 함수(메서드)를 람다식을 이용하면 짧게 표현할 수 있습니다. (int a, int b) -> a > ..
서론 ※ 이 포스트는 다음 강의의 학습이 목표임을 밝힙니다. https://www.inflearn.com/roadmaps/149 김영한의 스프링 부트와 JPA 실무 완전 정복 로드맵 - 인프런 | 로드맵 Java, JPA 스킬을 학습할 수 있는 개발 · 프로그래밍 로드맵을 인프런에서 만나보세요. www.inflearn.com:443 본론 jpa의 내부 구조가 어떻게 동작하는지 알아보겠습니다. - 영속성 컨텍스트 jpa를 이해하려면 영속성 컨텍스트를 이해해야 합니다. jpa에서 가장 중요한 2가지는 엔터티와 DB 테이블 매핑과 영속성 컨텍스트입니다. 매핑은 설계와 관련된 정적인 것인데 영속성은 실제 jpa 내부 동작입니다. -> 그림 jpa를 쓰게 되면 공장과 매니저를 씁니다. 예를들어 웹 어플을 개발하면..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술합니다. 본론- 인덱스인덱스란 배열의 번호, 책갈피 인덱스 등 빨리 검색을 하기 위한 것 입니다. 인덱스가 없으면 풀 스캔을 해야 찾을 수 있습니다. 인덱스의 특징은 정렬이 되어있습니다. 책의 부록 인덱스를 보면 가나다 순으로 정렬된 인덱스에서 몇 장에 원하는 내용이 있는 지 알 수 있습니다. 이렇게 원하는 데이터 대신에 인덱스를 대신 빨리 찾아 원하는 데이터에 접근할 수 있습니다. - 데이터 베이스 인덱스인덱스 성능 비교를 위한 더미 데이터를 준비합니다. 30만 행 이상의 직원 데이터입니다. 성이 토마스인 사람을 찾아보면 233 행이 나오고 0.091초에 걸려서 찾았습니다. 이 방법은 30만 건을 전부 다 풀 스캔해 본..
서론join이 일어나는 유형에서 on과 where의 차이를 알아봅니다. 조인할 때 어떤 테이블을 먼저 검색하느냐에 따라 DB 조회 성능에 큰 영향을 주므로 잘 알아둬야 합니다. 본론- 이너조인테이블을 옆으로 붙이는 것을 조인이라고 합니다. emp의 fk 데이터인 deptId의 1, 3과 dept의 pk 데이터에 1, 3을 맞춰서 기준 컬럼(deptId)의 공통 속성을 통해 행이 옆으로 연결됩니다. 1. inner join + on 2. inner join + where이너 조인은 on을 쓰나 where을 쓰나 결과가 같습니다. 조건이 있는 테이블에 먼저 조건을 수행하여 emp 테이블에서 1행을 찾고 전체 dept 테이블과 이너 조인을 하게 됩니다. 3. join + using기준 컬럼의 이름이 같을 때..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술합니다. 본론다양한 예제로 ERD를 활용해봅니다. - 카카오톡 대화방이번에는 카카오톡 대화방 ERD를 만들어보겠습니다. 역시 요구사항에 대해 카테고리를 작성하고 그 다음에 상세 요건을 작성하는 방향으로 진행합니다. 다양한 카테고리 중에 대화방에만 집중에서 만들어보겠습니다. -> 카테고리1. 대화방 -> 엔터티1. 회원 2. 대화방 카테고리를 보고 큰 틀이 될 엔터티를 설계합니다. 회원 테이블을 중심으로 대화방에 필요한 엔터티들 중에서 이미지 하단에 보이는 친구 목록, 채팅만 생각합니다. -> 관계회원과 대화방은 M:N입니다. 누구를 먼저 클릭할 지에 따라서 대화방 입장에서는 해당 대화방에 참여한 회원들 목록이고 회원들 입..
서론※ 과거에 기록한 내용에서 중요한 부분만 발췌하여 모두가 이해하기 쉽게 다시 서술합니다. 본론그 동안 배운 것을 활용하여 네이버 영화 DB를 분석하고 ERD를 그려보겠습니다. 먼저 기획자가 기획을 하고 개발자가 그 기획서를 보고 요구사항을 분석하여 기능을 리스트업하고 ERD를 그리는 단계입니다. - ERD 그리기네이버 영화 기획에 맞게 ERD를 그립니다. 요구사항에 대한 리스트를 상세하게 작성할 수도 있지만, 먼저 카테고리를 작성하고, 그 다음에 상세하게 요건들을 작성하면 좋습니다. -> 카테고리1. 영화 소개2. 영화 출연진3. 평점, 리뷰 -> 엔터티1. 영화 2. 관객3. 영화인 카테고리를 보고 큰 틀이 될 엔터티를 설계합니다. -> 관계큰 틀의 관계를 설정합니다. 현재 영화 리뷰 ERD를 설계..