스프링 부트 Validation
BackEnd/Spring 2023. 11. 17. 02:53

Lombok @Data 어노테이션은 @Getter/ @Setter/ @ToString/ @EqualsAndHashCode/ @RequiredArgsConstructor를 합친 것 Spring Boot @Validated어노테이션 이 클래스를 구성하는 메서드 중에서 1개라고 notblank notnull... 을 사용하면 지우면 안 된다. @Valid `주로 메서드의 매개변수에 사용되며, 주로 스프링 MVC에서 컨트롤러의 메서드에 적용된다.` @Validated `주로 메드나 클래스에 사용되며, 스프링 MVC 외의 다른 레이어에서도 사용할 수 있다.` @NotBlank 해당 어노테이션이 붙은 요소가 null이 아니고 공백 문자를 제외한 적어도 하나의 문자를 포함하고 있음을 검증한다. @NotNull 말 그..

IntelliJ 2023.1 ChronoUnit 에러..
Try & Error Log 2023. 11. 8. 10:36

IntelliJ를 잘 사용하던 중 ChronoUnit이 동작하지 않는 상황이 발생했다. Version OpenJDK 21 IntelliJ IDEA 2023.1 구글에 원인을 찾아봐도 오류가 나오지 않는 상황이 발생했다. 차분히 다른 프로젝트 OpenJDK 19버전을 열어서 ChronoUnit Class를 분석하기 시작하였다. OpenJDK 19 버전에서는 ChronoUnit이 잘 동작하였고 21버전에서만 동작을 하지 않았기 때문에 OpenJDK 문제보다는 IntelliJ의 문제가 아닐까 생각을 하였다. 구글에 OpenJDK21 ChronoUnit을 검색해보니 IntelliJ 2023.1 버전에서는 Java 21을 지원하지 않는다고 하였다. 오류라는 건 해결할 수 있는 문제이다. 그렇기 때문에 무조건 해당..

관계형 데이터 모델링
BackEnd/DB 2023. 11. 2. 02:14

