1. 객체지향(OOP)이란?
OOP -> Object Oriented Programming
프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기적 상호작용을 통해 로직을 구성하는 프로그래밍 방법
1-1. 객체지향 프로그래밍의 장,단점은?
<장점>
1. 코드재사용 용이(남이 만든 클래스를 이용할수있고 상속을 통해 확장가능)
2. 유지보수 쉬움(수정해야 할 부분이 클래스 내부에 멤버 변수 혹은 메서드로 존재하기때문)
3. 대형프로젝트에 적합(클래스단위로 모듈화시켜 개발 할 수 있기때문에 업무분담이 쉬움)
<단점>
1. 처리속도가 상대적으로 느림
2. 객체가 많으면 용량이 커질 수 있음
3. 설계시 많은 시간과 노력이 필요함
1-2. 객체 지향적 설계 원칙
1. SRP(Single Responsibility Principle)
단일 책임 원칙 클래스는 단 하나의 책임을 가져야 하며 클래스를 변경하는 이유는 단 하나의 이유이어야 한다.
2. OCP(Open-Closed Principle)
개방-폐쇄 원칙 확장에는 열려 있어야 하고 변경에는 닫혀있어야 한다.
3. LSP(Liskov Substitution Principle)
리스코프 치환 원칙 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야한다.
4. ISP(Interface Segregation Principle)
인터페이스 분리 원칙 인터페이스는 그 인터페이스를 사용하는 클라이언트를 기준으로 분리해야한다.
5. DIP(Dependency Inversion Principle)
의존 역전 원칙 고수준 모듈은 저수준 모듈의 구현에 의존해서는 안된다.
1-3. 객체지향 프로그래밍 키워드
1. 추상화
불필요한 정보는 숨기고 중요한 정보만을 표현함으로써 공통의 속성이나 기능을 묶어 이름을 붙이는 것
2. 캡슐화
객체(data field)의 속성(method)과 행위를 하나로 묶고, 실제 구현 내용 일부를 감추어 은닉한다.
(데이터와, 데이터를 처리하는 행위를 묶고 외부에는 그 행위를 보여주지 않는 것)
3. 상속
부모클래스의 속성과 기능을 그대로 이어받아 사용할 수 있게하고 기능의 일부분을 변경해야 할 경우 상속받은 자식클래스에서 해당 기능만 다시 수정(정의)하여 사용할 수 있게 하는 것. 다중상속은 불가
4.다형성
하나의 변수명, 함수명 등이 상황에 따라 다른 의미로 해석될 수 있는 것
즉, 오버라이딩(Overriding), 오버로딩(Overloading)이 가능
*오버라이딩 : 부모 클래스의 메서드와 같은 이름, 매개변수를 재정의 하는 것
*오버로딩 : 같은 이름의 함수를 여러 개 정의하고, 매개변수의 타입과 개수를 다르게하여 매개변수에 따라 호출할수 있게 하는 것
2. 제네릭(generic)이란?
클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 지정하는것
(클래스 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것을 의미)
2-1. 컴파일 시 미리 타입 검사 수행할 때 장점?
1. 클래스나 메소드 내부에서 사용되는 객체 타입의 안정성을 높일 수 있음
2. 반환값에 대한 타입 변환 및 타입 검사에 들어가는 수고 줄일 수 있음
* 참고 - 제네릭 선언 및 생성
* 제네릭 선언 및 생성
| class MyArray<T> { T exemple; void setExemple(T exemple) { this.exemple= exemple; } T getExemple() { return exemple; } } |
위 예제에 사용된 'T'를 타입 변수라고하며, 임의의 참조형 타입을 의미하며 클래스, 메소드의 매개변수나 반환값으로도 사용가능합니다.
위와 같이 선언된 제네릭 클래스를 생성할 때에는 타입변수 자리에 사용할 실제 타입을 명시해야합니다.
| MyArray<Integer> myArr = new MyArray<Integer>(); |
2-2. 컬렉션 클래스에서 제네릭을 사용하는 이유는?
컬렉션 클래스에 저장되는 인스턴스 타입을 제한하여 런타임에 발생할 수 있는 잠재적인 모든 예외를 컴파일 타임에 잡아낼 수 있어서 사용
3. 데드락이 무엇이고, 해결방법은?
1. 데드락
둘 이상의 스레드가 lock을 획득하기 위해 기다리는데, 이 lock을 잡고 있는 스레드도 똑같이 다른 lock을 기다리면서 서로 블락상태에 놓이는 것
2. 해결방법
우선순위를 선정해 자원을 선점하도록 하는 것과 공유 불가능한 상호 배제 조건을 제거하는 것
4. JVM이 하는 역할?
* JVM(Java Virtual Machine)
자바 바이트코드를 실행하는 실행기

