본문 바로가기

프로그래밍29

[TIL] Spring Legacy - Java의 enum값을 MySQL 넣기 스프링부트에서 Java의 enum과 데이터베이스의 VARCHAR 타입 연결하는 포스팅은 이전 미니게시판 사이드프로젝트에서 포스팅을 했다. 스프링부트의 메이저 버전에 따라 사용법이 다르기는 하지만.. 2024.01.25 - [프로그래밍/Project] - [Project01] MiniBoard(3) - Custom Annotation 생성, 사용자 Model 생성 [Project01] MiniBoard(3) - Custom Annotation 생성, 사용자 Model 생성 Custom Annotation 생성 각 클래스의 역할 세분화를 위해 Business, Converter Annotation을 만든다. 요청 로직의 흐름은 Client -> Controller -> Business -> Service -.. 2024. 1. 30.
[TIL] LocalDate, LocalTime, LocalDateTime Java version 8 이상에서만 사용이 가능한 api이다. [LocalDate] 날짜 정보만 출력한다. ex) 2024-01-15 [LocalTime] 시간 정보만 출력한다. ex) 11:10:25 [LocalDateTime] 날짜와 시간 정보 모두 출력한다. ex) 2020-10-12T12:32:32.222 [적용] 진행 중인 프로젝트에서 여행 시작일자, 종료일자, 체크인 시간, 체크아웃 시간 등 시간에 대한 모든 타입을 LocalDateTime으로 지정하고, MySQL타입에서는 DATETIME으로 지정했다. 여행 정보를 저장할 때 문제가 발생했다. 사용자의 가입을 처리할 때에는 LocalDateTime.now()를 사용해서 문제없이 지나갔지만, 날짜만 필요한 여행 시작일자와 종료일자에서는 Loc.. 2024. 1. 29.
[Spring] ToyProject 2단계(2) - 역할 분배, 기본 구조 월요일이 되어 팀에 호출(?)되어 역할 분배와 프로젝트 기본 구조를 만들었다. 영광스럽게도 혼자 끄적인 설계를 따라 진행하게 되었다. 사용자, 여행, 여정 크게 3개의 도메인으로 나눠놨을 때 여정 부분을 맡게 되었다. 물론 혼자 다 해보는 프로젝트도 진행 중이고 그 내용으로 포스팅을 진행한다. 여행의 종류(이동, 숙소, 체류)에 대해서는 enum 클래스를 사용하려고 했으나 1차적으로 String으로 처리한 후 시간여유가 있다면 enum클래스로 변경 예정이다. 예습하면서 미리 찾아보는게 좋겠다. [여행 데이터베이스] trip 컬럼명 데이터 타입 조건 설명 자바 변수명 자바 타입 id BIGINT(32) PK, AI 여행 아이디 id Long user_id BIGINT(32) FK, NOT NULL 사용자 .. 2024. 1. 29.
[Spring] ToyProject 2단계(1) - 시작하기 패스트캠퍼스 : 백엔드 개발 부트캠프 ToyProject 2 1단계, 2단계, 3단계로 진행 최종 구현 목표는 '여행과 여정을 기록하고 관리하는 SNS 서비스 2단계 달성목표 : Spring Legacy 기반 프로젝트, DB 설계, DB 트랜잭션, RESTful API 설계 [프로젝트 정의] 회원은 여러 여행 기록을 저장할 수 있습니다. 여행은 여러 여정을 가질 수 있습니다. 여정 정보는 이동정보, 체류정보, 숙박정보 등의 종류를 포함할 수 있습니다. 회원이 가진 전체 여행 리스트를 조회할 수 있습니다. 전체 여행 리스트는 여행 정보와 각 여행에 포함된 여정 이름들을 같이 보여줍니다. 각 여행의 상세 여정 정보는 개별 여행 조회를 통해 수행합니다. 회원은 개별 여행 정보를 조회할 수 있습니다. 특정 여행.. 2024. 1. 28.
[TIL] MyBatis 그리고 ObjectMapper 패캠 백엔드 부트캠프 토이프로젝트 2차가 시작되었다. 온라인 강의 진도 기준으로 스트링부트를 이용한 프로젝트를 진행하고 있었지만, 실강 기준으로 프로젝트가 나오다 보니 헷갈린다. 토이 1차의 자바만을 이용한 여행 웹애플리케이션 콘셉트를 스프링과 MyBatis를 사용해서 API 개발이 목적이다. 왜 안부트요??? 달성목표는 복잡하지 않다. 여행과 여정의 정보를 1:n으로 관계로 설계 여행 정보 등록, 조회, 수정 여행에 포함된 여정의 정보 등록, 조회, 수정 회원은 여러 여행 기록을 등록할 수 있습니다. (회원은 고려하지 않는다.) 회원은 고려하지 않는다...? 회원이 없다면 정보 등록은 누가 하나요??? 더하면 더했지 덜하면 직성이 안 풀리기에 회원등록부터 시작하겠습니다^^ A Few Moments La.. 2024. 1. 28.
[TIL] Spring Annotation Target : 어노테이션을 붙일 수 있는 위치 @Bean Target : METHOD (메서드 레벨) 개발자 본인이 직접 제어할 수 없는 Method에 사용한다. 일반적으로 외부 라이브러리를 Bean으로 등록할 때 사용한다. @Component Target : TYPE (Class, Interface, enum 등 클래스 레벨) 개발자가 직접 개발해서 제어할 수 있는 클래스를 Bean으로 등록할 때 사용한다. @Controller Bean으로 등록되어 View를 렌더링 해서 보여준다. 핸들러메서드에서 ViewName을 반환한다. @RequestMapping("/home") public String index() { return "index"; } 뷰페이지에 데이터를 전달하기 위한 데이터바인딩은 Mode.. 2024. 1. 26.
[Project01] MiniBoard(3) - Custom Annotation 생성, 사용자 Model 생성 Custom Annotation 생성 각 클래스의 역할 세분화를 위해 Business, Converter Annotation을 만든다. 요청 로직의 흐름은 Client -> Controller -> Business -> Service -> Repository 순으로 흘러가고, 응답은 역순으로 반환한다. 요청과 응답의 모델이 다르기 때문에 도메인별로 Converter 클래스를 사용할 예정이다. @Business @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Service public @interface Business { @AliasFor(annotation = Service.class) String value() default ""; } .. 2024. 1. 25.
[Project01] MiniBoard(2) - ObjectMapper, SwaggerUI, Filter 설정 ObjectMapper 설정 Object(객체) -> Json(문자열) 형태로 만들어 내는 직렬화와 Json(문자열) -> Object(객체)로 만들어내는 역직렬화 처리를 할 때 사용 프로젝트 Api에서 변수는 카멜케이스를 사용하고 있는데 클라이언트로의 응답을 내려줄 때 Json에서의 Key는 스네이크케이스를 사용한다. 그렇기 때문에 클라이언트로 응답을 주는 모델(DTO)에 @JsonNaming(value = PropertyNamingStrategies.SnakeCaseStrategy.class) 어노테이션을 달아주고 사용을 하게 되는데 매번 해당 어노테이션을 달아주는 번거로움을 덜어주기 위함 + 추가 설정이 가능하다. @Configuration public class ObjectMapperConfig .. 2024. 1. 25.
[Project01] MiniBoard(1) - 프로젝트 생성, 데이터베이스 연결 시작하며 기본적인 자바 문법과 스프링부트를 이용한 실습이 어느 정도 진행이 된 상황이라 여러 가지 기능을 가진 게시판 프로젝트를 진행한다. 중간에 실력이 부족하다고 느끼면 학습하는 시간이 필요하겠지만 프로젝트에 필요한 내용들일테니 모두 기록에 담고 진행 예정이다. 첫 번째 기능구현은 사용자 가입과 로그인에 대한 내용이다. jdk 버전을 변경하느라 환경변수 설정부터 적지 않은 시간을 썼지만 너무 많은 정보들이 다른 블로그에 있으니 jdk 환경변수 설정은 생략한다. 프로젝트 생성 IDE : IntelliJ Ultimate Language : Java BuildSystem : Gradle-Groovy JDK version : Oracle 21 SpringBoot version : 3.2.1 DataBase :.. 2024. 1. 23.
[Java] ToyProject 1단계 패스트캠퍼스 : 백엔드 개발 부트캠프 ToyProject 1 1단계, 2단계, 3단계로 진행 최종 구현 목표는 '여행과 여정을 기록/관리하는 SNS 서비스' 1단계 달성목표 : Java 문법, 파일 입출력, 예외처리, 클래스 설계 [프로젝트 정의] 회원은 여러 여행 기록을 저장할 수 있습니다. 회원 가입은 다음 단계에서 고려하고 본 프로젝트는 여행과 여정을 기록하고 조회하는 기능을 구현하기로 한다. 여행에는 여러 여정이 있을 수 있습니다. 여정정보는 이동정보(출발지, 목적지, 출발시간, 도착시간), 숙박정보(체크인, 체크아웃) 등의 종류를 포함할 수 있다. 회원의 여행기록 목록이 출력되며, 각 여행기록 목록을 선택하면 상세한 여정기록이 출력됩니다. 회원 및 여행기록은 향후 데이터베이스 테이블로 관리되지만.. 2023. 12. 29.