no image
AOP
AOP 객체 지향 프로그래밍을 보완하는 프로그램 구조에 대한 또 다른 사고방식입니다. OOP에서 모듈화의 핵심 단위는 클래스인 반면, AOP에서 모듈화의 단위는 관점입니다. Spring의 핵심 구성 요소 중 하나는 AOP 프레임워크입니다. Spring IoC 컨테이너가 AOP에 의존하지 않는다는 점에서 유의할 필요가 있습니다. 즉 Spring은 AOP를 사용하지 않고 IOC 컨테이너를 사용할 수 있습니다. AOP는 Spring IoC를 보완하여 매우 유능한 미들웨어 솔루션을 제공합니다. AOP는 핵심 로직에서 공통 관심사를 분리하여 모듈화 하는 방법을 제공합니다. 이로써 코드 중복을 줄이고, 유지보수성과 확장성을 향상시킬 수 있습니다. Aspect는 애플리케이션 전체에 걸쳐 흩어진 관심사를 하나의 모듈로..
2023.11.30
no image
Parameter
Parameter 메서드나 함수 등에서 사용되는 인자를 받는 변수를 가리킵니다. 함수를 호출할 때 매개변수를 지정하면, 해당 함수가 실행될 때 그 값을 받아들여 사용할 수 있습니다. 인자(Parameter) 함수나 메서드를 호출할 때 전달되는 값을 가리킵니다. 함수 정의에서 매개변수로 받은 값을 의미합니다. 인자 목록(Argument List) 함수를 호출할 때 전달되는 실제 값들의 목록입니다. 이 값들이 함수에 정의된 매개변수에 대응됩니다. 컨트롤러의 메소드 매개변수 HTTP 요청에서 받은 데이터나 쿼리 파라미터를 처리하기 위해 @RequestParam, @PathVariable, @RequestBody 등의 어노테이션을 이용하여 매개변수를 정의합니다. @RestController public clas..
2023.11.28
no image
RequestParam
RequestParam Spring 프레임워크에서 @RequestParm은 Http 요청에서 파라미터를 컨트롤러 메서드의 매개변수로 가져오는 데 사용되는 기능입니다. (단일 HTTP요청 파라미터 메서드를 파라미터에 넣어주는 애노테이션) 예시 @GetMapping("/example") public String exampleMethod(@RequestParam("paramName") String parameter) { // paramName으로 전달된 값을 parameter 변수에 받아옵니다. // 이 값을 사용하여 로직을 처리할 수 있습니다. return "result"; } @RequestParam("paramName") 은 요청에서 paramName이라는 이름의 파라미터를 가져와서 parameter라는..
2023.11.27
no image
서블릿 컨테이너
서블릿??? 자바 웹 애플리케이션에서 클라이언트의 요청을 처리하고 응답을 생성하는 자바 클래스이며 Java Servelet API를 구현합니다. 또한 자바 웹 애플리케이션의 핵심 요소로, HTTP 요청을 처리하고 동적인 컨텐츠를 생성하는 데 사용하고 서블릿을 활용해서 웹 애프리케이션을 구축하면 동적이고 유연한 기능을 구현 가능 합니다. 서블릿 특징 자바로 작성되어 JVM 위에서 실행되므로 특정 플랫폼에 종속되지 않고 여러 운영체제에서 동작할 수 있습니다. 웹 애플리케이션 클라이언트 요청을 처리하고, 동적인 HTML페이지 만들 때나 RESTful API 구현에 사용합니다. 서블릿 컨테이너에 의해 관리되며, 초기화, 요청 처리, 소멸과 같은 생명 주기를 가집니다. 서블릿도 객체 지향이며 재사용 가능한 컴포넌..
2023.11.20
no image
Thymeleaf
Thymeleaf 스프링 프레임워크에서 Thymeleaf를 사용하는 방법은 HTML 기반의 뷰 템플릿을 만들고, 서버에서 데이터를 전달하여 동적으로 렌더링하는 데 있습니다. Thymeleaf는 스프링과 함께 사용되어 서버 측에서 데이터를 효과적으로 렌더링하고 동적인 웹 페이지를 생성하는데 활용되며 Thymeleaf를 이용하여 유연하게 작성 가능합니다. Thymeleaf특징 HTML 문서의 구조를 유지하면서 템플릿을 작성할 수 있습니다. HTML 태그 안에 표현식을 사용하여 동적으로 데이터를 표시, 조작이 가능합니다. 템플릿을 재사용하고 여러 페이지에서 중복 코드 줄이는 데 도움이 됩니다. Thymeleaf 사용방법 의존성 추가 먼저 Maven이나 Gradle과 같은 빌드 도구를 사용하여 프로젝트에 Thy..
2023.11.16
no image
지연 로딩 & 즉시 로딩
지연로딩 프로그램에서 데이터를 필요로 할 때 데이터를 불러오지 않고 해당 데이터가 실제로 필요한 순간에 로딩하는 방식입니다. 예를 들어보자면 엔티티 A가 다른 엔티티 B와 일대다 관계를 갖고 있다고 가정하면 A를 조회할 때 B 엔티티 들은 처음에 데이터베이스에서 가져오지 않고 A에서 B에 접근할 때 실제로 필요한 시점에 데이터베이스에서 로딩됩니다 지연로딩 전 @Entity(name = "Member") @Getter public class Member extends TimeStamp{ @ManyToOne @JoinColumn(name = "team_id") private Team team; } 지연로딩 후 (FetchType.LAZY) @Entity(name = "Member") @Getter publi..
2023.11.15
no image
@Entity와 @Table의 차이
@Entity와 @Table은 명확하게 차이점을 명확하게 하기 위해 기록합니다. 간략 설명 @Entity는 엔티티 클래스를 정의 @Table은 해당 엔티티 클래스와 데이터베이스 테이블 간의 매핑을 세부적으로 제어할 때 사용 @Entity JPA에서 사용하며 Java 클래스를 영속성을 가진 엔티티로 정의하는데 사용합니다. 엔티티 클래스에 @Entitiy 지정하면 해당 클래스가 데이터베이스 테이블과 매핑되는 엔티티로 간주됩니다. 이 클래스의 객체는 데이터베이스에서 저장, 검색이 가능해집니다. @Entity(name="user") public class User{ } //DB에 user로 테이블이 생성되고 EntityManger //쿼리를 사용하는 경우 createQuert("SELECT ....FROM us..
2023.11.14
no image
디자인 패턴
디자인 패턴 실제 개발 현장에서 비즈니스 요구사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중에 베스트 프랙티스를 정리한 것이며 객체지향 특성과 설계 원칙을 기반으로 구현되어 있으며 객체 지향의 특성 중 상속, 인터페이스, 합성을 이용합니다. 어댑터 패턴 구조적 디자인 패턴 중 하나로, 한 인터페이스를 다른 인터페이스로 변환하기 위해 사용되며 이 패턴은 이미 존재하는 클래스나 인터페이스를 다른 클래스에서 사용할 때 유용합니다. 쉽게 이해해 보자면 휴대폰 충전기의 경우 휴대폰을 직접 전원콘센트에 연결할 수 없기 때문에 충전기가 핸드폰과 전원 콘센트 사이에서 둘을 연결해 주는 변환기의 역할을 수행해 줍니다. 구성 요소 Target 인터페이스 사용하려는 인터페이스를 정의 할 때는 Target 인터페이..
2023.11.13
no image
ORM
ORM(Object -Relational Mapping) ORM 프레임워크가 이를 RDB에 적절한 형태로 전환해 주거나 그 반대로 RDB에 저장되어 있는 정보를 자바오브젝트가 다루기 쉬운 형태로 변환해 주는 기술을 말합니다. 쉽게 말하면 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 데이터 매핑과 상호 작용을 쉽게 만들어주는 기술입니다. ORM 특징 ORM에서 데이터베이스의 테이블에 매핑되는 객체를 엔티티라고 부릅니다. 엔티티 클래스는 일반적으로 데이터 베이스 테이블의 구조와 일치하는 필드를 포함합니다. 데이터베이스 스키마와 객체 모델 간의 매핑을 정의하는 방법을 제공하며 어노테이션을 사용하거나 XML을 통해 매핑 정보 설정 할 수 있습니다. 객체 지향 언어를 사용하며 데이터 베이스에서 데이터를 ..
2023.11.10