Notice
Recent Posts
Recent Comments
관리 메뉴

즐겁게, 코드

12월 4일 TIL : mySQL 의존성 오류, DTO, Lombok 본문

🧺 일상다반사/TIL

12월 4일 TIL : mySQL 의존성 오류, DTO, Lombok

Chamming2 2023. 12. 4. 21:18

1. mysql-connector-java

스프링 어플리케이션을 MySQL과 연결하기 위해 아래처럼 pom.xml에 의존성을 작성했는데 오류를 겪었다.

<dependency>
	<groupId>com.mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>

무엇이 문제였고 하니, 대략 스프링 3부터는 mysql-connector-j 라는 의존성을 사용해줘야 함을 알 수 있었다.


2. DTO 작성하기

FE에서 타입스크립트로 객체를 구조화하는 것처럼 스프링에서도 DTO를 작성해 사용한다.

package com.example.dto;

public class TodoDTO {
    private Long id;
    private String title;
    private String description;
    private boolean completed;

    // 생성자
    public TodoDTO() {
    }

    // 인자를 받을 수 있는 생성자
    public TodoDTO(Long id, String title, String description, boolean completed) {
        this.id = id;
        this.title = title;
        this.description = description;
        this.completed = completed;
    }

    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return this.title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDscription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public boolean isCompleted() {
        return completed;
    }

    public void setCompleted(boolean completed) {
        this.completed = completed;
    }

    // toString method
    @Override
    public String toString() {
        return "TodoDTO{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", description='" + description + '\'' +
                ", completed=" + completed +
                '}';
    }
}

getter와 setter를 일일히 작성하는 것은 비효율적이라 생각했는데, Lombok 이라는 녀석이 도움이 될 것 같다.


3. Lombok

Lombok을 사용하니 코드를 획기적으로 줄일 수 있었다.

// pom.xml
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<scope>provided</scope>
</dependency>
package com.example.dto;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@ToString
@NoArgsConstructor
public class EnhancedTodoDTO {
    private Long id;
    private String title;
    private String description;
    private boolean completed;
}

여기서 더 줄일 수도 있다.

package com.example.dto;

import lombok.Data;

@Data
@NoArgsConstructor
public class EnhancedTodoDTO {
    private Long id;
    private String title;
    private String description;
    private boolean completed;
}
반응형
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