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 |