1. 자바 컴파일러가 .java 파일을 컴파일 하면, .class 라는 자바 바이트코드로 변환을 시켜줌. 이때 바이트 코드가 기계어가 아니기에 운영체제에서 바로 실행할 수 없음. 이때 운영체제가 이해할 수 있도록 해석해주는 것
2. 컴파일 -> 바이트 코드 -> 기계어 이런식으로 중간에 바이트 코드 과정이 있기에 속도, 메모리에서 단점이 될 수있음.
3. JVM을 사용하면 운영체제에 상관없이 같은 코드를 사용할 수 있음.
5. Spring 에서 AOP란?
AOP(Aspect Oriented Programming)
- 관점 지향 프로그래밍, 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어보고 그 관점을 기준으로 갂각 모듈화 하겠다는 것
- 스프링 빈에만 AOP적용 가능.
- 공통적으로 반복되는 중복코드를 해결할 수 있도록 실행시 비즈니스 로직의 앞과 뒤에서 원하는 지점에 해당 공통 관심사를 수행할 수 있게한다.( 코드를 수정하지 않으면서 공통 기능의 구현을 추가하는 것/ 컴파일,로드타임,런타임)
- aspect로 모듈화 하고 핵심적인 비즈니스 로직에서 분리하여 재사용하겠다는것이 AOP의 취지

6. 스프링 DI?
DI(Dependency Injection)
- 의존성 주입의 약자로 객체들 간의 의존성을 줄이기 위해 사용되는 스프링의 IOC컨테이너의 구체적 방식을 말함
- 필드주입, setter주입, 생성자 주입 3가지가 있음
- 개발코드 부분에서 객체를 생성하는 것이 아니라, 데이터 주입만 담당하는 별도의 공간에서 객체를 생성하고, 데이터 간의 의존성을 주입해 개발코드에서 가져다 쓰면서 의존성을 줄임.

