목록데브코스 웹 백엔드/TIL (10)
영권's
2021-09-27 TIL 기존에 java 어플리케이션과 RDB가 통신하기 위해서 JDBC, JDBCTemplate, Mybatis 를 많이 이용했었는데 이 방법들은 RDB와 자바 객체가 가지는 기본적인 패러다임의 불일치가 발생하게 되고 이를 JPA로 극복할 수 있다. 예를 들어 JDBC, JDBCTemplate의 경우 자바 코드에 쿼리문이 삽입 되어 있는 한계점이 있고 Mybatis 또한 자바 객체와 테이블간의 동일성을 유지하기가 어려울 수 있다. jpa가 ORM(Object Relation Mapper)인 이유도 객체와 RDB간의 관계를 매핑 시켜주기 때문인데 jpa를 사용 했을 때 장점 생산성 증진 Mybatis를 이용하면 만약 객체에 필드가 추가되거나 하면 쿼리를 수정하거나 해야하는데 이를 SQL..
TIL 주문관리 어플리케이션 클론 코딩 클론 코딩 : 주문관리 어플리케이션 1일차 Product에 대한 정보를 react에서 조회할 때 사용할 api 만들기 사용자가 프론트단에서 product에 대한 조회 및 간단한 장바구니 기능 만들기 프론트와 협업하기 위한 React 익히기 새로운 React 앱 만들기 : 노드 패키지를 npx로 실행시켜서 create react app 을 실행시켜서 React 앱 만들기 React 구조 : package.json안에 있는 scripts 명령어들로 start, build, test 등을 할 수 있다. React는 UI를 만들기 위한 JS 라이브러리이다. React는 Component 단위 구조이다. 계층구조로 나뉘게 되는데 만약 자식에서 부모로는 이벤트처리를 할 수 없..
TIL 주문관리 어플리케이션 클론 코딩 과제 피드백 수정 클론 코딩 : 주문관리 어플리케이션 1일차 내용 : Product에 대한 스프링 부트 어플리케이션 작성 특정 url 입력시 product 목록 조회 관리자 페이지에서 제품 생성 과제 피드백 수정 과제는 CommandLineApplication으로 입력 받아 바우처를 create, list, exit 명령을 수행할 수 있게 하는 거였는데 기존에 작성한 코드는 CommandLineApplication 내의 분기문이 많았어서 객체지향적으로 좋은 코드는 아니었다. 객체지향 체조 라는 것을 언급하면서 분기문은 최대한 적게 사용하는 것이 사실 좋다고 했고 그래서 멘토님이 Enum등을 활용해서 최대한 없애는 것이 좋다 라고 조언해주었다. 기존 코드는 보기만 해..
Domain Driven Design(도메인 주도 설계) 도메인은 사용자가 어플리케이션을 사용하는 대상영역이 도메인이 된다. (ex. 주문 관리App은 주문관리가 도메인) Entity 엔터티는 다른 엔터티와 구별할 수 있는 식별자를 가지고 있고 시간의 흐름에 따라 지속적으로 변경되는 객체 주문 관리App에서는 주문이 엔터티가 된다. 각 Id를 가지고 주문이라는 엔터티를 식별할 수 있다. 가지고 있는 VO인 주문자, 주문아이템, 배송지 등이 바뀔 수 있다. Value Object 값 객체는 각 속성이 개별적으로 변화하지 않고 값 그 자체로 고유한 불변 객체 주문 관리 도메인에서는 주문자, 배송지, 주문아이템 등이 될 수 있다. Spring은 자바 기반 어플리케이션을 만들기 때문에 여러 객체들을 만들게되고,..
Spring 프로젝트를 만들기 위한 빌드툴 Maven Gradle Build 란? 필요한 라이브러리를 다운받고 classpath에 추가합니다. 소스 코드를 컴파일합니다. 테스트를 실행합니다. 컴파일된 코드를 packaging 합니다. -> jar / war / zip etc packaging 된 파일을 주로 artifacts라고 부르고 서버나 레포지토리에 배포합니다. 구동이 되는 서비스를 패키징 했을 경우 서버에 배포하지만 Third party library 형태로 외부에게 라이브러리 형태로 제공하기 위해서 배포할 때는 레포지토리에 배포할 수 있다. 이런 일(task)들을 자동화 하게 해주고 "이런 일들을 하겠다."라고 기술할 수 있게 하는데 이렇게 기술한 파일을 build script라고 부른다. Ma..
트랜잭션 소개 테이블 내용을 변경하는 SQL들이 연달아 실행되며 이것들이 마치 하나의 SQL처럼 다 같이 성공하던지 아니면 실패 해야 한다면 트랜잭션의 사용이 필수이다. 트랜잭션이란? Atomic하게 실행되어야 하는 SQL들을 묶어서 하나의 작업처럼 처리하는 방법 이는 DDL이나 DML중 레코드를 수정/추가/삭제한 것에만 의미가 있음 SELECT에는 트랜잭션을 사용할 이유가 없음 BEGIN과 END 혹은 BEGIN과 COMMIT 사이에 해당 SQL들을 사용 ROLLBACK을 사용하여 되돌릴 수 있음 트랜잭션의 좋은 예 은행 계좌 이체 계좌 이체: 인출과 입금의 두 과정으로 이뤄진다. 만일 인출은 성공했는데 중간에 에러가 나서 입금이 실패한다면 잘못된 것이다. 이 두 과정은 동시에 성공하던지 실패해야 한다..