객체지향 프로그래밍 (OOP) 에 기반
1. 서버 개발 시 크게 3계층으로 나누어 구현 가능 (Controller, Service, Repository)
2. 클래스 1개를 선언하여 재사용 가능
3. 모듈화가 잘 되어 있어, 필요한 모듈들만 레고처럼 조립하여 사용 가능
ex) 스프링 시큐리티, 스프링 타임리프 등
DI (의존성 주입) 지원
비즈니스 로직에 집중하게 해 줌
그 외 가능한 답변들
AOP 지원
테스트 코드 작성 수월함
20여년 동안 발전한 프레임워크
메서드 영역 : static 변수, 전역변수, 코드에서 사용되는 Class 정보 등이 올라간다. 코드에서 사용되는 class들을 로더로 읽어 클래스별로 런타임 필드데이터, 메서드 데이터 등을 분류해 저장한다.
스택(Stack) : 지역변수, 함수(메서드) 등이 할당되는 LIFO(Last In First Out) 방식의 메모리
힙(Heap) : new 연산자를 통한 동작할당된 객체들이 저장되며, 가비지 컬렉션에 의해 메모리가 관리되어 진다.
ORM, JPA, Spring Data JPA 를 구분해서 설명해 보세요.
ORM (Object-Relational Mapping)
◦ 서버의 프로그래밍 언어와 DB 언어 중간에서 통역사 역할을 해 줌
▪ Object: **"객체"**지향 언어 (자바, 파이썬)
▪ Relational: "관계형" 데이터베이스 (H2, MySQL)
JPA (Java Persistence API)
◦ 자바 ORM 기술에 대한 표준 명세
◦ 즉, 자바 언어를 사용해 ORM 을 사용 가능하도록 만든 표준 명세
Hibernate
◦ JPA 가 표준 명세라고 한다면, 이를 실제 구현한 프레임워크 중 사실상 표준
◦ 스프링부트에서 하이버네이트 사용중
Spring Data JPA
◦ JPA 를 편리하게 사용하기 위해, 스프링에서 JPA 를 Wrapping
◦ 스프링 개발자들이 JPA 를 사용할 때 필수적으로 생성해야 하나, 예상 가능하고 반복적인 코드들 → Spring Data JPA 가 대신 작성
◦ Repostiory 인터페이스만 작성하면, 필요한 구현은 스프링이 대신 알아서 척척!
제너릭이란 무엇인가요?
자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있습니다.
다형성은 상속, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나입니다.
Overloading(오버로딩)
같은 이름의 메소드를 여러개 정의하는 것
매개변수의 타입이 다르거나 개수가 달라야 한다.
*return type과 접근 제어자는 영향을 주지 않음.
Overriding(오버라이딩)
상속에서 나온 개념
상위 클래스(부모 클래스)의 메소드를 하위 클래스(자식 클래스)에서 재정의.
Abstract
Interface vs Abstract
공통점
차이점
컴퓨터 프로그래밍의 패러다임의 하나다.
객체지향 프로그래밍(OOP)은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된단위,
즉 “객체”들의 모임으로 파악하고자 하는 것. 각각의 객체는 메시지를 주고 받고, 테이타를 처리할 수 있음.
① 캡슐화(Encapsulation): 하나의 문제 해결을 위한 data와 method를 한 단위로 묶는 것으로서, 클래스 내부 정의에
대해 외부에서 볼 수 없도록 함이 특징(은닉화)
② 추상화(Abstraction) : 객체(Object)의 자세한 성질을 무시하고(숨기고) 그들의 일반적인 성질을 나타낸다는 것.
일반적으로 클래스는 클래스로 표현할 서브클래스(또는 객체)의 공통적인 성질과 행위를 일반화해 디자인되며
그로부터 생성된 객체는 자신의 고유한 성질을 갖게 됨.
③ 다형성(Polymorphism) : 다형성이란 같은 메시지에 대해 클래스에 따라 다른 행위를 하는 특성.
일반적으로 같은 이름을 갖는 method에 대해 인자(Argument) 개수와 Data Type에 따라 수행되는
행위가 달라짐을 의미. 다형성을 통해 사용자는 약속된 인터페이스를 따르는 서로 다른 객체들를 같은 방식으로 사용할
수 있게 됨.
④ 상속(inheritance) : 기존에 있던 클래스(즉, 기존의 클래스로부터 상속받은)를 바탕으로 다른 특성을 추가해
새로운 클래스를 만들 수 있음.
⑤ 인스턴스(Instance) : 인스턴스는 추상화 개념 또는 클래스 객체, 컴퓨터 프로세스 등과 같은 템플릿(무엇인가를
만들 때 안내 역할 하는 데 사용되는 형식, 꼴, 틀 또는 모형 등을 의미)이 실제로 구현된 것.