JPA

cy8erpsycho·2023년 8월 14일
0

스프링

목록 보기
2/29
post-thumbnail

JPA란?


1. JPA는 Java Persistance API이다.

프로그램이 데이터를 생성하고 종료되었을 때, 메모리에만 가지고 있으면 데이터가 보존되지 않습니다. 데이터를 생성한 프로그램이 종료되더라도 데이터가 사라지지 않는 특성을 Persistence(영속성) 이라고 합니다.

렘은 휘발성 데이터를 저장할 수 있다. 렘은 전기로 흐른다. 컴퓨터가 꺼지면 렘에 있는 데이터는 사라진다. 정전이 되면 데이터가 다 날라간다. 데이터가 날라가지 않도록 렘에 있는 데이터를 하드디스크(비활성)에
기록하게 되면 영구적으로 기록이 된다. 영속성이란 영구히 데이터가 기록되게 함을 의미한다.

ㅛJPA는 JAVA PERSISTANCE API 자바의 데이터를 영구히 기록할수 있는 환경을 제공하는 api이다.

2. JPA는 ORM 기술이다.

3. JPA는 OOP의 관점에서 모델링을 할 수 있게 해준다. (상속, 콤포지션, 연관관계)

자동차에서 엔진 클래스를 쓰고 싶으면 상속이 아니라 콤포지션을 써야 한다.

4. 방언처리가 용이하며 Migration하기 좋음. 유지보수에도 좋음.

JPA는 MySQL뿐만 아니라 수많은 방언들을 지원한다.

추상화 객체가 오라클이던 MySQL이던 상관없이 사용가능하다.

추상화 객체란 ?

JPA (Java Persistence API)는 자바에서 사용되는 ORM (Object-Relational Mapping) 스펙입니다. ORM은 객체 지향 프로그래밍과 관계형 데이터베이스 간의 불일치 문제를 해결하기 위해 사용되며, 데이터베이스의 테이블과 자바의 객체 간에 매핑을 제공합니다.

JPA의 핵심 목표 중 하나는 다양한 관계형 데이터베이스 시스템을 지원하기 위한 표준화된 API를 제공하는 것입니다. 이렇게 되면 개발자는 특정 데이터베이스에 종속적인 코드를 작성하지 않아도 됩니다.

이것이 "추상화 객체"와 관련이 있는데, JPA를 사용하면 개발자는 데이터베이스의 세부 사항 (예: SQL 문법의 차이)에 신경 쓰지 않고, 일관된 방식으로 코드를 작성할 수 있습니다. JPA 구현체 (예: Hibernate, EclipseLink 등)가 내부적으로 데이터베이스의 종류와 관련된 세부 사항을 처리해줍니다.

예를 들어, 오라클과 MySQL은 일부 SQL 함수나 문법에 차이가 있습니다. JPA를 사용하면, 개발자는 이런 세부 사항에 대해 알 필요가 없습니다. JPA 쿼리를 작성하고, 실행 시 JPA 구현체가 해당 데이터베이스에 맞는 적절한 SQL 쿼리로 변환해 실행합니다. 따라서, 동일한 JPA 코드가 오라클이든 MySQL이든 다른 관계형 데이터베이스에서도 작동하게 됩니다.

이렇게 JPA는 데이터베이스의 세부 사항을 추상화하여, 다양한 데이터베이스 시스템에서 일관된 코드를 작성할 수 있게 도와줍니다.

0개의 댓글