MariaDB 다운로드하기
Download MariaDB Server - MariaDB.org
REST API Release Schedule Reporting Bugs … Continue reading "Download MariaDB Server"
mariadb.org
→ root 비밀번호 설정 후 [Use UTF8 as default server’s character set] 체크 박스 체크
→ 기존에 설치했던 MySQL이 포트번호 3306을 쓰고 있어서 발생한 에러 메시지
→ 3307로 수정 후 Install
- MariaDB 설치가 완료되면 자동으로 HeidiSQL 서드파티 도구가 설치된다
- HeidiSQL : 데이터베이스에 접속해서 관리하는 GUI 도구
→ 위와 같이 설정 완료 후 [열기]
- 새로운 데이터베이스 생성
- springboot
ORM(Object Relational Mapping, 객체 관계 매핑)
- 객체와 RDB(Relational DataBase)의 테이블을 자동으로 매핑하는 방법
- 객체 → 클래스
- 쿼리문 작성이 아닌 코드(메서드)로 데이터 조작 가능
JPA(Java Persistence API)
- 자바 진영의 ORM 기술 표준으로 채택된 인터페이스 모음
- ORM이 JPA의 상위 개념, JPA가 더 세부적인 개념
- 대표적인 JPA 기반 구현체
- 하이버네이트 (Hibernate)
- 자바의 ORM 프레임워크 → Spring Data JPA
- Spring Data JPA : CRUD 처리에 필요한 인터페이스 제공, 레포지토리 정의해 사용
- 자바의 ORM 프레임워크 → Spring Data JPA
- 이클립스 링크 (EclipseLink)
- 데이터 뉴클리어스 (DataNucleus)
- 하이버네이트 (Hibernate)
데이터베이스 연동을 위한 프로젝트 생성
- 데이터베이스 연동을 위한 새로운 프로젝트 생성
- 의존성 라이브러리는 다음과 같이 추가
- resource 하위에 logback xml 파일 업로드
- resource 하위 → [application.properties]에 데이터베이스 관련 설정 추가하기
- 애플리케이션이 정상 실행될 수 있게 연동할 데이터베이스 정의
Entity 설계 - 테이블 생성
→ Spring Data JPA를 사용하면 테이블을 생성하기 위해 직접 쿼리를 작성할 필요가 없다
→ 엔티티 기능을 이용
→ 엔티티에는 데이터베이스에 쓸 테이블과 컬럼을 정의
→ Annotation을 이용해 테이블 간 연관 관계 지정 가능
- 구현할 데이터베이스 테이블 도식화
<Product> 테이블
상품 번호 | int |
상품 이름 | varchar |
상품 가격 | int |
상품 재고 | int |
상품 생성 일자 | DateTime |
상품 정보 변경 일자 | DateTime |
- data.entity 패키지 생성 → Product 클래스 생성
📌 엔티티 관련 기본 Annotation 정리
- @Entity : 해당 클래스가 엔티티임을 명시
- @Table : 클래스 이름과 테이블 이름을 다르게 지정해야 하는 경우 사용
- @Id : 테이블의 기본값 역할로, 모든 엔티티는 @Id 어노테이션이 필요
- @GeneratedValue : @Id 어노테이션과 함께 사용, 필드 값 자동 생성 방식 결정
- AUTO : @GeneratedValue의 기본 설정값
- IDENTITY : AUTO_INCREMENT 역할
- SEQUENCE
- TABLE
- @Column
- @Transient
레포지토리 인터페이스 설계
- 레포지토리 인터페이스 생성
- 엔티티가 생성한 데이터베이스에 접근하기 위해 사용
- JpaRepository를 상속 받는다
→ repository 패키지 생성 후 repository 인터페이스 생성하기
DAO 설계 (Data Access Object)
→ 데이터베이스에 접근하기 위한 로직을 관리하기 위한 객체
→ Spring Data JPA에서 DAO 개념은 Repository가 대체한다
→ ‘인터페이스 - 구현체’ 구성으로 생성
→ 서비스 레이어에 DAO 객체를 주입받을 때 인터페이스를 선언하는 방식으로 구성 가능
- DAO 패키지 생성 및 인터페이스, 클래스(구현체) 생성
- 기본적인 CRUD를 다루기 위해 ProductDao 인터페이스에 메서드 정의
- ProductDao 인터페이스의 구현체 클래스 작성
Create, Read
Update, Delete
DAO 연동을 위한 컨트롤러와 서비스 설계
→ 앞서 설계한 구성요소들을 클라이언트 요청과 연결하기 위해 컨트롤러와 서비스 생성
- 서비스 패키지 및 클래스 생성
- 서비스 레이어에서는 도메인 모델을 활용해 애플리케이션에서 제공하는 핵심 기능 제공
- 핵심 기능을 구현하기 위해서는 세부 기능 정의 필요
- 서비스 레이어에서는 도메인 모델을 활용해 애플리케이션에서 제공하는 핵심 기능 제공
- 서비스 인터페이스에 필요한 DTO 패키지, 클래스 생성 (Data Transfer Object, 데이터 전송 객체)
- 데이터를 전송하기 위한 객체
- 서비스 인터페이스 및 구현체 클래스 생성
- 서비스는 클라이언트가 요청한 데이터를 적절히 가공해 컨트롤러에게 넘기는 역할
- 구현체 클래스
- DAO 인터페이스 선언 후 @Autowired를 지정한 생성자를 통해 의존성 주입
컨트롤러 생성
→ 비즈니스 로직과 클라이언트의 요청을 연결하는 컨트롤러 생성
→ 클라이언트로부터 요청을 받고 해당 요청에 대해 서비스 레이어에 구현된 적절한 메서드를
호출하여 결괏값을 받는다
- 아래 코드에서는 create 메서드 구현 → 추후에 POST 요청으로 데이터 업데이트 실습
프로젝트 동작 확인
→ 설계한 프로젝트를 실행하면 MariaDB의 지정한 데이터베이스에 테이블이 생성된다.
- Talend API Tester를 이용해 테이블에 데이터를 POST하는 요청 실행하기
- MariaDB에서 테이블 조회해서 요청이 정상적으로 성공했는지 확인하기
Summary - MariaDB 데이터베이스 연동 프로젝트
- 프로젝트 구조
'Backend > SpringBoot' 카테고리의 다른 글
[SpringBoot] QueryDSL에 대해 알아보고 사용해보자 (0) | 2024.08.22 |
---|---|
[SpringBoot] JUnit을 사용해 테스트 코드를 작성해보자 (0) | 2024.08.22 |
[SpringBoot] 로깅 라이브러리 Logback을 이용해 로그를 확인해보자 (0) | 2024.08.22 |
[SpringBoot] 다양한 방법으로 DELETE API를 생성해보자 (0) | 2024.08.22 |
[SpringBoot] 다양한 방법으로 PUT API를 생성해보자 (0) | 2024.08.22 |