개발 공부

    [Spring+MySql] Spring에 AWS RDS(MySQL) 연결하기 / driver 에러 해결

    [Spring+MySql] Spring에 AWS RDS(MySQL) 연결하기 / driver 에러 해결

    AWS에서 RDS를 생성하고, 기존에 세팅해놓은 백엔드 프로젝트에 연결하는 걸 해봤다. 우선 AWS에서 RDS를 생성했다. 그 후, 다른 블로그를 참고해서 build.gradle과 application.yml을 세팅했다. 세팅한 내용은 다음과 같다. spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: [AWS RDS 엔드포인트] username: [master name] password : [password] jpa: hibernate: ddl-auto: update properties: hibernate: format_sql: true 엔드포인트는 RDS 세팅 후 정보란에 나와있다. username과 password는 DB생성할 때..

    [개인프로젝트] 개인 프로젝트 시작!

    [개인프로젝트] 개인 프로젝트 시작!

    개인 프로젝트 시작 ! 싸피 생활을 끝내고 취업 준비생으로서 열심히 공부 중에 있다. 싸피에서 프로젝트를 여러번 하긴 했지만, 어려운 문제를 해결해나간 경험이라던지, 최적화 방면에서 깊은 고민을 한 경험이 부족하다고 생각해서 개인 프로젝트를 해야겠다고 전부터 마음 먹었었다. 프론트엔드 개발자로 준비를 하고 있기 때문에 처음에는 백엔드를 구해볼까 생각도 했었는데 전부터 백엔드를 맡아서 해보고 싶기도 했고, 아직 프론트가 맞는지, 백엔드가 맞는지 잘 모르는 상태라서 이 고민에 대한 결론을 확실하게 내리기 위해서 프론트와 백엔드를 다 하는 것을 도전해보기로 했다. 우선 프론트는 React와 TypeScript를 사용하려고 생각중이다. React, TS는 사용 경험이 있어서 어느정도 다룰줄은 알지만 아직까지도 ..

    [JavaScript] JS null 병합 연산자 ??

    [JavaScript] JS null 병합 연산자 ??

    null 병합 연산자 ?? 이게 무엇인가? 사실 첨에 봤을땐 우리가 흔히 보는 물음표인데 코딩할 때는 어떻게 쓰이나.. 했는데 검색해봐도 이름을 모르니 그냥 물음표로 인식해버린다..ㅎ 그런데 생각보다 흥미로운 기능을 하는 친구라서 소개해보려고 한다. 사실 이 글도 구글링이 잘 될지는 모르겠지만,,, null 병합 연산자 ES11(ECMAScript2020)에서 도입된 null 병합 연산자 ??은 좌항의 피연산자가 null 또는 undefined인 경우 우항의 피연산자를 반환하고, 그렇지 않으면 좌항의 피연산자를 반환한다. 이게 무슨말인지 코드를 보면서 설명해보면 보통 JS로 코딩을 하면서 다들 || 연산자는 사용해본적이 있을 것이다. || 연산자는 보통 기본값을 설정할 때 사용된다. let foo = n..

    [SpringBoot] 등록/수정/조회 API 만들기 - 그리고 중단..

    [SpringBoot] 등록/수정/조회 API 만들기 - 그리고 중단..

    API를 만들기 위한 3개의 클래스 1. Request 데이터를 받을 Dto 2. API 요청을 받을 Controller 3. 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service 스프링 웹 계층은 다음과 같다. 비즈니스 처리를 담당하는 부분은 Domain이다. 모든 로직이 서비스 클래스 내부에서 처리가 된다면 서비스 계층이 무의미하고, 객체란 단순히 데이터 덩어리 역할을 하게 된다. (자세한 내용은 책 참고해주세요!) 그렇기 때문에 이 실습에서는 도메인 모델을 다루고 코드를 작성한다. 각각의 클래스 생성 (경로는 패키지명 참고) package com.jojoldu.book.springboot.web.dto; import com.jojoldu.book.springboot.domain.posts.Po..

    [SpringBoot] JPA로 데이터베이스 다루기

    [SpringBoot] JPA로 데이터베이스 다루기

    현대 웹 애플리케이션에서 관계형 데이터베이스(RDB)는 빠질 수 없는 요소이다. Oracle, MySQL 등 다양하게 쓰이고 있고, 그러다보니 객체를 관계형 데이터베이스에서 관리하는 것이 중요하다. 관계형 데이터베이스를 사용하는 상황에서 SQL는 피할 수 없는 요소이다. 하지만 , SQL은 유지보수하는 것이 어렵고, 패러다임 불일치 문제가 발생한다. 관계형 데이터베이스는 어떻게 데이터를 저장할지에 초점이 맞춰져있지만, 객체 지향 프로그래밍 언어는 메시지를 기반으로 기능과 속성을 한 곳에서 관리하는 기술이다. 이 두개의 패러다임이 서로 다른데, 객체를 데이터베이스에 저장하려고 하니 문제가 발생하고, 이를 패러다임 불일치라고 한다. JPA는 이러한 문제점을 해결하기 위해 등장한다. 서로 지향하는 바가 다른 ..

    [SpringBoot] 롬복 소개 및 설치

    [SpringBoot] 롬복 소개 및 설치

    롬복이란? 롬복은 자바 개발에서 자주 쓰이는 Getter, Setter, 기본 생성자 등을 어노테이션으로 자동 생성해준다. 프로젝트에 롬복 라이브러리 다운로드 build.gradle에 implementation('org.projectlombok:lombok') 추가 후 gradle을 새로고침해준다. 롬복 플러그인 설치는 플러그인 마켓에서 설치한 뒤 여기를 체크해주면 된다. 플러그인은 한번 설치하면 되지만 해당 과정은 프로젝트 마다 설정해줘야한다. 롬복 테스트 package com.jojoldu.book.springboot.web.dto; import lombok.Getter; import lombok.RequiredArgsConstructor; @Getter //선언된 모든 필드의 get메소드 생성 @R..

    [Springboot]  스프링 부트에서의 테스트 코드

    [Springboot] 스프링 부트에서의 테스트 코드

    스프링부트에서의 테스트 코드 최근 회사 채용 공고를 보면 테스트 경험에 대한 경험을 요구한다. 또한 TDD라는 테스트 주도 개발 경험을 요구하는 곳들도 있다. 참고책에서는 TDD가 아닌 단위 테스트 코드에 대해 기술한다. 테스트 코드를 작성해야 하는 이유? 1. 빠른 피드백 - 개발을 하는 과정에서 테스트 코드가 없다면 코드 수정 -> 프로그램 실행 -> API테스트 도구로 HTTP 요청 -> 출력 후 검증 -> 다시 코드 수정 과정을 거친다. 하지만 테스트 코드가 작성된다면 코드 수정 후 간단하게 테스트 코드만 실행시키면 되기 때문에 빠른 피드백을 받을 수 있다. 2. 검증 - 테스트 코드를 작성하면 직접 print문을 작성하여 눈으로 확인해야하는 것들을 자동으로 검증해준다. 3. 기능 보호 - 기존 ..

    [SpringBoot] 스프링부트 프로젝트 세팅하기

    [SpringBoot] 스프링부트 프로젝트 세팅하기

    스프링부트 공부해보고 싶어서 실습을 진행하려고 한다. 원래는 강의 부터 들을까 생각도 했지만, 처음부터 모르는 것 투성이로 강의 듣는것과 실제로 실습을 한 뒤에 강의를 듣는 것은 큰 차이가 있다고 생각이 들어서 그래도 어느정도 아는 상태에서 강의를 들어보고자 빠르고 간단하게 경험해보고자 실습부터 하려고 한다. 다음 책을 참고해서 실습을 진행했다. http://www.yes24.com/Product/Goods/83849117 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - YES24 가장 빠르고 쉽게 웹 서비스의 모든 과정을 경험한다. 경험이 실력이 되는 순간!이 책은 제목 그대로 스프링 부트와 AWS로 웹 서비스를 구현한다. JPA와 JUnit 테스트, 그레이들, 머스테치, 스프링 www.yes24...

    [Typescript] 필수가 아닌 타입 설정하기

    [Typescript] 필수가 아닌 타입 설정하기

    가끔 TS를 쓰면서 ?를 붙여서 필수 요소가 아닌 속성을 설정할 수 있다. 요로케 export type PrivateRouteProps = { auth: InitialStateType; outlet: JSX.Element; study?: boolean; }; 현재 study라는 인자를 옵션으로 받고 있는건데 그러면 이 옵션이 안올 때를 대비해서 미리 default값을 설정해줘야한다. 그러지 않으면 에러뜬다 defaultProps 세팅해주라고 합니다 그러면 해주면 된다. PrivateRoute.defaultProps = { study: true }; 이런 식으로 기본값을 설정해주면 에러가 사라지는 모습을 볼 수 있다. PrivateRoute는 컴포넌트 이름이다. 완성 코드 export type Privat..