목록전체 글 (293)
개발자로 후회없는 삶 살기
서론 캡스톤을 진행할 때 설계를 모두 마치고 구현을 하던 도중 처음에 설계했던 ERD 모델에서 변경되었던 부분을 기록합니다. 본론 - 학생과 졸업 처음에는 졸업 신청과 학생을 1:n 관계로 설계했었습니다. 1명의 학생이 1번의 졸업을 하고 졸업은 여러 명의 학생에게 신청 받을 수 있기 때문에 이렇게 설계했었습니다. 하지만 졸업을 신청할 때 여러가지 단계가 존재하였습니다. 예를 들어 한 명의 학생이 졸업을 하기 위해서는 신청서를 제출하고 > 제안서를 제출하고 > 중간보고서를 제출하고 > 최종 보고서를 제출해야 하며 이 모든 단계가 졸업 신청의 요소로 들어가야 했습니다. 그러면 이를 어떻게 ERD에 적용해야 할까요? ✅ 이렇게 되면 한 명의 학생이 1번의 신청을 하는 것이 아닌 여러번의 신청을 하게 되어 M..
서론자바에서는 데이터에 변경이나 추가를 하지 못하도록 불변을 설정할 수 있는 메서드를 제공합니다. 이번 시간에는 자바의 불변에 대해 알아봅니다. 본론- 복제본에 변화를 준 경우먼저 복제본에 변화를 줄 수 있는지 없는지 살펴보겠습니다. -> 배열을 입력받아 배열을 반환하는 메서드1. Arrays.copyOf이것은 배열을 복제하여 배열을 반환하는 메서드입니다. 복제본에 변화를 주어도 변경이 가능합니다. -> 배열을 입력받아 List를 반환하는 메서드1. List.of변경 불가를 보장합니다. 2. Arrays.asList변경은 가능하고 추가는 불가합니다. -> List를 입력 받아 List를 반환하는 메서드1. Collections.unmodifiableList복제본에 변경이 불가합니다. 2. List.cop..
서론※ 이 포스트는 다음 강의의 학습이 목표임을 밝힙니다.https://www.youtube.com/playlist?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 자바의 정석 기초편(2020최신)최고의 자바강좌를 무료로 들을 수 있습니다. 어떤 유료강좌보다도 낫습니다.www.youtube.com 본론- 스트림이란?컬랙션이나 배열같은 데이터 소스를 표준화된 방법으로(공통된 방법) 통일화하여 사용하기 위한 것입니다. 컬랙션인 리스트, 셋과 배열 등으로 스트림을 만들 수 있고 그러면 똑같은 작업으로 처리할 수 있습니다. 데이터 소스를 스트림으로 만들고 중간 연산을 처리한 후 최종 연산을 하는 순서로 결과를 냅니다. - 스트림 만들기1) 리스트3가지 과정 중 컬랙션으로부터 스트림을 만..
서론 현재 진행하고 있는 백엔드 프로젝트에서 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를 쓰게 되면 공장과 매니저를 씁니다. 예를들어 웹 어플을 개발하면..
서론 캡스톤을 진행하며 발생했던 이슈와 개선 사항을 정리합니다. 본론 - 초기 엔터티 구축 첫 번째 기능에 필요한 초기 엔터티를 구축합니다. @Entity @Getter @Table(name = "student") @NoArgsConstructor(access = AccessLevel.PROTECTED) public class Student extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "student_id") private Long id; @Column(name = "login_id", length = 255, nullable = false) private String loginId; ..