Gyuseok
Dreaming_developer
Gyuseok
  • 분류 전체보기 (39)
    • Note (0)
    • TIL (8)
    • 일상 (1)
    • git & git hub (1)
    • Algorithm (14)
    • JAVA (5)
    • Spring & SpringBoot (10)
    • 기업연계 프로젝트 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리자
  • 티스토리
  • 글작성

공지사항

인기 글

태그

  • pattern
  • lombok
  • 국비지원교육
  • 패스트캠퍼스
  • Builder
  • 내일배움카드
  • java
  • MegabyteSchool
  • 개발자취업부트캠프
  • 메가바이트스쿨

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Gyuseok

Dreaming_developer

Spring & SpringBoot

SpringBoot JPA 사용하기

2022. 12. 30. 13:36

Gradle 추가(web,jpa,mariadb,lombok)

    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.mariadb.jdbc:mariadb-java-client:3.0.6'
    
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'

application.properties. 추가

spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/sys
spring.datasource.username=root
spring.datasource.password=

spring.jpa.show_sql = true

spring.jpa.show_sql 을 true 로 설정해 줌으로써 jpa가 작성하고 실행해주는 쿼리를 콘솔에서 볼 수 있다.

 

로그인 으로 예제를 만들어 보겠다.

가장 먼저 테이블을 만든다.

create table admin(
id varchar(50) not null,
password varchar(50) not null,
primary key (id)
)

 

이 테이블을 매칭할 Entity를 만들어 준다.

package com.cafe.admin.entity;

import lombok.*;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
@Entity
@Table(name = "Admin")
public class Admin {

    @Id
    @Column
    private String id;

    @Column
    private String password;

}

이때 builder를 추가해주면 추후에 entity로 변환할때 편리하다.

Entity에는 필히 ID 즉 PRIMARY_KEY가 있어야 하는데 해당 컬럼에는 @Id를 붙여주면 끝이다.

 

이제 requestDTO를 만들어 주겠다

해당 DTO는 요청을 받아 필요한 정보를 제공하는 역할을 한다.

import com.cafe.admin.entity.Admin;
import lombok.*;

@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class AdminReqDTO {
    private String id;
    private String password;

    public Admin toEntity(){
        return Admin.builder()
                .id(id)
                .password(password)
                .build();
    }
}

Entity로 변환시켜줄때 builder를 사용하면 컬럼이 많은 상황에서 더 편리하게 할수있다.

 

이제 응답을 받을 DTO를 만들어 보자.

package com.cafe.admin.dto;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class AdminResDTO {
    private String id;
}

로그인에 사용하기에 비밀번호는 받지 않는것으로 했다.

 

이번엔 Repository다

package com.cafe.admin.repository;

import com.cafe.admin.entity.Admin;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface AdminRepository extends JpaRepository<Admin,String> {

    public Admin findAdminByIdAndPassword(String id,String password);
}

기본적인 메서드 들이 내장되어있지만, 로그인을 위해 아이디와 비밀번호를 받아 Admin을 돌려주는 메서드를 추가했다.

참고로 Repository는 interface로 만들고 

JpaRepository<Entity,ID type>

Entity이름과 ID 자료형 타입을 꼭 적어줘야 한다.

모든 준비는 끝났다, service에서 보자.

public String selectAdmin(AdminReqDTO adminReqDTO) {
        Admin admin =adminReqDTO.toEntity();
        admin = adminRepository.findAdminByIdAndPassword(admin.getId(),admin.getPassword());
        AdminResDTO adminResDTO=new AdminResDTO(admin.getId());
        if (adminResDTO.getId() == null) {
            return "";
        } else {
            session.setAttribute("admin", adminResDTO.getId());
            return "success";
        }
    }

필요에 따라 RequestDTO를 Entity로 변환해 준 후,

레포지토리에 내장된 메서드나 커스텀메서드를 통해 쿼리를 실행 후,

ResponseDTO로 Entity를 받아주면 된다.

 

'Spring & SpringBoot' 카테고리의 다른 글

Spring security 시작하기  (0) 2023.01.20
MockMVC  (0) 2023.01.13
SpringBoot Swagger UI사용하기  (0) 2022.12.19
Spring AOP  (0) 2022.12.16
SpringBoot 이전 페이지 URL가져오기  (0) 2022.12.09
    'Spring & SpringBoot' 카테고리의 다른 글
    • Spring security 시작하기
    • MockMVC
    • SpringBoot Swagger UI사용하기
    • Spring AOP
    Gyuseok
    Gyuseok

    티스토리툴바