[DEV] study&learn
article thumbnail
목표와 시스템
카테고리 없음 2022. 12. 3. 19:23

항해에서 기술 매니저님에게 영상을 추천받아 보게 되었다. 좋은 영상을 추천해주셔서 감사합니다. 인프콘 어느 날 고민 많은 주니어 개발자가 찾아왔다. - 성장과 취업, 이직 이야기 김영한 바로 2022년 인프런에서 주최한 인프콘 영상이었다. 그중에서, 김영한님이 진행해주신 섹션을 선택해서 보았는데 섹션이 진행되는 내내 뭔가가 정리되어가는 느낌이 들었다. 특히 "목표와 시스템" 이라는 주제로 진행되는 이야기가 가장 인상 깊었다. 목표는 달성하면 성공, 아니면 실패 라고 말씀하시며, 목표의 동기는 열정이라고 말씀하셨다. 음... 열정을 앞세워 세우는 계획이 목표라고 말씀해주시는 거라고 느꼈다. 맞지않은가? 적어도 나에게 있어서는 맞는 소리인것 같다. 나는 때때로 무엇인가를 이뤄보겠다고는 의지와 열정에 불타고,..

Spring Framework 의 특정과 장점
카테고리 없음 2022. 12. 3. 12:45

특징 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다. 스프링은 Plain Old Java Object 방식의 프레임워크이다. 구현을 위해 특정한 인터페이스를 구현하거나 상속받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고, 객체가 가볍다. 스프링은 제어 반전(IoC : Inversion of Control)을 지원한다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다. 스프링은 의존성 주입(DI : Dependency Injection)을 지원한다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다...

article thumbnail
[항해 26일 차] 추상 클래스
카테고리 없음 2022. 12. 2. 10:56

추상 클래스(abstract class) 미완성 설계도, 미완성 메소드를 가지고 있는 클래스 객체를 직접 생성할 수 있는 클래스를 실체 클래스라고 한다면, 이 클래스들의 공통적인 특성을 추출해서 선언한 클래스를 추상 클래스라고 한다. 추상 클래스는 추상 메서드를 가질수 있다. (추상 메서드만 X) ❓ 추상 클래스는 추상 메소드를 최소한 하나라도 가져야 할까? NOPE. 추상 클래스는 추상 메소드를 가지지 않아도 상관없다. 단, 추상 메소드를 하나라도 가지는 클래스는 추상 클래스가 되어야 한다. 추상 클래스와 실체 클래스는 상속의 관계를 가지고 있다. 추상 클래스가 부모, 실체 클래스가 자식으로 구현되어 실체 클래스는 추상 클래스의 모든 특성을 물려받고, 추가적인 특성(필드, 메소드)을 가질 수 있다. a..

article thumbnail
[항해 25일 차] 레이어드 아키텍처_Layered Architecture
카테고리 없음 2022. 12. 1. 16:30

코드 아키텍처를 구상할 때는 확장성(extensibility), 재사용성(reusability), 유지 보수 가능성(maintainability), 가동성(readability) 와 같은 요소들을 염두해야 한다. 코드의 구조를 구성하고 관리하는 틀로써 만들어진 많은 패턴이 존재한다. 그 중, 백엔드 API 코드에 가장 널리 적용되는 패턴 중 하나인 레이어드 아키텍처 패턴에 대해서 알아보고자 한다. Layered Architecture Multi-tier 아키텍처 패턴이라고도 불리는 레어이드 아키텍처 코드는 논리적인 부분 혹은 역할에 따라 독립된 모듈로 나누어서 구성하는 패턴이다. 그리고 각 모듈이 서로의 의존도에 따라 층층히 쌓듯이 연결되어 전체의 시스템을 구현하는 구조이다. 각 시스템 마다 경우가 다를..

article thumbnail
[항해 25일 차] 트랜잭션_Transaction
카테고리 없음 2022. 12. 1. 14:45