7. IOC란?
IOC(Inversion of Control)
- 제어의 역전으로 인스턴스의 생성부터 소멸까지 개발자가 아닌 컨테이너가 대신 관리해주는 것(프레임워크)
- IOC컨테이너는 DI를 통해 주입시킨다.
- 인스턴스의 생성의 제어를 서블릿과 같은 bean을 관리해주는 컨테이너가 관리한다.
- ApplicationContext 혹은 BeanFactory (ApplicationContext 는 BeanFactory를 상속받음)
* 1. 객체생성 -> 2. 의존성 객체 주입 -> 3. 의존성 객체 메소드 호출
스프링이 모든 의존성 객체를 스프링 실행될때 마다 만들어주고 필요한 곳에 주입시켜줌으로 bean들은 싱글톤 패턴의 특징을 가짐
8. Bean이란?
Bean
- Spring IOC컨테이너가 관리하는 자바 객체
(new 연산자로 어떤 객체를 생성했을때 그 객체는 bean이 아님)
- 스프링 컨테이너가 생성한 객체들을 bean이라고 함.
* Component Scanning
- @Componont Annotation을 확용함.
- 개발자가 직접 작성한 class를 bean으로 등록해줄때 사용
9. 스프링 필터와 인터셉터의 차이점은?
실행되는 시점에서 차이가 있다.
필터는 dispatcherServlet으로 요청이 가기전 실행되고, 인터셉터는 Controller로 요청이 가기전에 실행됨.
*공통점 : 컨트롤러에 들어가기 전 작업을 처리하기 위해 사용된다.
10. Entity란 ?
Entity class
- 실제 데이터 베이스의 테이블과 1:1로 매핑되는 클래스로 DB의 테이블내에 존재하는 컬럼만을 속성으로 가져야한다.
11. Setter를 무분별하게 사용하면 안되는 이유?
엔티티를 작성할때 setter를 무분별하게 사용하면 entity의 값을 변경할 수 있으므로 객체의 일관성을 보장할 수 없음.
12. DTO와 VO의 차이점?
VO는 DTO와 동일한 개념이지만 read Only속성을 갖는다.
VO는 특정한 비즈니스 값을 담는 객체이고, DTO는 layer간 통신용도로 오고가는 객체이다.
13. Object이란?
Object
- 객체란 소프트웨어 세계에 구현할 대상
- 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고 다른것과 식별가능 한 것을 말함.
- 클래스의 인스턴스라고도 부른다. OOP관점에서 클래스의 타입으로 선언되어있을때 객체라고 부른다.
- 객체는 현실 세계에 가깝고, 인스턴스는 소프트웨어 세계에 가깝다.
14. 클래스란?
Class
- 연관되어 있는 변수와 메서드의 집합
- 객체를 만들어 내기 위한 설계도 혹은 틀
15. 인스턴스란?
Instance
- 객체를 소프트웨어에 실체화하면 그것을 인스턴스라 부름
- OOP의 관점에서 객체가 메모리에 할당되어 실제 사용될때 인스턴스라 부른다.
* 인스턴스화 된다..?
- 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 한다.
- 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다.
16. String, StringBuffer, StringBuiler의 차이점?
- String은 불면하다라는 특징을 가지고 있어서 수정을 하지 못하고 새로운 String인스턴스가 생성되고 전에 있던 String은 GC에 의해 사라지게된다.
- StringBuffer는 동기화 키워드를 지원하여 멀티쓰레드 환경에서 안전하다는 점(thread-safe)
참고로 String도 불변성을 가지기 때문에 마찬가지로 멀티쓰레드 환경에서의 안정성(thread-safe)를 가지고있음
-반대로 StringBuilder는 동기화를 지원하지 않기때문에 멀티쓰레드 환경에서 사용하는 것은 적합하지 않지만 동기화를 고려하지 않는 만큼 단일스레드 에서의 성능은 StringBuffer보다 뛰어남.
- StringBuilder와 StringBuffer는 가변의 속성을 가지고있다는 점이 String과의 큰 차이
- StringBuilder와 StringBuffer의 차이는 StringBuilder는 동기화를 보장하지 않지만 StringBuffer는 동기화를 보장함.
17. 프로세스란?
Process
- 운영체제로부터 시스템 자원을 할당받는 작업의 단위
- 하나의 프로세스는 크게 코드영역, 데이터영역, 스택영역, 힙 영역 4가지로 나뉨
18. 스레드란?
Thread
- 한 프로세스 내에서 동작되는 여러 실행의 흐름, 프로세스 하나에 자원을 공유하면서 일련의 과정을 여러 개를 동시에 실행 시킬 수 있음.
19. 멀티쓰레드란?
Multi Thread
- 하나의 프로세스를 다수의 실행단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 멀티쓰레딩이라고 함. (하나의 프로그램이 동시에 여러개의 일을 수행할 수 있도록 하는것)
- 장점 : 응답시간 감축, 자원소모 감소
- 단점 : 미묘한 시간차나 변수 공유함으로써 오류 발생 가능
20. 멀티프로세스란?
Multi Process
두개 이상 다수의 프로세서(CPU)가 협력적으로 하나 이상의 작업(Task)을 동시에 처리하는 것(병렬처리)
각 프로세스간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용.
- 장점 : 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않아 안정성이 높음
- 단점 : 멀티스레드보다 많은 메모리공간과 CPU시간을 차지하는 단점이 있음.
21. MVC란?
MVC패턴
- Model, View, Controller 세가지로 나뉘어 역할을 분할하여 처리
- 역할을 나누어 처리하기 때문에 서로의 결합도가 낮아져서 좋은 코드가 되며 유지보수하기에도 편리
* Model : 데이터, 정보들의 가공을 책임지는 컴포넌트를 말함.
* View : 사용자에게 보여지는 부분, 즉 유저 인터페이스를 의미
* Controller : 모델과 뷰 사이를 이어주는 브릿지역할을 의미.
22. JPA에서 Entity를 설계할때 주의점
1. Entity에서는 가급적 Setter를 사용하지 말 것
- entity가 영속성이 유지되는 도중 수정되면 그 값은 DB에 그대로 반영된다. Setter를 열어두고 값을 변경하는 경우 변경 포인트가 많아 유지보수가 어려워 질 수 있음.
2. 모든 연관관계는 지연로딩으로 설정
- 즉시로딩을 사용 할 경우, 어떤 SQL이 나갈지 추적하기 어려움.
3. 컬렉션은 필드에서 바로 초기화
4. Entity는 최대한 순수하게 유지해야 함.
* JPA(Java Persistence API)
- 현재 자바 진영의 ORM 기술 표준으로 인터페이스의 모음
- JPA 인터페이스를 구현한 대표적인 오픈소스가 Hibernate라고 할 수 있음.
- 애플리케이션과 JDBC사이에서 동작.

