BackEnd 8

[JPA] 프록시(Proxy)

프록시란? 엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아니다. 그럴 때 JPA는 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 제공하는데 이것을 지연 로딩이라 한다. 그런데 지연 로딩 기능을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이것을 프록시 객체라고 한다. 프록시 기초 JPA에서 식별자로 엔티티 하나를 조회할 때는 EntityManager.find()를 사용한다. 이 메소드는 영속성 컨텍스트에 엔티티가 없으면 데이터베이스를 조회한다. Member member = em.find(Member.class, "member1"); 이렇게 엔티티를 직접 조회하면 조회한 엔티티를 실제 사용하든 사용하지 않든 데이터베이스를 조회하..

BackEnd/JPA 2023.01.09

[Spring] AOP란?

AOP(Aspect Oriented Programming)란? AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 부른다. 핵심적인 기능에 부여되는 부가 기능을 효과적으로 모듈화하는 방법을 찾다가, 어드바이스와 포인트컷을 결합한 어드바이스가 발전하여 AOP가 만들어지게 되었다. 이렇게 애플리케이션의 핵심적인 기능에서 부가적인 기능을 분리하여 독특한 모듈화로 만들고 설계하는 방법을 AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)라고 부른다. 가로 영역의 공통된 부분을 잘라냈다고 하여, 크로스 컷팅(Cross-Cutting)이라고 부르기도 한다. AOP를 이해하기 위해서 우선 핵심적인 어드바이스와 포인트컷을 이해해야한다. 어드바이스..

BackEnd/Spring 2022.07.28

[Server] 서블릿(Servlet)

서블릿(Servlet)이란? 서블릿이란 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술이다. 서블릿(Servlet) 특징 클라이언트의 요청(Request)에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트 HTML을 사용하여 응답(Response)한다. JAVA 스레드를 이용하여 동작한다. MVC 패턴에서 컨트롤러로 이용된다. HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpSevlet 클래스를 상속받는다. 서블릿(Servlet 동작 방식) 1. 사용자(클라이언트)가 URL을 입력하면 HTTP Request가 서블릿 컨테이너로 전송한다. 2. 요청을 받은 서블릿 컨테이너는 HttpServletRequest, ..

BackEnd/Server 2022.07.16

[Spring] POJO란?

POJO(Plain Java Old Object)란? POJO란, 단순한 자바 오브젝트를 말한다. 다른 클래스나 인터페이스를 상속 받아 메서드가 추가된 클래스가 아닌 일반적으로 우리가 알고있는 getter, setter 같이 기본적인 기능만 가진 자바 객체를 말한다. 객체 지향적인 원리에 충실하면서 환경과 기술에 종속되지 않고 필요에 따라 재활용될 수 있는 방식으로 설계된 오브젝트를 말한다. 그러한 POJO에 애플리케이션의 핵심로직과 기능을 담아 설계하고 개발하는 방법을 POJO 프로그래밍이라고 할 수 있다. POJO의 조건 1. 특정 규약에 종속되지 않는다. 2. 특정 환경에 종속되지 않는다. 3. 단일 책임 원칙을 지키는 클래스 POJO의 장점 특정 규약에 종속되지 않아 객체지향 설계를 할 수 있게 ..

BackEnd/Spring 2022.06.19

[Spring] DAO, DTO, VO란?

DAO(Data Access Object)? DAO는 DB data에 접근하기 위한 객체로 직접 DB에 접근하여 데이터를 삽입, 삭제, 조회 등 조작할 수 있는 기능 수행. DB에 접근하기 위한 로직 & 비지니스 로직을 분리하기 위해 사용합니다. DTO(Data Transfer Object)? DTO는 계층 간(Controller, View, Business Layer) 데이터 교환을 하기 위해 사용하는 객체입니다. DTO는 로직을 가지지 않는 순수한 데이터 객체(getter & setter만 가진 클래스)입니다. DTO는 데이터 전송(이동) 객체라는 의미를 가지고 있고, 주로 비동기 처리를 할 때 사용합니다. DB의 데이터를 Service나 Controller 등으로 보낼 때 사용하는 객체를 말합니다...

BackEnd/Spring 2022.06.10

[Spring] IoC와 DI란?

IOC(Inversion of Control)란? IOC란 "제어의 역전" 이라는 의미로, 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부(IOC 컨테이너)에서 결정되는 것을 의미한다. 즉, 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드 유지보수를 편리하게 할 수 있게 한다. 스프링 컨테이너에서는 오브젝트(빈)의 생성과 의존 관계 설정, 사용, 제거 등의 작업을 애플리케이션 코드 대신 스프링 컨테이너가 담당한다. 스프링 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다. 스프링 컨테이너 = IOC 컨테이너 Repository 객체가 있을때 과거에는 아래와 같이 개발자가 직접 제어했다. 하지만 현재 제..

BackEnd/Spring 2022.06.09

[Spring] 스프링(Spring)이란?

스프링(Spring)? 스프링이란 자바 기반의 웹 어플리케이션을 만들 수 있는 프레임워크입니다. 스프링의 특징 - Spring은 자바 객체와 라이브러리들을 관리해주며, 톰캣과 같은 WAS가 내장되어 있어 자바 웹 어플리케이션을 구동할 수 있습니다. - Spring은 경량 컨테이너로 자바 객체를 직접 관리해주며, 객체의 생성 및 소멸과 같은 생명 주기(Life cycle)을 관리해줍니다. - Spring의 가장 큰 특징으로 IOC와 DI가 있습니다. 스프링 부트(SpringBoot)? 스프링부트는 스프링을 더 쉽게 이용하기 위한 도구라고 볼 수 있습니다. 스프링 MVC를 사용하기 위해서는 필요한 프레임워크들과 라이브러리를 정확하게 설정해야 합니다. 또한, 기본적인 처리를 구축하기 위해 MVC의 각 코드를 ..

BackEnd/Spring 2022.06.09

[서버] 서버란?

서버란? 서버란 네트워크의 '클라이언트'에게 여러 가지 서비스를 제공하는 컴퓨터입니다. 서버는 클라이언트로부터 리퀘스트(요청) 받아야 비로소 처리를 시작하여 서비스를 제공합니다. 접근하기 쉽게 웹 서버에 적용시키면, 웹 브라우저가 클라이언트고 서버는 웹 사이트(를 구성하는 파일)가 저장되어 있는 컴퓨터(웹 서버)입니다. "서버의 처리는 클라이언트의 요청으로 시작된다" ① 클라이언트가 서버에게 어떤 서비스를 요청한다. ② 서버는 요청에 응답하여 처리를 수행한다. ③ 서버는 처리 결과를 클라이언트에게 반환한다. ④ 클라이언트는 처리 결과를 받는다. "웹 서비스에 적용" ① 웹 브라우저가 웹 서버에게 'OO 사이트의 데이터를 달라'고 요청한다. ② 웹 서버는 OO 사이트의 파일을 찾는다. ③ 웹 서버는 OO ..

BackEnd/Server 2022.06.02