반응형
스프링 프레임워크 vs 스프링 부트
- 하이버네이트(Hibernate) → 자바 객체 ↔ 관계형 데이터베이스 간의 매핑(ORM, Object-Relational Mapping) 을 도와주는 프레임워크
- 즉, 자바 객체를 DB 테이블과 자동으로 매핑해주고, SQL문 없이도 DB에 접근하게 해줌
Spring에서는 JPA(Java Persistence API)라는 표준 인터페이스를 사용하고, 그 구현체 중 가장 유명한 것이 Hibernate
JDBC(Java Database Connectivity)란? (1990년대 후반~)
- Java에서 DB 연결하는 가장 원시적이고 기본적인 방식
- Java와 DB 사이를 연결해주는 가장 기본적인 방법이고 직접 SQL문 작성 필요
- 반복적인 코드가 많고 생산성이 낮음
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "user", "password");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM member");
while (rs.next()) {
System.out.println(rs.getString("name"));
}
DAO(Data Access Object)란? (2000년대 초반~)
- JDBC를 직접 쓰면 코드가 너무 지저분하니까, DB 접근 로직을 전담하는 클래스를 따로 분리한 구조
- 소프트웨어 설계 관점에서 좋은 방식 → "관심사 분리"
- 하지만 여전히 SQL은 직접 작성해야 함
Service는 비즈니스 로직 담당, DAO는 데이터베이스 처리만 담당
public class MemberDao {
public List<Member> findAll() {
List<Member> members = new ArrayList<>();
try (Connection conn = getConnection();
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM member");
ResultSet rs = stmt.executeQuery()) {
while (rs.next()) {
Member m = new Member(rs.getLong("id"), rs.getString("name"));
members.add(m);
}
} catch (SQLException e) {
e.printStackTrace();
}
return members;
}
}
JPA (Java Persistence API) + Hibernate (2006년~)
- 자바 표준 ORM(Object-Relational Mapping) 기술
- SQL 거의 안 써도 되고, 객체만 다루면 자동으로 DB와 연동
- 생산성, 유지보수성 모두 향상됨
- Hibernate는 JPA의 가장 대표적인 구현체
@Entity
public class Member {
@Id @GeneratedValue
private Long id;
private String name;
}
memberRepository.findById(1L); // SQL 직접 안 써도 됨
Spring Data JPA
- JPA 위에 만들어진 Spring 전용 자동화 라이브러리
- 인터페이스만 작성하면 CRUD 자동 생성해주는 편의 기능 제공
- Spring Data JPA는 JPA + Hibernate 위에서 동작
- Hibernate를 내부적으로 사용함 (→ 설정 안 바꾸면 디폴트로 Hibernate)
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByName(String name); // 구현 없어도 자동 동작!
}
시대 방식 특징
1990s~ | JDBC | 저수준 API, SQL 수동 작성 |
2000s~ | DAO + JDBC | 설계 개선 (관심사 분리), 여전히 SQL 직접 |
2006~ | JPA + Hibernate | ORM 등장, 객체 중심 개발, SQL 거의 없음 |
현대 | Spring Data JPA | Repository 인터페이스만 작성, CRUD 자동 구현 |
시대적 흐름
- 시대적 흐름으로 본다면 다음과 같다
반응형
'Spring Boot > 스프링 프레임워크 vs 스프링 부트, 의존성 관리' 카테고리의 다른 글
[Spring boot] 의존성 관리 (1) | 2025.07.21 |
---|