23. DTO를 사용하는 이유?
1. 순환참조 예방 가능
- JPA로 개발할 때 양방향 참조를 사용했다면 순환참조를 조심해야함.
2. 엔티티 내부 구현을 캡슐화 할 수 있음.
3. DB Layer와 View Layer 사이의 역할을 분리하기 위함.
24. N+1문제
N+1문제
연관 관계에서 발생하는 이슈로 연관 관계가 설정된 엔티티를 조회할 경우 조회된 데이터 개수(n) 만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 됨.
- lazy로딩에 의해서 한번에 모든 정보를 안가져와서 발생하는 문제로 fetch join을 사용해 해결가능
- sql 1번으로 100명의 회원을 조회했는데 조회된 결과 수 만큼 N번 SQL을 추가로 실행해야하는 상황.
회원별 주문한 상품을 조회하기위해 100번의 SQL을 추가로 실행해야하는 상황
25. 생성자 Injection을 사용하는 이유?
생성자 injection은 생성자로 객체를 생성하는 시점에 필요한 bean을 주입하여 순환참조를 해결할 수있다.
또한 필드를 final로 선언가능하며 DI컨테이너를 사용하지 않고도 테스트를 진행할 수 있음.
26. 자바 람다 관련 함수형 프로그래밍
- 함수형 프로그래밍은 명령형이 아닌 선언적 방식으로 구현되며 흐름 제어를 명시적으로 기술하지 않고 프로그램 로직이 표현된다는 것을 의미
- 람다는 함수의 구조로 되어있고 -> 와 같이 화살표 형태의 기호를 이용해 매개변수를 함수 바디로 전달하는 형태
27. 가비지 컬렉션이란?
C/C++언어와 달리 자바는 개발자가 명시적으로 객체를 해제할 필요가 없음. 사용하지 않는 객체를 메모리에서 삭제하는 작업을 Garbege Collection(GC)라고 부르며 JVM에서 수행함.
28. 자바 컬렉션, list, set, map에 대한 설명
List
- 순서가 있는 데이터의 집합으로 데이터 중복을 허용
Set
- 순서를 유지하지 않는 데이터의 집합으로 데이터 중복을 허용하지않음.
Map
- 키, 값으로 이루어진 데이터의 집합으로 순서는 유지되지 않으며, 키의 중복을 허용하지않으나 값의 중복은 허용됨.
29. 스프링의 DI에 대해 자세한 설명, 생성자injection이 좋은이유
- 필드주입을 사용하게 되면 배터리 일체형 핸드폰과 같다고 볼수있음.
반면에 setter와 생성자 주입은 분리형으로 볼 수 있어 조금 더 유연
30. 테스트 코드란?
- 단위테스트를 사용하면 개발 초기 문제를 발견할 수 있는 장점이 있음.
31. ORM이란?
ORM(Object Relational Mapping)
- 객체와 DB테이블이 매핑을 이루는 것을 말함.( 객체가 테이블이 되도록 매핑시켜주는 역할)
- Sql Query가 아닌 직관적인 코드(매서드)로서 데이터를 조직할 수 있음.
32. JPA 장단점
장점
- sql반복작업이 없어져 생산성 향상
- 테이블컬럼 하나를 바꿀때 Mybatis에서는 관련 DAO 파라미터, 결과sql등 모두 확인하여 수정해야하는데 JPA는 대신해줌.
단점
- 직접sql호출 하는것보다 성능이 떨어질 수 있음.
- 복잡한 통계 분석쿼리를 메서드 호출로 처리하기 힘들어 세밀함이 떨어짐.
33. 생성자 주입 사용시 장점
1. 순환참조 방지
- 순환참조 : a->b, b->a를 참조하는 경우 발생하는 문제
- 생성자 주입은 먼저 빈을 생성하지 않고 주입하려는 빈을 찾는다. 그래서 실행시 순환참조 에러가 뜨면서 찾을 수 있다.
2. final선언 가능
- 생성자 주입 시, 의존성 주입이 클래스 인스턴스화 중에 시작이 되므로 final선언이 가능함. 따라서 객체를 변경 불가능 하게 할 수 있음.
3. 테스트 코드 작성이 용이
- 스프링 컨테이너 도움 없이 테스트 코드를 더 편리하게 작성 가능함.
34. MVC 진행방식
1. 클라이언트로 부터 요청이 들어오면 dispatcherServlet이 가장먼저 받음.
2. HandlerMapping이 요청 URL과 매핑되는 Controller 검색 후 리턴
3. HandlerAdapter에서 알맞은 Controller 처리요청
4. ViewResolver에서 Controller가 리턴한 view 검색 후 view를 클라이언트로 보냄