트랜잭션이 뭐야? 만약 데이터베이스의 데이터를 수정하는 도중에 예외가 발생한다면 어떻게 해야할까? 데이터베이스의 데이터들은 수정이 되기 전의 상태로 다시 되돌아가야 하고, 다시 수정 작업이 진행되어야 할 것이다. 이처럼 여러 작업을 진행하다가 문제가 생겼을 경우 이전 상태로 롤백하기 위해 사용되는 것이 Transaction(트랜잭션)이다. Transaction -> 더 이상 쪼갤 수 없는 최소 작업 단위 트랜잭션은 commit 으로 성공하거나 rollback 으로 실패 이후 취소되어야 한다. (YES or NO) 데이터베이스의 상태를 변경하는 작업 또는 한번에 수행되어야 하는 연산들을 의미한다. begin, commit 을 자동으로 수행해준다. 예외 발생 시 rollback 처리를 자동으로 해준다. 트랜..

article thumbnail
[항해 24일 차] 상속과 다형성
카테고리 없음 2022. 11. 30. 11:11

상속 상속은 이미 잘 개발된 클래스를 재사용해서 새로운 클래스를 만들기 때문에 중복되는 코드를 줄여 준다. 상속을 이용하면 부모 클래스의 수정으로 모든 자식 클래스들도 수정되는 효과를 가져오기 때문에 유지 보수 시간을 최소화 할 수 도 있다. ✏️ 클래스 상속 class 자식 클래스 extends 부모 클래스 { } 자바에서 상속으 다음과 같은 특징을 가지고 있다. 여러 개의 부모 클래스를 상속할 수 없다.(다중 상속 X) 부모 클래스에서 private 접근 제한을 갖는 필드와 메소드는 상속 대상에서 제외된다. ✏️ 부모 생성자 호출 자식 객체를 생성하면, 부모 생성자가 먼저 생성되고 그다음에 자식 객체가 생성된다. 부모 생성자는 자식 생성자의 맨 첫 줄에서 호출된다. 예를 들어, Car의 생성자가 명시..

article thumbnail
[항해 23일 차] RESTful API, PUT 과 PATCH 의 차이
카테고리 없음 2022. 11. 29. 23:25

