분류 전체보기 212

02. 자바와 절차적/구조적 프로그래밍

이 글은 스터디 내에서 스프링 입문을 위한 자바 객체 지향의 원리와 이해를 읽고 정리한 글입니다. JDK : Java Development Kit / 자바 개발 도구 JRE: Java Runtime Environment / 자바 실행 환경 JVM: Java Virtual Machine / 자바 가상 기계 프로그램이 메모리를 사용하는 방식 -> 코드 실행 영역 / 데이터 저장 영역으로 나뉨 자바에서는 왜 goto를 사용하지 못하게 한 것일까? goto를 사용하게 되면 프로그램의 실행 순서가 인간이 이해하기에 너무 복잡해질 가능성이 있음. 함수는 객체 지향 언어에서라면 메서드와 같은 것 함수와 메서드는 다르지 않다. 다시 보는 main() 메서드: 메서드 스택 프레임 스태틱 영역 - 클래스들의 놀이터 스택 ..

01. 사람을 사랑한 기술

이 글은 스터디 내에서 스프링 입문을 위한 자바 객체 지향의 원리와 이해를 읽고 정리한 글입니다. C++ 언어 - 정말 인간적인 프로그래밍 방법론, 객체 지향 C++는 C에 객체 지향 개념을 도입함으로써 역사에 한 획을 그은 언어가 되었음. 자바 - 진정한 객체 지향 언어 자바에서는 클래스를 떠나 존재할 수 있는 것이 아무것도 없음. 자바와 C#은 가상 머신(Virtual Machine)을 지원함. -> Write Once Use Anywhere 자바의 경우 단 하나의 컴파일러만 필요하고, 기종별 JRE 세팅 필요 UML을 대하는 자세 UML은 의사소통의 도구이며, 표기 방법론일 뿐이다. CBD(Component Based Development) 컴포넌트 기반 개발: 애플리케이션을 통째로 개발하지 말고,..

ApplicationContext 정리 - 스프링 핵심원리 기본편

//스프링 컨테이너 생성 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext 를 스프링 컨테이너라 한다. ApplicationContext 는 인터페이스이다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다. 직전에 AppConfig 를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만든 것 이 클래스는 ApplicationContext 인터페이스의 구현체이다. 스프링 컨테이너의 생성 과정 1. 스프링 컨테이너 생성 2. 스프링 빈 등록 3. 스프링 빈 의존관계 설정 - ..

객체지향의 사실과 오해 부록A 정리

본 글은 스터디 내에서 객체지향의 사실과 오해 - 역할, 책임, 협력 관점에서 본 객체지향을 읽고 정리한 글입니다. 추상화 기법 분류와 인스턴스화: 분류는 객체의 구체적인 세부 사항을 숨기고 인스턴스 간에 공유하는 공통적인 특성을 기반으로 범주를 형성하는 과정, 분류의 역은 범주로부터 객체를 생성하는 인스턴스화 일반화와 특수화: 일반화는 범주 사이의 차이를 숨기고 범주 간에 공유하는 공통적인 특성 강조, 일반화의 역은 특수화 집합과 분해: 집합은 부분과 관련된 세부 사항을 숨기고 부분을 사용해서 전체를 형성하는 과정, 집합의 반대 과정은 전체를 부분으로 분리하는 분해 과정 개념과 범주 객체를 분류하고 범주로 묶는 것은 공통의 개념을 적용하는 것을 의미한다. 세상에 존재하는 객체에 개념을 적용하는 과정을 ..

객체지향의 사실과 오해 7장 정리

본 글은 스터디 내에서 객체지향의 사실과 오해 - 역할, 책임, 협력 관점에서 본 객체지향을 읽고 정리한 글입니다. ​ 개념 관점: 설계는 도메인 안에 존재하는 개념과 개념들 사이의 관계를 표현한다. 명세 관점: 인터페이스와 구현을 분리해야 한다. 구현 관점: 객체들이 책임을 수행하는 데 필요한 동작하는 코드를 작성하는 것이다. 포함 관계 또는 합성 관계: 예시) 메뉴판 타입과 메뉴 항목 타입 간의 관계 연관 관계: 한 타입의 인스턴스가 다른 타입의 인스턴스를 포함하지는 않지만, 서로 알고 있어야 할 경우 도메인 모델: 소프트웨어가 대상으로 하는 영역인 도메인을 단순화해서 표현한 모델 인터페이스 정리하기 객체가 수신한 메시지가 객체의 인터페이스를 결정한다. 객체가 어떤 메시지를 수신할 수 있다는 것은 그..

