본문 바로가기

SPRING/Spring 활용

[스프링부트| 스프링부트와 JPA 활용 1 | 웹 애플리케이션 개발 | 프로젝트 환경설정]

  1. Spring Web
    • 기능: 이 의존성은 웹 애플리케이션을 구축할 수 있도록 지원합니다. RESTful 웹 서비스를 포함한 다양한 웹 기반 애플리케이션을 개발할 때 사용됩니다. Apache Tomcat이 기본 내장 웹 서버로 제공되어, 별도의 웹 서버 설치 없이 쉽게 웹 애플리케이션을 실행시킬 수 있습니다.
  2. Thymeleaf
    • 기능: Thymeleaf는 서버 사이드에서 HTML을 동적으로 생성하는 모던 템플릿 엔진입니다. 웹 및 독립 환경 모두에서 사용될 수 있으며, 표준 HTML 파일을 템플릿으로 사용하기 때문에 웹 디자이너와 개발자 모두에게 친숙한 작업 환경을 제공합니다. 또한, 웹 브라우저에서 정적 프로토타입을 직접 볼 수 있어 개발 과정이 원활해집니다.
  3. Lombok
    • 기능: Lombok은 자바 개발을 할 때 반복되는 코드 작성을 줄여주는 라이브러리입니다. @Data, @Getter, @Setter 등의 어노테이션을 사용하여 자동으로 getter, setter, equals, hashCode, toString 같은 메서드를 생성해줍니다. 이로써 개발자는 모델이나 DTO(Data Transfer Object) 같은 클래스를 더 깔끔하게 유지할 수 있습니다.
  4. Spring Data JPA
    • 기능: Spring Data JPA는 Java Persistence API(JPA)를 쉽게 구현할 수 있도록 도와주는 모듈입니다. 데이터베이스와의 상호 작용을 추상화하여 복잡한 데이터 접근을 간단하게 처리하고, 저장소 계층을 더욱 깔끔하게 구현할 수 있도록 지원합니다. Hibernate 같은 JPA 구현체를 사용하여 관계형 데이터베이스를 더욱 효율적으로 다룰 수 있습니다.
  5. H2 Database
    • 기능: H2는 Java 기반의 인메모리 데이터베이스로, 개발과 테스트 목적에 아주 적합합니다. 인메모리 모드에서는 데이터베이스가 메모리에 상주하므로 애플리케이션 실행 시 빠르게 시작할 수 있고 종료 시 데이터가 사라집니다. JDBC API 및 R2DBC를 지원하며, 웹 브라우저나 스탠드얼론 모드를 통해 데이터베이스에 접근할 수 있습니다. 이로써 개발 중에 데이터베이스 관리가 간편해집니다.

              스프링부트 라이브러리

package jpabook.jpashop;

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Hello {

    private String data;
}
package jpabook.jpashop;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class JpashopApplication {

	public static void main(String[] args) {
		Hello hello = new Hello();
		hello.setData("hello");
		String data = hello.getData();
		System.out.println("data = " + data);

		SpringApplication.run(JpashopApplication.class, args);
	}

}

Lombok

Lombok은 자바(JAVA) 개발을 할 때 반복되는 코드를 줄이고, 보다 간결하고 깔끔한 코드를 작성할 수 있게 도와주는 라이브러리입니다. Lombok은 컴파일 시점에서 지정된 어노테이션을 분석하고, 해당하는 코드를 자동으로 생성해줍니다. 이러한 방식으로, 개발자는 반복적인 메소드 작성의 수고를 덜 수 있습니다.

주요 특징 및 기능

  1. @Getter / @Setter
    • 이러한 어노테이션들은 클래스 필드에 대한 getter 및 setter 메소드를 자동으로 생성합니다. 위 코드에서 @Getter와 @Setter 어노테이션은 Hello 클래스의 data 필드에 대해 해당 메소드들을 생성하므로, 개발자는 이를 수동으로 작성할 필요가 없습니다.
  2. @Data
    • 클래스에 이 어노테이션을 붙이면, @Getter, @Setter, @ToString, @EqualsAndHashCode, 그리고 @RequiredArgsConstructor 어노테이션을 한 번에 적용하는 효과가 있습니다. 즉, 이 어노테이션 하나로 다수의 반복 코드를 생성할 수 있습니다.
  3. @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor
    • 이 어노테이션들은 각각 파라미터가 없는 생성자, 필수 필드만을 파라미터로 갖는 생성자, 모든 필드를 파라미터로 갖는 생성자를 자동으로 생성합니다.
  4. @Builder
    • 이 어노테이션을 사용하면 빌더 패턴을 쉽게 구현할 수 있습니다. 빌더 패턴은 인스턴스 생성 과정을 단계적으로 수행하고, 최종적으로 생성된 객체를 반환하는 디자인 패턴입니다.
  5. @Slf4j
    • 로깅을 위한 어노테이션으로, 로거(Logger) 객체를 자동으로 생성합니다. 이를 사용하면 별도로 로거를 선언하고 초기화할 필요가 없습니다.