35. 프록시란?
proxy
- 타겟을 감싸서 타겟의 요청을 대신받아주는 랩핑 오브젝트
- 호출자(클라이언트)에서 타겟을 호출하면 타겟을 감싸는 프록시가 호출되어, 타겟 메소드 실행 전 선처리, 타겟 메소드 실행 후, 후처리를 실행하도록 구성.

36. 필터에 대한 동작 방식
Interceptor와 Filter는 Servlet단위에서 실행됨.
반면 AOP는 메소드 앞에 proxy패턴의 형태로 실행.

* Filter
- Dispatcher Servlet에 요청이 전달되기 전/후에 URL 패턴에 맞는 모든 요청에 대해 부가 작업을 처리 할 수있는 기능을 제공.
- init, doFilter, destroy 메서드 제공
* Interceptor
- Spring이 제공하는 기술로, Dispatcher Servlet이 컨트롤러를 호출 하기 전과 후에 요청과 응답을 참조하거나 가공할수 있는 기능을 제공.
- doHandle, postHandle, afterCompletion 메서드 제공

37. Spring Security란?
Spring Security
- 스프링 기반의 어플리케이션의 보안(인증과 권한)을 담당하는 프레임워크
- 세션-쿠키 방식으로 인증

38. JWT란?
JWT(JSON WEB TOKEN)
- 인증에 필요한 정보들을 Token에 담아 암호화시켜 사용하는 인터넷 표준 인증방식
- 각각의 구성요소가 점(.)으로 구분되어 있으며 구성요소는 Header, Payload, Signature가 있음
- 확장성에 큰 강점이 있음.
- 세션을 사용할 경우 서버를 확장할 때마다 각 서버에 세션정보를 저장하게 됨. 이때 특정 서버에서 로그인 인증을 받을 때 다른서버에서는 로그인을 했는지 알수없는 단점이 있다.

39. OAuth2란?
OAuth(OpenID Authentication)
- 타사의 사이트에 대한 접근 권한을 얻고 그 권한을 이용하여 개발할 수 있도록 도와주는 프레임워크
- OAuth2로그인을 사용한다면 'UsernamePasswordAuthenticationFilter' 대신 'OAuth2LoginAuthenticationFilter'가 호출되게 해야함.

