Hibernate - vs JDBC vs JPA vs Spring Data JPA

한쪽에는 Java 프로그램이 있고 다른 쪽에는 관계형 데이터베이스가 있습니다. 이들을 연결할 때 어떤 일이 발생하는지 확인하고 이를 수행하는 데 도움이 될 수 있는 도구에 대한 개요를 살펴보겠습니다.



Java를 데이터베이스에 연결하는 첫 번째이자 기본 솔루션은 JDBC입니다. JDBC는 "자바 데이터베이스 연결"을 나타냅니다. 1997년 Sun Microsystems에서 출시한 Java의 일부입니다. JDBC를 사용하면 데이터 소스와의 연결을 설정하고 쿼리를 보내고 명령문을 업데이트하고 결과를 처리할 수 있습니다.



간단히 말해 JDBC를 사용하면 Java 애플리케이션 내에서 다음 작업을 수행할 수 있습니다.
  • 데이터 소스와의 연결 설정
  • 데이터 소스에 쿼리 및 업데이트 문 보내기
  • 결과 처리

  • 다음과 같은 경우 JDBC가 훨씬 더 나은 옵션입니다.
  • 앱이 마이그레이션할 필요가 없는 단순 데이터베이스를 사용하는 경우 또는
  • 응용 프로그램에서 2개 또는 2개 이상의 테이블 버전에 대한 개체 매핑이 필요하지 않은 데이터베이스 테이블에 데이터를 저장해야 하는 경우.

  • 요컨대 JDBC는 간단한 프로세스에 더 나은 옵션입니다. JDBC의 유일한 단점은 데이터 세트와 논리 간의 많은 매핑이 SQL과 혼합되는 형편없는 코드가 종종 있을 수 있다는 것입니다. 따라서 JPA가 유용할 때입니다.



    코드와 데이터베이스 테이블의 개체 간 매핑을 허용하는 사양입니다. 이렇게 하면 개발자에게 SQL을 숨길 수 있고 CRUD 작업을 수행하기 위해서만 클래스와 개체를 처리할 수 있습니다. 아래에서 JDBC를 사용하는 JPA에서 Java 주석을 사용하여 이러한 세부 정보를 지정할 수 있는 동안 테이블 이름 및 열 이름과 같은 테이블과 같은 모든 세부 정보를 노출해야 합니다.

    JPA is not a tool or framework. It defines a set concepts that can be implemented by another tool or framework.



    해당 도구 또는 프레임워크는 Hibernate일 수 있습니다. "JPA는 댄스, Hibernate는 댄서"라는 설명을 좋아하므로 JPA는 인터페이스이고 Hibernate는 구현입니다.


  • JDBC와 달리 Hibernate는 데이터베이스 자체와 연결하고 HQL(Hibernate Query Language)을 사용하여 쿼리를 실행한 다음 결과를 Java 객체에 매핑합니다. 또한 Hibernate Annotations는 객체 및 관계형 테이블 매핑에 대한 메타데이터를 제공하는 강력한 방법입니다. ORM(Object Relational Mapping)의 개념을 이해하기 위해 Google "Hibernate Annotations"도 추천합니다.

  • 마지막으로 Spring Data JPA는 Spring Framework의 일부입니다. Spring Data의 목표는 상용구 코드를 줄이는 것입니다. Hibernate와 같은 JPA 제공자 상단에 추가 추상화 계층을 추가합니다. 기본적으로 Spring Data는 Hibernate를 ORM 공급자로 사용합니다. 원하시면 변경 가능합니다. Spring 데이터와 함께 Spring을 사용하는 경우 Spring Boot는 자동으로 연결할 수 있도록 자동 구성을 활성화합니다. 데이터베이스와 프로그램 간의 연결을 설정하려면 호스트, 암호 및 사용자 이름만 필요합니다. 얼마나 간단합니까?



    JpaRepository를 확장하는 인터페이스를 생성하기만 하면 save(), update(), delete() 및 select()와 같은 모든 CRUD 메서드를 사용할 수 있습니다. 또한 이러한 메서드를 사용하여 고유한 작업을 만들 수 있습니다. 모든 구현은 Spring Data에 의해 이루어집니다.

    public interface IUserDAO extends JpaRepository<User, Long> {
        User findByName(String name);
    }
    


    마지막으로... 🏁



    The fastest approach is JDBC since it is the lowest level of java program and relational database. It doesn't have any levels on top of it so if you use it will be fast. However, it just has some complicity and it just adds some a lot of boilerplate code.

    Also you can use a JPA and Hibernate to reduce the amount of boilerplate code and to enable mapping to show the mapping between your java program and database table.

    Finally, Spring Data is the top level and you can use it just to avoid boilerplate code from Hibernate just to hide all the implementations working with database and just to focus on the level of tasks for business instead of thinking how to deal with the database.

    좋은 웹페이지 즐겨찾기