WEEK 5-8: JAVA와 DataBase

ensalada.de.pollo·2025년 5월 11일

be

목록 보기
22/44

JDBC

JDBC(Java Database Connectivity)는 Java Application이 데이터베이스와 상호작용할 수 있도록 도와주는 자바 표준 인터페이스(API)입니다. 자바 코드에서 데이터베이스에 연결하고 SQL 쿼리를 실행, ResultSet을 처리하며 트랜잭션 관리까지 할 수 있습니다.

특징

  • 표준화된 API
    다양한 DBMS(MySQL, Oracle 등)에서 일관된 방식으로 사용할 수 있는 표준 인터페이스를 제공합니다.
  • 주요 구성 요소
    • JDBC 드라이버: 실제 DB와 통신하는 자바 클래스 집합입니다.
    • Connection: 데이터베이스와의 연결을 관리합니다.
    • Statement/PreparedStatement: SQL 쿼리 실행을 담당합니다.
    • ResultSet: 쿼리 실행 결과를 담는 객체입니다.
    • DriverManager: JDBC 드라이버를 관리, 적절한 드라이버를 선택해 DB 연결을 생성합니다.
    • 트랜잭션 관리: Connection을 통해 트랜잭션 시작, 커밋, 롤백과 같은 트랜잭션 관리가 가능합니다.

동작방식

  1. JDBC 드라이버 로드
  2. Connection 생성
  3. SQL 실행
  4. ResultSet 처리
  5. 트랜잭션 처리
  6. 리소스 해제

한계

  • 반복코드: 객체 생성과 자원 해제 코드가 반복적으로 필요합니다.
  • 예외처리: SQLException 등 체크 예외를 직접 처리해야 함, DB마다 예외 메세지 같은 것들이 달라 일관성이 떨어집니다.
  • SQL 직접 작성: 모든 CRUD 작업에 대해 SQL을 직접 작성해야 합니다.
  • 자원 관리: Connection 등 자원을 제대로 반환하지 않으면 서버 다운 등과 같은 문제가 발생할 수 있습니다.

Persistence Framework

Persistence Framework는 크게 SQL Mapper와 ORM(Object-Relational Mapping)으로 나눌 수 있습니다.

특징

  • 영속성(Persistence): 프로그램이 종료되어도 데이터가 사라지지 않습니다.
  • JDBC 기반: 모든 Persistence Framework는 내부적으로 JDBC API와 PreparedStatement를 사용합니다.
  • 자원 관리의 자동화: Connection 등 리소스 관리와 예외 처리를 자동화 해줍니다.

SQL Mapper

개발자가 직접 SQL을 작성하고, 그 결과를 객체에 매핑해주는 방식입니다.

Spring JDBC Template

  • JDBC의 반복적인 자원 관리, 예외 처리, ResultSet 매핑 등을 자동화합니다.
  • SQL은 여전히 직접 작성하지만 코드가 훨씬 간결해진다는 장점이 있습니다.
  • DB의 연결 정보는 설정파일(yml, properties)로 관리합니다.
  • PreparedStatement를 내부적으로 사용합니다.

MyBatis

  • SQL을 XML 파일이나 어노테이션에 분리해 관리할 수 있습니다.
  • SQL과 자바 객체 간 매핑을 자동화하며, 복잡한 쿼리도 자유롭게 작성할 수 있습니다.
  • JDBC 코드 대부분을 추상화하고, 파라미터 바인딩과 결과 매핑을 자동 처리 합니다.

한계

  • 여전히 SQL 문을 직접 작성하여 쿼리문이 달라질 때마다 수정을 해야합니다.
  • CRUD 코드 반복이 여전히 남아있습니다.

ORM

객체와 데이터베이스 테이블을 자동으로 매핑해주는 방식입니다. 개발자는 자바 객체를 중심으로 코드를 작성하고 SQL은 프레임워크가 자동 생성 및 실행합니다.

장점

  • 객체지향 설계와 데이터베이스 설계 간의 패러다임 불일치 문제를 해결합니다.
  • 반복적인 SQL 작성이 줄어들며 유지보수가 수월해집니다.

단점

  • 러닝 커브가 높고, 복잡한 쿼리는 SQL Mapper와 혼용하는 경우도 있습니다.
  • 성능적으로 이슈가 발생할 수 있어 튜닝이 필요할 수 있습니다.

JPA/Hibernate

  • 자바 객체와 데이터베이스 테이블을 1:1 매핑합니다.
  • SQL을 직접 작성하지 않아도 되고, CRUD와 같은 반복 작업을 자동화합니다.
  • 객체지향의 상속, 연관관계, 캡슐화 등도 데이터베이스에 맞게 변환하여 저장할 수 있습니다.
  • JPQL이라는 객체지향 쿼리 언어로 복잡한 검색 또한 지원합니다.

자료 및 코드 출처: 스파르타 코딩클럽

0개의 댓글