본문 바로가기
인프런 강의/실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

Spring-Boot 의존성 라이브러리 종류

by 해삼2 2024. 1. 10.
728x90
반응형
해당 수업에서 배운 라이브러리 등 새로 알게되거나 해당 라이브러리가 어떤 역할을 하는지
계속 작성 및 추가 될 예정입니다.
Spring-Boot 라이브러리 종류

 

spring-boot-starter-data-jpa:
JPA(Java Persistence API)를 사용하여 데이터베이스와 상호 작용할 수 있도록 지원하는 스타터입니다. 

엔터티 매핑, 리포지토리 인터페이스, 쿼리 메서드 등의 기능을 제공하여 데이터베이스 작업을 간소화합니다.


spring-boot-starter-thymeleaf:
Thymeleaf 템플릿 엔진을 사용하여 웹 애플리케이션의 뷰를 생성하는 데 사용되는 스타터입니다. Thymeleaf는 HTML 템플릿과 서버 사이드 템플릿 엔진으로 사용되어, 자연스럽게 HTML 문서 내에서

자바 코드와 연동할 수 있습니다.


spring-boot-starter-web:
웹 애플리케이션을 개발할 때 필요한 기본적인 설정들을 제공하는 스타터입니다. 

내장 웹 서버(일반적으로 Tomcat)와 Spring MVC 등의 웹 관련 구성을 포함합니다.


spring-boot-devtools:
개발환경에서의 편의성을 제공하는 도구들을 모아놓은 라이브러리입니다. 

코드의 변경 감지 및 자동 재시작, LiveReload를 통한 브라우저 자동 리로딩 등을 제공하여 개발자의 

생산성을 향상시킵니다.

 

hibernate.hbm2ddl.auto:

개발환경에서의 테이블 자동 생성 value="create로 설정하면 해당 테이블을 자동으로 생성해준다.

생성은 해당 엔티티들의 모든 테이블이름을 지우고 새로 생성하는 것 이기 때문에 

데이터 내용이 사라질수 있으니 운영에서는 절대 사용하면 안됨

 

Lombok:
자바 코드에서 반복적으로 사용되는 코드를 어노테이션을 통해 간소화하고, 더 간결하게 작성할 수 있도록 

도와주는 라이브러리입니다. 

Getter, Setter, Equals, HashCode, ToString 등의 메서드를 자동으로 생성해줍니다.


H2 Database:
경량화된 인메모리 데이터베이스인 H2를 프로젝트에 포함시키는 것입니다. 

개발 및 테스트용 데이터베이스로 많이 사용되며, 프로덕션 환경에서는 다른 데이터베이스를 

사용하는 것이 일반적입니다. 

H2는 데이터베이스 서버를 내장하고 있어 별도의 설치 없이 사용할 수 있습니다. 

주로 개발 및 테스트 목적으로 사용됩니다.

 

HikariCP:

HikariCP는 자바 언어를 위한 빠르고 경량화된 데이터베이스 커넥션 풀 라이브러리입니다. 

데이터베이스와의 연결 관리를 효율적으로 처리하여 성능을 향상시키고, 

애플리케이션의 확장성을 개선하는 데 도움이 됩니다. 

이는 주로 데이터베이스 연결을 효율적으로 관리하고 최적화된 성능을 제공하기 위해 사용되는 개발 

도구 중 하나입니다.

HikariCp는 spring-boot-starter-data-jpa 와 spring-boot-starter-jdbc에 의존성이 포함되어 있습니다.

 

SLF4J & LogBack:

SLF4J는 로깅에 대한 퍼사드로, 주로 에러 메시지를 출력하는 용도뿐만 아니라 

애플리케이션의 다양한 로깅 요구 사항을 처리하는 데 사용되며 
자바에서 쓰이는 로깅이며 Logback와 함께 자주 사용되는 구현체이고
SLF4J안에 Logback 등 많은 로그들이 내장되어 있고 사용할 수 있습니다.
Logback은 로그 파일의 크기나 시간에 따라 자동으로 로그 파일을 롤링하거나 아카이빙할 수 있는 

장점이 있으며 Spring Boot 프로젝트에서 별도의 의존성을 추가할 필요가 없으며

Spring Boot안에 기본적으로 SLF4J와 Logback을 지원하고 내장되어 있어 호출만 하면 됩니다.

 


 

 

데이터 베이스 JPA 활용

 

@Entity
해당 어노테이션을 붙이면 JPA가 관리한다는 의미

 

Repository:
(Repository)는 데이터를 저장, 검색, 수정, 삭제 등 데이터베이스와 관련된 작업을 수행하는 객체입니다.

 

PersistenceContext&EntityManager:

PersistenceContext는 엔터티 매니저를 주입받아 사용할 수 있도록 도와주는 역할을 한다.

여기서 엔터티란 일종의 설계 도면이나 모델링에서 실제 세계의 개념이나 객체를 나타내는것 입니다.

EntityManager는 쉽게 말해 DTO에 있는 정보들을 데이터베이스에 CRUD해주는 역할이라고

생각하면 이해하기 쉬울거 같다.  *Java 객체와 데이터베이스 간의 매핑 및 상호 작용*

 

GeneratedValue:

(Primary Key) 값을 자동으로 생성해 주는 것 

 

Transactional:

트랜잭션을 관리해주는 어노테이션이며 커밋/롤백을  담당한다.

 

persist:

persist 메서드는 새로운 엔터티를 영속성 컨텍스트에 등록하여 데이터베이스에 저장할 준비를 합니다.
즉, 새로운 엔터티를 데이터베이스에 추가하기 전에 영속성 컨텍스트에 등록하는 단계입니다.
트랜잭션이 커밋될 때, 등록된 엔터티는 데이터베이스에 삽입됩니다.

 

find:
find 메서드는 엔터티의 식별자(ID)를 사용하여 데이터베이스에서 엔터티를 조회하는 데 사용됩니다.
조회한 엔터티는 영속성 컨텍스트에 등록되며, 이후의 변경사항은 트랜잭션이 커밋될 때 데이터베이스에 반영됩니다.

 

Embedded:

클래스를 내장 타입으로 지정하면, 해당 클래스의 인스턴스를 다른 엔터티에 포함시킬 수 있습니다. 

이를 통해 코드의 재사용성을 높이고 가독성을 개선할 수 있습니다. 

특히, 여러 엔터티에서 공통으로 사용되는 데이터를 하나의 클래스로 정의하여 중복을 피하고, 

필요에 따라 확장 및 변경할 수 있도록 하는 것이 내장 타입의 역할입니다.

쉽게 말해 회원 테이블에 회원 주소가 있는데 이 주소의 대한 정보를 클래스로 만들어 어느 테이블이든지

사용할수 있게 만들어서 코드의 가독성을 높이는 역할을 한다.

 

inverseJoinColumns:

다대다(N:M) 관계에서 연결 테이블(Join Table)에서 현재 엔터티(현재 클래스를 나타냄)의 

외래 키(Foreign Key)에 대한 설정을 지정하는 속성입니다. 

엔터티 간의 관계에서 한 쪽은 joinColumns로, 다른 쪽은 inverseJoinColumns로 설정합니다.


주입 방법

 

dependencies 목록에 추가 하면 된다.

// spring-boot-starter-data-jpa
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

// spring-boot-starter-thymeleaf
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'

// spring-boot-starter-web
implementation 'org.springframework.boot:spring-boot-starter-web'

// spring-boot-devtools
runtimeOnly 'org.springframework.boot:spring-boot-devtools'

// Lombok
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'

// H2 Database
runtimeOnly 'com.h2database:h2'
728x90
반응형