40. 영속성 컨텍스트란?
영속성 컨텍스트
- 엔티티를 영구 저장하는 환경, EntityManager는 영속성 컨텍스트에 Entity를 보관하고 관리
장점
- 1차캐시에서 데이터를 먼저 찾고 없으면 DB에서 찾음
- 동일성 보장
- 트랜잭션을 커밋하기 직전까지 쿼리를 날리지 않고 영속성 컨텍스트에 보관함.
- 스냅샷을 이용하여 영속성 컨텍스트에 저장된 엔티티는 변경이 일어나면 자동으로 DB에 저장됨.
- 실제 객체 대신 프록시 객체를 로딩해두고 해당객체를 실제 사용할 때 영속성 컨텍스트를 통해 불러오는 방법(지연로딩)
41. Servlet Dispatcher
Servlet Dispatcher
- Controller로 들어가기 전 맨 앞에서 모든 요청을 받아서 해당하는 컨트롤러로 보내주는 역할을 함.
42. 트랜잭션이란?
Transation
- 데이터베이스 상태를 변화시키기 위해서 수행하는 작업의 단위
- 원자성 : DB에 모두 반영되거나, 전혀 반영되지 않아야한다.
일관성 : 트랜잭션의 작업 처리 결과가 항상 일관성 있어야 한다.
독립성 : 어떤 하나의 트랜잭션이라도 다른 트랜잭션 연산에 끼어들 수 없음.
지속성 : 트랜잭션이 성공적으로 완료된 경우, 결과는 영구적으로 반영 되어야 함.
43. POJO란?
POJO(Plain Old Java Object)
- 객체지향 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말함.
- IOC/DI, AOP는POJO프로그래밍을 손쉽게할 수 있도록 지원하는 기술
장점
- 깔끔한 코드, 간편한 테스트

References
https://wookcode.tistory.com/99#recentComments
[면접] Java/Spring 면접 질문 정리
면접시 나올만한 질문 객체지향이란? 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍
wookcode.tistory.com
https://jeong-pro.tistory.com/95
객체 지향 프로그래밍이 뭔가요? (꼬리에 꼬리를 무는 질문 1순위, 그놈의 OOP)
객체 지향 프로그래밍(Object Oriented Programming) 여러 소프트웨어 관련 IT기업 신입사원 기술면접에서 면접자들 긴장을 풀어줄 겸 워밍업으로 자주 나오는 질문이다. "객체 지향 프로그래밍에 대해
jeong-pro.tistory.com
캡슐화란 무엇인가? 어떤 이점이 있는가?
객체지향을 공부하면 처음부터 귀에 못이 박히도록 듣는 단어가 있다. 바로 캡슐화다. 캡슐화가 도대체 뭐고, 이게 왜 중요한 요소일까? 일단 위키를 보도록 하자 캡슐화(영어: encapsulation)는 객
bperhaps.tistory.com
https://steady-coding.tistory.com/305
JVM 메모리 구조란? (JAVA)
안녕하세요? 코딩 중독입니다. 오늘은 JVM 메모리 구조에 대해 알아보겠습니다. JVM이란? JVM 메모리 구조를 설명하기 전에 JVM이 무엇인지 알아야 합니다. JVM은 Java Virtual Machine의 약자로, 자바 가상
steady-coding.tistory.com
https://chanhuiseok.github.io/posts/spring-4/
[Spring] Spring의 IoC(Inversion of Control)과 Bean
컴퓨터/IT/알고리즘 정리 블로그
chanhuiseok.github.io
멀티 프로세스(Multi Process)와 멀티 스레드(Multi Thread)
멀티 프로세스와 멀티 스레드의 차이
wooody92.github.io
https://gmlwjd9405.github.io/2019/08/04/what-is-jpa.html
[JPA] JPA란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
https://gmlwjd9405.github.io/2019/02/01/orm.html
[DB] ORM이란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
https://brunch.co.kr/@jinyoungchoi95/1
JWT(Json Web Token) 알아가기
jwt가 생겨난 이유부터 jwt의 실제 구조까지 | 사실 꾸준히 작성하고 싶었던 글이지만 JWT를 제대로 개념을 정리하고 구현을 진행해본 적이 없었는데 리얼월드 프로젝트를 진행하면서 JWT에 대한
brunch.co.kr
[Spring] POJO란?
스프링의 본질은 엔터프라이즈 서비스 기능을 POJO에 제공하는 것이다 - Professional Spring Framework, 2005 🌱 POJO란? Plain Old Java Object, 단순한 자바 오브젝트 POJO란, 객체 지향적인 원리에 충실하면서..
doing7.tistory.com