해당 수업에서 배운 라이브러리 등 새로 알게되거나 해당 라이브러리가 어떤 역할을 하는지
계속 작성 및 추가 될 예정입니다.
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'
'인프런 강의 > 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발' 카테고리의 다른 글
일대다(OneToMany)와 다대일(ManyToOne)관계 (0) | 2024.01.19 |
---|---|
JPA주요 관계 매핑 타입 (0) | 2024.01.19 |
Thymeleaf란 무엇인가 (0) | 2024.01.10 |
Gradle란 무엇인가 (0) | 2024.01.10 |
JPA vs MyBatis (0) | 2024.01.10 |