HTTP Method 중에 PUT 과 PATCH 는 리소스의 업데이트를 담당한다. 리소스를 업데이트 한다는 점에서는 같은 역할을 하는 메소드처럼 보이지만 두개의 요청에는 약간의 차이가 있다. PUT : 리소스의 모든 것을 업데이트 한다. PATCH : 리소스의 일부를 업데이트 한다. 회원(member) : 1 이름(name) : 홍길동 나이(age) : 25 성별(gender) : M 이라는 데이터가 존재한다고 생각해보자. PUT 을 통해 아래와 같은 요청을 보내면, { name : "김형준" } ↓ 회원(member) : 1 이름(name) : 김형준 나이(age) : 성별(gender) : 보내지지 않은 값에 대해서는 null 값으로 변하는 것이다. PATCH 를 통해 아래와 같은 요청을 보내면, {..

article thumbnail
[항해 23일 차] 객체지향 3요소
카테고리 없음 2022. 11. 29. 14:50

객체 지향 객체 지향 모델링은 기능이 아닌 객체가 중심이 되며 "누가 어떤 일을 할 것인가?"가 핵심이 된다. 즉, 객체를 도출하고 각각의 역할을 정의해 나가는 것에 초점을 맞춘다. 객체 지향 프로그래밍의 특징 추상화(abstraction) 객체들의 공통적인 특징(기능, 속성)을 도출하는 것 객체지향적 관점에서는 클래스를 정의 하는 것을 추상화라고 할 수 있다. 캡슐화(encapsulation) 실제로 구현되는 부분을 외부에 드러나지 않도록 하여 정보를 은닉할 수 있다. 객체가 독립적으로 역할을 할 수 있도록 데이터와 기능을 하나로 묶어 관리하는 것 데이터를 보이지 않고 외부와 상호작용을 할 때는 메소드를 이용하여 통신을 한다. 보통 라이브러리로 만들어서 업그레이드해 사용할 수 있다. 상속성(inheri..

article thumbnail
[항해 23일 차] Controller, Service, Repository
카테고리 없음 2022. 11. 29. 13:10

MVC 패턴이란? MVC 패턴은 Model-View-Controller의 약자로서 개발을 할 때 3가지 형태로 역할을 나누어 개발하는 방법론을 의미한다. Model : 애플리케이션이 무엇을 할 것인지를 정의하는 부분이다. View : 사용자에게 시각적으로 보여주는 부분이다.(UI) Controller : Model이 데이터를 어떻게 처리할지 알려주는 역할을 한다. MVC 패턴을 사용하는 이유는 하나의 애플리케이션이 서로 분리되어 각자의 역할에만 집중할 수 있게끔하여 유지보수, 애플리케이션의 확장성, 유연성, 중복 코딩 문제점 해결이라는 효과를 가질 수 있기 때문이다. 위 사진은 웹서버가 클라이언트와 소통할 때 어떤 로직을 거쳐서 정보가 전달되는지에 대한 그림이다. 가장 위인 front-end에서 들어오는..

[WIL 항해 2주 차] 한 눈 팔지 않기.
카테고리 없음 2022. 11. 28. 02:49

잡다한 생각에 한 눈 팔지 말고, 앞으로 나아가자. 객체 지향 프로그래밍(OOP) 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 장점 코드 재사용이 용이 유지보수가 쉬움 대형 프로젝트에 적합 단점 처리 속도가 상대적으로 느림 객체가 많으면 용량이 비대해 질 수 있음 설계시 많은 시간과 노력이 필요 객체 지향 프로그래밍 키워드 5가지 클래스 + 인스턴스 추상화 캡슐화 상속 다형성 클래스와 인스턴스 클래스 : 어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성(attribute)과 행위(behavior)를 변수와 메서드로 정의한 것으..

article thumbnail
[항해 21일 차] JPA, 스프링 디자인 패턴, RESTful API
카테고리 없음 2022. 11. 28. 02:32

두려움은 진정한 용기의 적수가 될 수 없다. - 그라시안 금요일 토요일 정신도 없고 집중도 못 했던 이틀이 지나갔다. 날짜 개념이 무뎌지고 있다고 해야 하나, 이틀이나 블로그 못 쓴 것도 몰랐네... 정신 차리고 나아가자!! 아자아자 파이팅🙌 JPA 란? JPA는 자바 진영에서 ORM(object-Relational Mapping) 기술 표준으로 사용되는 인터페이스 모음이다. 즉, 실제적으로 구현된 것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. ORM(object-Relational Mapping) 우리가 일반적으로 알고 있는 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 매핑(연결)한다는 뜻이며, 기술적으로는 애플리케이션의 객체를 RDB 테이..

article thumbnail
[항해 18일 차] 생성자 & 메소드
카테고리 없음 2022. 11. 25. 02:33

너무 소심하고 까다롭게 자신의 행동을 고민하지 말라. 모든 인생은 실험이다. 더많이 실험할수록 더나아진다 – 랄프 왈도 에머슨 "6-3" 생성자 생성자(Constructor)는 new 연산자로 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당한다. 객체 초기화란 필드를 초기화하거나 메소드를 호출해서 객체를 사용할 준비를 하는 것을 말한다. 생성자를 실행하지 않고는 클래스로부터 객체를 만들 수 없다. new 연산자에 의해 생성자가 성공적으로 실행되면 힙(heap) 영역에 객체가 생성되고 객체의 번지가 리턴된다. 리턴된 객체의 번지는 클래스 변수에 저장된다. 기본 생성자 모든 클래스는 생성자가 반드시 존재하며, 생성자를 하나 이상 가질 수 있다. 클래스 내부에 생성자 선언을 생략했다면 컴파일러는 ..