728x90

 

 

 

 

JPA란 ❓

 

JPA(Java Persistence API)는 자바 진영의 ORM(Object-Relational Mapping) 기술 표준입니다. ORM은 객체 지향 프로그래밍 언어로 작성된 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 기술을 의미합니다.

JPA는 Java 언어로 작성된 객체와 관계형 데이터베이스 간의 매핑을 간단하고 편리하게 처리할 수 있도록 도와줍니다. 이를 통해 개발자는 SQL 쿼리를 직접 작성하지 않고도 객체를 통해 데이터베이스에 접근하고 관리할 수 있습니다.

ORM을 구현한 여러 프레임워크 중 하나로, Java EE(Java Platform, Enterprise Edition)에서 제공하는 표준 기술입니다. JPA를 사용하려면 JPA를 구현한 구현체를 선택하여 프로젝트에 추가해야 합니다. 대표적인 JPA 구현체로는 Hibernate, EclipseLink, OpenJPA 등이 있습니다.

JPA의 주요 기능과 장점은 다음과 같습니다:

  1. 객체와 테이블 간의 매핑: JPA를 사용하면 객체와 관계형 데이터베이스 테이블 간의 매핑을 어노테이션 또는 XML 설정을 통해 정의할 수 있습니다.

  2. SQL 작성의 간소화: JPA를 사용하면 개발자가 직접 SQL 쿼리를 작성하지 않아도 됩니다. 대신 객체 지향적인 방식으로 쿼리를 작성하고 JPA가 해당 쿼리를 데이터베이스에 맞는 SQL로 변환해줍니다.

  3. 트랜잭션 관리: JPA를 사용하면 데이터베이스 트랜잭션을 자동으로 처리할 수 있습니다. 트랜잭션 관리를 편리하게 처리할 수 있으며, 롤백과 커밋을 자동으로 처리하여 데이터 무결성을 보장합니다.

  4. 캐시 기능: JPA는 엔티티 객체를 캐시하여 성능을 향상시킬 수 있습니다. 반복적으로 조회되는 데이터를 캐시하여 데이터베이스에 매번 접근하지 않아도 되므로 응답 속도를 개선할 수 있습니다.

  5. 객체 지향적인 프로그래밍: JPA를 사용하면 객체 지향 프로그래밍 언어인 Java를 그대로 활용하여 데이터베이스를 다룰 수 있습니다. 이로 인해 코드의 가독성과 유지보수성이 향상됩니다.

JPA는 Java 진영에서 가장 많이 사용되는 ORM 기술이며, 자바 개발자들에게 데이터베이스와의 상호작용을 편리하고 효율적으로 처리할 수 있는 강력한 도구입니다.


ORM이란 ❓

ORM은 Object-Relational Mapping의 약어로, 객체와 관계형 데이터베이스 간의 데이터 매핑을 자동화하는 프레임워크 또는 기술을 의미합니다. ORM은 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 불일치를 해결하기 위해 사용됩니다.

관계형 데이터베이스는 테이블로 구성되어 있고, 데이터는 행과 열의 형태로 저장됩니다. 반면에 객체 지향 프로그래밍에서는 객체들이 상속, 연관 관계 등으로 구성되어 있고, 데이터는 객체의 속성으로 표현됩니다. 이렇게 객체와 테이블 간의 차이로 인해 데이터를 저장, 조회, 변경하기 위해서는 데이터베이스와 객체 사이에 변환 작업이 필요합니다.

 

https://yozm.wishket.com/magazine/detail/2160/

 

객체와 테이블 사이의 매핑 정보를 기반으로 자동으로 SQL 쿼리를 생성하고 데이터를 변환하여 객체에 매핑해줍니다. 이를 통해 개발자는 SQL 쿼리를 직접 작성하지 않고도 객체 지향 프로그래밍 방식으로 데이터를 다룰 수 있습니다.
ORM을 사용함으로써 개발자는 데이터베이스에 종속되지 않고 객체를 직접 다루므로 유지보수가 용이해지고 생산성이 향상됩니다. 또한 객체 지향적인 설계를 유지할 수 있어서 애플리케이션의 유지보수성과 확장성을 높일 수 있습니다.

ORM의 장단점을 살펴보겠습니다.