빈 생명주기 콜백 - 스프링 핵심원리 기본편

빈 생명주기 콜백 시작 데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료가 필요함. 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정하자. 이 NetworkClient는 애플리케이션 시작 시점에 connect()를 호출해서 연결을 맺어두어야 하고, 애플리케이션이 종료되면 disconnect()를 호출해서 연결을 끊어야 한다. package hello.core.lifecycle; public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호..

TIL 2022-03-07 / 스프링

[한 것] 자바 표준 ORM JPA 프로그래밍 1강 듣기 완료 [배운 것] JPA의 개요와 역사에 대해서 알게 되었음. JPA의 장점 1. 같은 트랜잭션 안에서는 같은 엔티티를 반환 - 약간의 조회 성능 향상 2. DB Isolation Level이 Read Commit이어도, 애플리케이션에서 Repeatable Read 보장 트랜잭션을 지원하는 쓰기 지연 - INSERT 1. 트랜잭션을 커밋할 때까지 INSERT SQL을 모음 2. JDBC BATCH SQL 기능을 사용해서 한번에 SQL 전송 [느낀점] 뭐든지 도전하는 것이 좋은 듯 하다. [할 것] 객체지향의 사실과 오해 7장 읽고 정리하기 토이 프로젝트 리팩토링 전문가를 위한 스프링 스터디 준비하기

💻 Backend/TIL 2022.03.07

객체지향의 사실과 오해 5장 정리

본 글은 스터디 내에서 객체지향의 사실과 오해 - 역할, 책임, 협력 관점에서 본 객체지향을 읽고 정리한 글입니다. 자율적인 책임 적절한 책임이 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다. 객체가 자율적이기 위해서는 객체에게 할당하는 책임의 수준 역시 자율적이어야 함. 너무 추상적인 책임 책임은 협력에 참여하는 의도를 명확하게 설명할 수 있는 수준 안에서 추상적이어야 한다. 어떻게가 아니라 무엇을 자율적인 책임의 특징은 어떻게 해야 하는가가 아니라 무엇을 해야 하는가를 설명한다는 것. 메시지 하나의 객체는 메시지를 전송함으써 다른 객체에 접근한다. 메시지: 메시지 이름, 인자의 조합 메시지 전송: 수신자, 메시지 이름, 인자의 조합 객체가 제공하는 메시지는 외부의 다른 ..

객체지향의 사실과 오해 4장 정리

본 글은 스터디 내에서 객체지향의 사실과 오해 - 역할, 책임, 협력 관점에서 본 객체지향을 읽고 정리한 글입니다. 객체지향 설계의 전체적인 품질을 결정하는 것은 개별 객체의 품질이 아니라 여러 객체들이 모여 이뤄내는 협력의 품질이다. 협력 협력은 다수의 연쇄적인 요청과 응답의 흐름으로 구성된다 책임 어떤 객체가 어떤 요청에 대해 대답해 줄 수 있거나 적절한 행동을 할 의무가 있는 경우 객체가 책임을 가진다고 말한다. 책임의 분류 객체의 책임은 객체가 무엇을 알고 있는가와 무엇을 할 수 있는가로 구성된다. 메시지 전송 : 객체가 다른 객체에게 주어진 책임을 수행하도록 요청을 보내는 것 책임이란 객체가 협력하기 위해 수행하는 행위를 상위 수준에서 개략적으로 서술 -> 책임 결정후 실제 메시지로 변환할 때는..

TIL / 2022-03-03 스프링

[한 것] 해커톤 서버 템플릿 일부 수정 토이 프로젝트 팔로우 부분 API 추가 및 리팩토링 객체지향의 사실과 오해 부분 4장 정리 [배운 것] https://stackoverflow.com/questions/18987292/spring-crudrepository-findbyinventoryidslistlong-inventoryidlist-equivalen Spring CrudRepository findByInventoryIds(List inventoryIdList) - equivalent to IN clause In Spring CrudRepository, do we have support for "IN clause" for a field? ie something similar to the follow..

💻 Backend/TIL 2022.03.04