마지막 수정일( 2023 // 11 // 02 ) 데이터 모델링의 전체 흐름 업무파악 개념적 데이터 모델링 논리적 데이터 모델링 물리적 데이터 모델링 업무파악 무엇을 하려고 하는지? 의뢰한 사람이 무엇을 꿈꾸고 있는지 파악하기 기획서를 산출물로 받아낼 수 있다. 나는 DB를 통해서 현실의 문제를 해결하는 사람이다. 그렇기 때문에 이해하는 것만으로는 부족하다. 해결하려는 문제를 컴퓨터라는 강력하고 안 똑똑한 기계에 설명할 수 있을 정도로 업무를 이해해야 한다. 그렇기 위해서는 그 분야의 실무자들과 정확하게 소통하는 것이 중요하다. 이해를 했다면 설명을 잘 해야 한다. 업무 파악을 할 때 많이 사용하는 방법은 UI를 같이 그려보는 방법이다. 일을 의뢰하는 사람과 함께 그려보는 과정에서 원하는 것을 일치시키는..

[Mysql] SQLyog 관계형 DB
BackEnd/DB 2023. 10. 31. 23:41

mysql의 관계형 DB 및 SQL 문법에 대해 공부하고 배운 것들을 작성하고자 한다. 조회 SHOW DATABASES; - MySQL에서 모든 DB 목록 표시 SHOW TABLES; - DB내 모든 테이블 반환 DESC tablename; - 테이블(구조) 표시 SELECT * FROM tablename; - 해당 테이블의 모든 행과 열을 검색한다. SELECT 컬럼명 FROM tablename WHERE 조건 AND 조건 ORDER BY id DESC LIMIT 3; SELECT에서 여러가지로 필터를 걸어서 조회를 할 수 있다. 생성 CREATE DATABASE databasename; - db 생성 USE databasename; - db 선택 CREATE TABLE tablename ( 컬럼명 데..

[Lombok]
Study 2023. 10. 27. 15:03

롬복을 처음 이용했는데 매우 좋은 라이브러리였다. Getter와 Setter을 Lombok을 이용해 @Getter @Setter를 변수에 작성하기만 하면 Getter와 Setter을 쓴것과 같은 효과를 준다! Dependencies implementation 'org.projectlombok:lombok:1.18.30' annotationProcessor 'org.projectlombok:lombok:1.18.30' testImplementation 'org.projectlombok:lombok:1.18.30' testAnnotationProcessor 'org.projectlombok:lombok:1.18.30' class Lombok { private String name; public String ..

[CS] 디자인 패턴 - 팩토리 패턴
Cs ( Computer Science )/디자인 패턴 2023. 10. 27. 01:05

팩토리 패턴 팩토리 패턴은 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴 EX) 카페를 생각하자! 라떼 레시피와 아메리카노 레시피, 우유 레시피라는 구체적인 내용이 들어 있는 하위 클래스가 컨베이어 벨트를 통해 전달되고, 상위 클래스인 바리스타 공장에서 이 레시피를 토대로 우유 등을 생산하는 생산 공정! 용어 팩토리 메소드 패턴 생성 패턴 중 하나로, 객체를 생성할 때 어떤 클래스의 인스턴스를 만들 지 서브 클래스에서 결정하도록 한다. ( 조건에 따라 객체 생성을 팩토리 클래스로 위임하여, 팩토리 클래스에서 객체를 생성하는 패턴 ) 즉 인스턴스의 생..

[CS] 디자인 패턴 - 싱글톤 패턴
Cs ( Computer Science )/디자인 패턴 2023. 10. 25. 00:03

CS 오늘부터 Java를 공부를 안 할 때는 CS에 대해 블로그 글을 쓰려고 한다. CS는 학부생일 때도 배우지 않아서 처음이지만 어느 정도 OOP에 대한 지식은 유니티로 게임 개발을 했기에 알고 있다. 하지만 지키기 쉽지 않았다. 왜 OOP를 해야 하고 테스트 코드를 작성해야 하고 나는 오늘부터 알아갈 생각이다. CS 공부는 면접을 위한 CS 전공지식 노트를 참고했다. 용어 라이브러리 공통적으로 사용될 수 있는 특정한 기능들을 모듈화한 것. 프레임 워크에 비해 자유롭다! 예를 들면 요리를 할 때 '도구'인 '칼'을 사용해서 '내가'직접 컨트롤하여 자르는데, 라이브러리는 이와 비슷하다! 프레임워크 공통적으로 사용될 수 있는 특정한 기능들을 모듈화한 것. 폴더명, 파일명 등에 대한 규칙이 있어서 라이브러리..

[Study] IntelliJ IDEA에 관한 설정
Study 2023. 10. 20. 09:15

IntelliJ Java의 경우에는 Intellij가 매우 유용한 IDE인데 어제 공부하면서 간단한 설정 방법을 작성해 보려고 한다. IntelliJ - Settings New UI ( Beta ) - New UI의 경우에는 IntelliJ에서 베타로 테스트하는 UI이다. 확실하게 이전 UI보다 더 깔끔하게 사용할 수 있었다. 모던한 스타일 IntelliJ - New Project 새로운 프로젝트를 만들 때 JDK를 21 버전으로 만들었다. 이때 JDK 21 버전은 Gradle System을 8.2부터 지원하였다. 오류가 났을 때는 distributionUrl에서 gradle-버전을 8.2 이상으로 바꿔주도록 하자 버전에 관련된 글은 Gradle 공식 사이트에서 확인할 수 있다. IntelliJ - Me..

[자바의 정석] Java를 공부하는 방법
자바의 정석 2023. 10. 15. 16:38

자바의 정석 Chapter 1. 자바를 시작하기 전에 Page 14 ~ 26 자바를 공부하는 방법 어떤 프로그래밍을 공부할 때 눈으로만 이해하지 말고 직접 실습해 봐야 한다. 이는 그림도 마찬가지이다. 나는 앞서 여러 가지 창작을 해보았다고 했다. 반복학습 이는 매우 중요한 단어이다. 반복학습을 통해 해당 내용에 대해 더 자세히 이해하는 과정. 프로그래밍에서는 이게 가장 중요하게 동작한다고 생각한다. 프로그래밍 면접 때도 마찬가지이다. 예를 들어 CS를 면접관이 질문할 때 'JVM에 대해 설명해 주세요.' 라고 하면 JVM은 자바를 실행하기 위한 ~입니다.라고 대답하면 그러면 추가적인 질문으로 '그러면 ~는 무엇인가요?`라고 꼬리물기로 계속 진행된다. 우리는 이것을 왜 하는지 알아야 한다. 왜 프로그래밍..

[TECHIT] 백엔드 스쿨을 지원하다.
BackEnd/TECHIT 2023. 10. 14. 06:49

TECHIT 백엔드 스쿨에 합격하다. 테킷 백엔드 스쿨 7기부터는 간단한 서류 전형으로 바뀌었다. 나는 원래 게임 개발자이고 왜 백엔드로 옮기려는지 간단하게 작성해 보려고 한다. 백엔드 개발자에 흥미를 느낀 이유 게임 개발을 하면서 baSS 서버리스 백엔드 플랫폼을 써야 하는 경우가 생겼다. 먼저 나의 게임 개발 팀원은 총 8명 ( 1프로그래머 6아트 1작곡가 )로 이루어져 있다. 이게 정상적인 형태는 아니지만 대학교 때 프로그래머가 없었기도 했었고 이미 게임 개발은 어느 정도 진행된 상태라 구하기가 쉽지 않았다. 그렇게 게임 개발을 하면서 모바일 게임이기에 서버가 필요하다고 생각하였고, 백엔드에 관한 지식은 전무했고 또한 혼자서 서버를 만들더라도 문제가 생길 확률이 높았다. 그중 따로 서버를 구현하지 ..