Spring
- JDBC
JDBC는 DB의 출현 이후 Java 어플리케이션과 DB의 연동을 돕기 위해 만들어진 기술이다.
직접 쿼리를 날릴 때에 같은 쿼리라도 데이터베이스 종류마다 다른 결과를 나타낼 수 있다.
JDBC API라는 추상화 객체는 개발자가 DB에 독립적인 개발환경을 가질 수 있도록 해주려 출현했으며 JDBC Driver Manager, DB마다 상이한 JDBC Driver가 이를 구현한다.
JDBC Driver는 런타임 시점에 connection, statement, resultset을 생성하여 DB와 소통한다.
이 세가지 요소를 사용 후에는 close()를 꼭 호출하여 자원을 해제시켜주어야 한다.
그러나 JDBC에도 단점이 존재하는데, 데이터베이스와 바로 맞닿아 있기 때문에 Connection 자원 관리를 엄격하게 해주어야 하고,
자원 관리와 쿼리 요청에 있어서 중복이 되는 코드가 많이 발생하였다.
이를 보완하고자 나온 개념이 Persistence Framework이다.
- Persistence Framework
여기서 persistence란 의미 그대로 영속성이고 이는 프로그램이 종료되도 데이터가 사라지지 않음을 의미한다.
영속성 프레임워크는 데이터베이스와의 연동과 안정적인 구동을 보장해주는 프레임워크이다.
장점으로는1. JDBC와 동일하게 DBMS에 대한 종속성이 줄어든다.2. 데이터에 대한 객체를 별도로 관리하기 때문에 재사용이 가능하다.(JDBC의 중복 코드 해결)3. 객체지향적인 코드를 지원하고 connection 자원 관리 등 부수적인 코드를 처리해준다.
영속성 프레임워크는 크게 두 종류 SQL Mapper(Query Mapper)와 ORM으로 나누어진다.
- SQL Mapper
SQL Mapper의 mapper란 의미는 SQL와 객체를 Mapping 시켜준다는 의미이며, 약속된 형식으로 작성된 쿼리문과 코드를 JDBC 코드로 바꾸어주는 역할을 수행한다.
대표주자로서는 JDBC Template와 MyBatis가 있다.
JDBC Template는 쿼리 수행결과 - 객체 필드의 매핑, RowMapper로 응답필드 매핑코드 재사용, connection 자원관리 등등의 장점이 있지만 결과값을 객체에 매핑하는 데에 많은 코드가 필요하다는 단점이 있다.
MyBatis는 전자정부 표준이 될 정도로 SQL Mapper의 대표주자이며 XML에 쿼리를 작성하고 JDBC 코드로 바꾸어 실행시키는 역할을
한다.
쿼리와 실행코드가 분리되어 있어 가독성이 좋고 JDBC의 대부분의 기능을 수행할 수 있다는 장점이 존재한다.
그러나 XML의 특성 상 빌드 과정에서 오류가 발생하지 않고, 객체보다는 테이블 지향적이며 DB에 종속적이라는 점을 보안하기 위해 ORM이라는 개념이 제시되었다.
- ORM
ORM은 Object Relational Mapping 의 약자로. 아예 객체와 DB의 테이블을 매핑시키는 객체지향적인 영속성 프레임워크 개념이다.
객체와 매핑되어 더 직관적이며 쿼리문을 따로 작성할 필요가 없어 개발자로 하여금 로직에 집중할 수 있도록 도와준다.
JPA(Java Persistence API) 는 Java ORM 표준으로 JPA는 인터페이스이며, 이를 구현한 구현체가 Hibernate이다.
Hibernate가 내부적으로 쿼리를 생성해주고 JDBC API를 호출해 준다.
그러나 아무리 편하다고 해도 개발자가 직접 쿼리를 수정해야하는 경우도 있기 때문에 Spring Data JPA에서는 JPA를 한단계 더 추상화한 Repository 개념을 제시하며 여러가지 옵션을 줄 수 있다.
알고리즘
- 프로그래머스 : 우박수열 정적분(Level 2, 누적합)
느낀 점
너무 춥다.
'TIL' 카테고리의 다른 글
[23.12.27] (2) | 2023.12.27 |
---|---|
[23.12.26] (0) | 2023.12.26 |
[23.12.20] (1) | 2023.12.20 |
[23.12.19] (1) | 2023.12.19 |
[23.12.18] (0) | 2023.12.18 |