JDBC
JDBC는 Java와 데이터베이스를 연결하는 기본적인 다리
데이터베이스에 직접 연결해서 SQL 쿼리를 실행하고 데이터를 가져오거나 저장할 수 있게 해준다
특징
- 직접 SQL 사용: SQL 쿼리를 직접 작성해서 데이터베이스와 소통
- 로우레벨 작업: 데이터베이스 연결, 쿼리 실행, 결과 처리 등을 개발자가 하나씩 직접 처리
- 유연하지만 복잡: 모든 세부 작업을 수동으로 처리해야 하므로 복잡한 코드가 될 수 있음
예제
import java.sql.*;
public class JdbcExample {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydb";
String user = "username";
String password = "password";
try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement()) {
// SQL 실행
String query = "SELECT * FROM users";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
System.out.println("User ID: " + rs.getInt("id"));
System.out.println("User Name: " + rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
장점
- 데이터베이스 작업을 상세히 조작할 수 있음
- 특정 요구사항에 맞게 유연하게 커스터마이징 가능
단점
- 코드가 길어지고 복잡해짐
- 반복적인 작업이 많아 생산성이 낮아질 수 있음
JPA
JPA는 데이터베이스와의 작업을 더 편리하게 만들어주는 Java의 표준 ORM(Object-Relational Mapping) 프레임워크
특징
- SQL 대신 객체 사용: 데이터를 SQL로 처리하는 대신, Java 객체를 통해 데이터를 다룸
- 자동화된 데이터 처리: 반복적인 작업(SQL 작성, 매핑 등)을 자동으로 처리
- ORM(Object-Relational Mapping): 데이터베이스 테이블과 Java 객체를 연결
예제 (Hibernate 사용)
import jakarta.persistence.*;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// Getters and Setters
}
// 데이터베이스 작업
public class JpaExample {
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("my-persistence-unit");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
// 데이터 저장
User user = new User();
user.setName("John Doe");
em.persist(user);
// 데이터 조회
User foundUser = em.find(User.class, user.getId());
System.out.println("User Name: " + foundUser.getName());
em.getTransaction().commit();
em.close();
emf.close();
}
}
장점
- 코드가 간결하고 유지보수가 쉬움
- 데이터베이스 작업을 객체 중심으로 처리해 생산성 향상
- 데이터베이스 변경 시 SQL 쿼리를 수정하지 않아도 되는 경우가 많음
단점
- 초기 설정이 복잡할 수 있음
- 복잡한 SQL 쿼리는 성능 최적화가 필요할 수 있음
- 데이터베이스를 완전히 추상화하므로, 내부 로직을 이해하기 어려울 수 있음
JDBC와 JPA의 차이점
특징 | JDBC | JPA |
SQL 작성 | 직접 작성 필요 | 객체로 처리, SQL은 자동 생성 |
복잡도 | 낮은 수준의 작업, 복잡한 코드 | 높은 수준의 추상화, 간결한 코드 |
생산성 | 낮음 | 높음 |
학습 곡선 | 단순하지만 코드 작성이 많음 | 초기 학습 필요, 이후 간편 |
유연성 | 모든 것을 직접 제어 가능 | ORM 방식에 제약이 있을 수 있음 |
- JDBC를 사용해야 하는 경우
- 단순한 작업이거나, SQL을 직접 세부적으로 제어해야 할 때
- 프레임워크를 추가로 도입할 수 없는 제한적인 상황
- JPA를 사용해야 하는 경우
- 프로젝트가 크고 유지보수가 중요할 때
- 데이터를 객체로 관리하는 것이 더 직관적일 때
- 개발 속도를 높이고 반복 작업을 줄이고 싶을 때
Spring Data JPA -> JPA -> Hibernate -> JDBC -> DB Driver ->DBMS
출처 : ChatGPT
'BE > Java' 카테고리의 다른 글
[Java] 명령형 , 선언형 프로그래밍 (0) | 2024.12.12 |
---|---|
[Java] 어노테이션 (2) | 2024.12.11 |
[Java] 람다식 (0) | 2024.12.10 |
[Java] 스트림 (1) | 2024.12.09 |
[Java] Map (0) | 2024.12.07 |