전체 글

Amor DevFati(아모르 개발파티)

    레이어드 아키텍처와 Controller - Service - Repository

    레이어드 아키텍처와 Controller - Service - Repository

    일단 이렇게 3 계층으로 나눠진 것은 레이어드 아키텍처(Layered Architecture) 패턴에 따라 수평으로 나눠 관리하는 것이다. 레이어드 아키텍처란 : 애플리케이션의 컴포넌트를 유사 관심사를 기준으로 레이어로 묶어 수평적으로 구성한 구조를 의미 Controller - 프리젠테이션 계층 유저 인터페이스 (UI) 계층이라고도 함 애플리케이션의 최상단 계층으로 클라이언트의 요청을 해석하고 응답하는 역할 UI 나 API를 제공 클라이언트와의 접점 별도의 비즈니스 로직을 포함하고 있지 않으므로 비즈니스 계층을 요청하고 위임하고 받은 결과를 응답하는 역할을 수행 Service - 비즈니스 계층 애플리케이션이 제공하는 기능을 정의하고 세부 작업을 수행하는 도메인 객체를 통해 업무를 위임하는 역할을 수행 핵..

    영속성 컨텍스트란

    영속성 컨텍스트란? 엔티티를 영구 저장하는 환경 이라는 뜻 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. em.persist(member); 엔티티 매니저를 사용해 회원 엔티티를 영속성 컨텍스트에 저장한다는 의미! 영속성 컨텍스트의 특징 엔티티 매니저를 생성할 때 하나 만들어진다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다.

    IoC 와 DI

    IoC (Inversion of Control) 제어의 역전 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전 이라 한다. DI (Dependency Injection) DI는 IoC를 실현하는 수단 애플리케이션 실행 시점(런타임) 에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결 되는 것을 의존관계 주입이라고 한다.

    API 란 그리고 REST API 란

    API 란 Appilication Programming Interface의 줄임말 두 소프트웨어 구성 요소가 서로 통신할 수 있게 하는 메커니즘 애플리케이션이라는 단어는 고유한 기능을 가진 모든 소프트웨어를 나타냄 인터페이스는 두 애플리케이션 간의 서비스 계약 이 계약은 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의함 REST API 란 REST는 Representational State Transfer 의 줄임말 REST는 클라이언트가 서버 데이터에 액세는하는 데 사용할 수 있는 GET, POST, PUT, DELETE 등 의 함수 집합을 정의 주된 특징은 무상태(Stateless). 서버가 요청 간에 클라이언트 데이터를 저장하지 않음을 의미 서버에 대한 클라이언트 요청은 URL과..

    오버라이딩에 @Override 어노테이션이 필요한가

    오버라이딩에 @Override 어노테이션이 필요한가

    오버라이딩에 @Override 어노테이션이 필요한지 여부를 알아보겠다. 실행은 된다. 하지만 같은 이름의 메서드가 어떤 동작을 할지 예상하기가 어려워져서 실수를 유발할 수 있다. 어노테이션을 붙이면 아래와 같이 잘못된 Override 메서드에는 IDE에서 경고를 준다. 오버라이딩된 메서드 수정 방지 실수로 overriding 메서드임을 인지하지 못하고 메서드의 시그니처를 수정하는 경우 등을 방지 할 수 있다.

    인터페이스가 가지는 객체지향 특징

    인터페이스가 가지는 객체지향 특징으로는 아래와 같이 3가지를 들 수 있다. 1. 추상화 2. 상속 3. 다형성 이유: 1. 추상메서드를 가지고 있어 인터페이스를 구현함으로써 추상화가 가능하다 2. 인터페이스는 상속이 가능한데 추상클래스보다도 유연하게 다중상속 또한 가능하다. 3. 다형성을 구현하는데 인터페이스가 주로 활용된다.

    객체 지향의 특징 4가지

    객체 지향의 특징 4가지

    캡슐화 (Encapsulation) 클래스 안에 서로 연관있는 속성과 기능들을 하나의 캡슐(capsule)로 만들어 데이터를 외부로부터 보호하는 것 다른 패키지 상속(Inheritance) 기존의 클래스를 재활용하여 새로운 클래스를 작성하는 것 추상화 객체의 공통적인 속성과 기능을 추출하여 정의하는 것 다형성 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질 가장 중요하게 생각하는 것은 다형성 그 이유는 객체지향 프로그래밍을 함으로써 프로그램을 유연하고 변경이 용이하게 만들기 때문. 참조: https://www.codestates.com/blog/content/%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8..

    프로그래머스 OX 퀴즈

    https://school.programmers.co.kr/learn/courses/30/lessons/120907 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr public String[] solution1(String[] quiz) { String[] answer = new String[quiz.length]; int i = 0; for (String s : quiz) { String[] s1 = s.split(" "); if (calculate(Integer.parseInt(s1[0]), s1[1], Integer.parseInt(s1[2])) ==..

    프로그래머스 n의 배수 고르기

    https://school.programmers.co.kr/learn/courses/30/lessons/120905 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr public int[] solution(int n, int[] numlist) { return Arrays.stream(numlist).filter(i -> i % n == 0).toArray(); }

    프로그래머스 A로 B만들기

    https://school.programmers.co.kr/learn/courses/30/lessons/120886 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr public int solution1(String before, String after) { int answer = 0; char[] arr = after.toCharArray(); int[] count1 = new int[arr.length]; int[] count2 = new int[arr.length]; for (int i = 0; i < before.length(); i++) { char..