장점:

  1. 생산성 향상: ORM을 사용하면 개발자는 SQL 쿼리를 직접 작성하지 않아도 되므로 개발 시간이 단축되고 생산성이 향상됩니다. 객체 지향적인 코드로 데이터를 다룰 수 있어서 개발자가 비즈니스 로직에 집중할 수 있습니다.

  2. 유지보수성 증가: ORM은 데이터베이스 스키마와의 결합도를 낮추기 때문에 데이터베이스의 변경에 더 유연하게 대응할 수 있습니다. 데이터베이스 스키마의 변경이 필요할 때도 ORM 매핑만 수정하면 되므로 유지보수성이 증가합니다.

  3. 데이터베이스 독립성: ORM을 사용하면 데이터베이스의 종류에 상관없이 동일한 코드를 사용할 수 있어서 데이터베이스 독립성이 높아집니다. 애플리케이션이 다른 데이터베이스로 이전하더라도 비교적 쉽게 대응할 수 있습니다.

  4. 객체와 데이터베이스 간의 매핑 지원: ORM은 객체와 데이터베이스 간의 매핑을 자동으로 처리해주기 때문에 개발자가 직접 데이터 변환 작업을 하지 않아도 됩니다. 이를 통해 객체지향 설계를 그대로 유지할 수 있습니다.

단점:

  1. 성능 문제: ORM은 SQL 쿼리를 자동으로 생성해주지만, 때로는 개발자가 직접 최적화된 쿼리를 작성하는 것보다 성능이 떨어질 수 있습니다. 복잡한 쿼리를 처리할 때 성능 문제가 발생할 수 있으며, 이를 해결하기 위해서는 추가적인 튜닝이 필요할 수 있습니다.

  2. 학습 곡선: ORM을 처음 사용하는 개발자들은 ORM의 개념과 사용법을 익히는 데 시간이 걸릴 수 있습니다. ORM을 올바르게 이해하고 사용하기 위해서는 ORM의 동작 원리와 제공하는 기능들을 숙지해야 합니다.

  3. 복잡한 매핑: 일부 경우에는 복잡한 객체와 데이터베이스 간의 매핑이 필요할 수 있습니다. 특히 다대다 관계나 상속 관계 등을 매핑하는 것은 어려울 수 있습니다.

  4. 완벽한 대체물은 아님: ORM은 객체와 데이터베이스를 매핑해주는 유용한 기술이지만, 모든 상황에 완벽하게 대체물은 아닙니다. 특정 상황에서는 직접 SQL 쿼리를 작성하는 것이 더 효율적일 수 있습니다.

 


 

✅ Lombok

  • Lombok은 자바에서 반복적으로 작성해야 하는 코드들을 자동으로 생성해주는 라이브러리입니다. Lombok을 사용하면 @Getter, @Setter, @ToString, @EqualsAndHashCode, @Data 등의
    어노테이션을 사용하여 Getter/Setter 메서드, toString(), equals(), hashCode() 메서드 등을 자동으로 생성할 수 있습니다.

  • 또한, @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor 등의 어노테이션을 사용하여 생성자를 자동으로 생성할 수도 있습니다.

Thymleaf

  • Thymeleaf는 서버 사이드 Java 템플릿 엔진으로, 웹 페이지를 동적으로 생성하는 데 사용됩니다. Thymeleaf는 HTML 파일 내에 Thymeleaf 템플릿 속성을 사용하여
    서버에서 전달한 데이터를 동적으로 삽입하거나 반복문, 조건문 등을 사용하여 웹 페이지를 동적으로 렌더링할 수 있습니다.

  • Spring Boot와 함께 사용하면 Spring Boot의 기능과 통합하여 편리하게 웹 애플리케이션을 개발할 수 있습니다.

Oracle DataBase

  • Oracle Database는 오라클이 개발한 관계형 데이터베이스 관리 시스템(RDBMS)입니다. Oracle Database를 사용하기 위해서는 해당 데이터베이스와의 연동을 위한 JDBC(Java Database Connectivity) 드라이버가 필요합니다.

  • ojdbc10은 오라클의 JDBC 드라이버 중 하나로, JDK 10 버전 이상을 지원합니다. Oracle Database와 Java 애플리케이션 간의 데이터베이스 연동을 위해 이 드라이버를 사용할 수 있습니다.
728x90
반응형

+ Recent posts