🍏 개발일기

반복 코드 : Lombok과 JdbcTemplate으로 간결하게

보배 진 2026. 1. 26. 15:48

Lombok

Lombok은 Java 코드에서 반복적인 보일러플레이트 코드를 줄여주는 라이브러리

즉, getter, setter, 생성자, toString, equals/hashCode 같은 코드를 일일이 쓰지 않아도 되도록 도와줌

 

 

 

Lombok이 왜 필요한가

Java에서는 예를 들어 DTO나 Entity를 만들 때 이런 코드가 흔하다

public class User {
    private String name;
    private int age;

    public User() {}

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{name=" + name + ", age=" + age + "}";
    }
}

▪ 코드가 길고 반복적

▪ 실수하기 쉽고 유지보수 어려움

 

 

 

Lombok을 사용하면

위 코드를 Lombok으로 바꾸면 이렇게 간단해진다

import lombok.Data;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private String name;
    private int age;
}

@Data : getter, setter, toString, equals, hashCode 자동 생성

@NoArgsConstructor : 기본 생성자 자동 생성

@AllArgsConstructor : 모든 필드를 받는 생성자 자동 생성

 

 

 

자주 쓰는 Lombok 어노테이션

@Getter/@Setter : getter/setter 자동 생성

@ToString : toString 자동 생성

@EqualsAndHashCode : equals(), hashCode() 자동 생성

@NoArgsConstructor : 기본 생성자 생성

@AllArgsConstructor : 모든 필드 포함 생성자 생성

@Builder : 빌더 패턴 지원

@Data : 위 대부분(Getter/Setter/ToString/EqualsAndHashCode) 한 번에 생성

 

 


JdbcTemplate

JdbcTemplate은 Spring Framework에서 제공하는 데이터베이스 접근 유틸리티 클래스

쉽게 말하면 JDBC로 DB 쿼리할 때 반복되는 귀찮은 작업을 대신 처리해주는 도구

 

 

원래 JDBC 코드는 왜 귀찮을까?

예를 들어, 유지 이름을 가져로는 코드를 순수 JDBC로 작성하면

Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

try {
    conn = dataSource.getConnection();
    ps = conn.prepareStatement("SELECT name FROM users WHERE id = ?");
    ps.setInt(1, 1);
    rs = ps.executeQuery();
    
    if (rs.next()) {
        System.out.println(rs.getString("name"));
    }
} catch (SQLException e) {
    e.printStackTrace();
} finally {
    if (rs != null) rs.close();
    if (ps != null) ps.close();
    if (conn != null) conn.close();
}

▪ Connection, PreparedStatement, ResultSet 관리
▪ 예외 처리
▪ 반복적인 SQL 실행 코드
이런 것들을 매번 작성해야 해서 귀찮고 실수 가능성이 높음

 

 

 

JdbcTemplate을 쓰면?

JdbcTemplate을 쓰면 위 코드를 훨씬 간단하게 바꿀 수 있다

@Autowired
private JdbcTemplate jdbcTemplate;

public String getUserName(int id) {
    String sql = "SELECT name FROM users WHERE id = ?";
    return jdbcTemplate.queryForObject(sql, new Object[]{id}, String.class);
}

한 줄이면 끝!

연결(Connection) 자동 관리

쿼리 실행, 결과 매핑 자동 처리

예외 처리도 Spring 방식(DataAccessException)으로 통일

 

 

 

자주 쓰는 JdbcTemplate 메서드

// 여러 행 조회
List<User> users = jdbcTemplate.query(
    "SELECT * FROM users",
    (rs, rowNum) -> new User(rs.getInt("id"), rs.getString("name"))
);

// 데이터 삽입
int result = jdbcTemplate.update(
    "INSERT INTO users(name, age) VALUES (?, ?)",
    "Alice", 25
);

queryForObject : 단일 행 결과를 객체로 반환

query : 여러 행을 리스트로 반환

update : INSERT, UPDATE, DELETE 수행

batchUpdate : 여러 쿼리를 한 번에 수행 

 

 

 

장점

1. 코드가 짧고 간결

2. 자원 관리 자동화 (Connection, PreparedStatement, ResultSet)

3. SQL 중심 개발 가능

4. Spring의 예외 처리 통합

 

'🍏 개발일기' 카테고리의 다른 글

Oracle Cloud DB 연결  (0) 2026.01.28
EC2 Tomcat 배포 중 404 지옥 탈출기  (0) 2026.01.27
내 PC에서 배포  (1) 2026.01.25
AWS RDS 사용  (0) 2026.01.25
백엔드 배포하기  (0) 2026.01.24