JPA와 JDBC는 어떻게 다른가요?
저는 자바 EE를 배우고 있는데 글래스피쉬로 일식을 다운받았습니다.Java EE 5에 대한 모든 것을 알기 위해 몇 가지 예를 보고 Oracle 문서를 읽었습니다.데이터베이스 접속은 매우 간단했습니다.동적 웹 프로젝트를 열고 세션 EJB를 만들고 EntityManager를 사용했으며 get 메서드를 사용하여 저장된 데이터 테이블에 액세스할 수 있었습니다.
다음 프로젝트에서는 간단한 클래스를 만들고 DB 테이블에 액세스했습니다.가장 먼저 발생한 문제는 PersistenceUnit 속성이 EJB, Servlet 등에 의해서만 인식되고 단순한 Java 클래스는 인식되지 않는다는 것입니다.그래서 Entity Manager 방식을 사용할 수 없었습니다(또는 사용할 수 있습니까).
'JDBC'로 가라는 부탁을 받았습니다.제가 처음 접한 문제는 DB에 접속하는 것이었습니다.이 모든 게 하드코드 되어야 할 것 같아.데이터베이스 연결을 쉽게 구성할 수 있는 persistence.xml이 있습니다.DB용 드라이버 셋업도 간단했습니다.또한 테이블 엔티티에 액세스하기 위한 get/set 메서드는 JDBC에 없습니다.
JDBC에 관한 JPA 및 지속성을 이해하려면 어떻게 해야 합니까?JPA는 무엇을 생각했을까?set/get 방식이 있는 이유는 무엇입니까?이 두 가지의 본질과 '자그널'이 없는 장점과 단점이 무엇인지 누가 좀 밝혀줄 수 있을까요?링크도 제안해 주세요.JPA와 JDBC의 차이점에 대한 간단한 구글 검색으로 따라갈 수 없는 "용어"로 가득 찬 사이트를 볼 수 있었습니다.
평신도의 표현:
- JDBC는 데이터베이스 액세스의 표준입니다.
- JPA는 ORM의 표준입니다.
SQL을 입니다( JDBC DB).SELECT * FROM USERS
앱에서 할 수 , 세트는 할 수INSERT
,DELETE
프로시저 대부분의 Java 데이터베이스 액세스(JPA 공급자 포함)의 기반이 되는 테크놀로지 중 하나입니다.
기존 JDBC 애플리케이션의 문제 중 하나는 데이터 세트와 객체 간에 많은 매핑이 발생하거나 SQL과 로직이 혼합되는 등 코드가 엉망이 되는 경우가 많다는 것입니다.
JPA는 객체 관계 매핑의 표준입니다.이것은 코드와 데이터베이스 테이블 내의 오브젝트 사이를 매핑할 수 있는 테크놀로지입니다.이를 통해 SQL을 개발자로부터 "숨김"할 수 있으며, 이러한 SQL에서 다루는 것은 Java 클래스뿐입니다. 공급자는 사용자가 SQL을 저장하고 마법처럼 로드할 수 있도록 합니다.대부분의 경우 XML 매핑파일 또는 getters 및 setters 주석을 사용하여 JPA 프로바이더에 오브젝트의 어느 필드가 DB의 어느 필드에 매핑되는지 알 수 있습니다.가장 유명한 JPA 공급자는 Hibernate이기 때문에 구체적인 예시를 살펴보는 것이 좋습니다.
기타 예로는 OpenJPA, topplink 등이 있습니다.
Hidernate 및 기타 대부분의 JPA 공급자는 SQL을 작성하고 JDBC를 사용하여 DB를 읽고 씁니다.
JPA와 JDBC의 주요 차이점은 추상화 수준입니다.
JDBC는 데이터베이스와의 상호 작용을 위한 낮은 수준의 표준입니다.JPA는 같은 목적을 위한 상위 수준의 표준입니다.JPA를 사용하면 응용 프로그램에서 객체 모델을 사용할 수 있으므로 생활이 훨씬 쉬워집니다.JDBC를 사용하면 데이터베이스로 직접 더 많은 작업을 수행할 수 있지만 더 많은 주의가 필요합니다.일부 태스크는 JPA를 사용하여 효율적으로 해결할 수 없지만 JDBC를 통해 보다 효율적으로 해결할 수 있습니다.
JDBC는 JPA보다 훨씬 낮은(및 오래된) 사양입니다.기본적으로 JDBC는 순수한 SQL을 사용하여 데이터베이스와 상호 작용하여 쿼리를 전송하고 결과를 검색하기 위한 API입니다.오브젝트나 계층에 대한 개념이 없습니다.JDBC를 사용하는 경우 결과 세트(기본적으로 1개 이상의 데이터베이스 테이블에서 반환된 값의 행/열 매트릭스)를 Java 개체로 변환하는 것은 사용자에게 달려 있습니다.
JDBC를 이해하고 사용하려면 SQL에 대한 이해와 실무 지식이 필요합니다.이와 함께 관계형 데이터베이스란 무엇인지, 관계형 데이터베이스와 관련된 작업 방식 및 테이블, 열, 키 및 관계와 같은 개념에 대한 필수 통찰력도 제공됩니다.데이터베이스, SQL 및 데이터 모델링에 대한 기본적인 지식이 없으면 JDBC는 실제로 이러한 것 위에 있는 얇은 추상화일 뿐이기 때문에 그다지 활용할 수 없습니다.
JDBC는 JPA의 전신입니다.
JDBC는 Java 월드와 데이터베이스 월드 간의 브리지입니다.JDBC에서는 테이블 이름, 열 이름 등 CRUD 작업에 필요한 모든 더러운 세부 정보를 노출해야 하며 JPA(아래에서 JDBC를 사용 중)에서는 Java 주석을 사용하여 데이터베이스 메타데이터의 세부 정보도 지정합니다.
따라서 JPA는 사용자를 위해 업데이트 쿼리를 생성하고 검색하거나 작성/업데이트한 엔티티를 관리합니다(더 많은 작업을 수행합니다).
Java EE 컨테이너 없이 JPA를 수행하려는 경우 스프링 및 해당 라이브러리를 동일한 Java 주석과 함께 사용할 수 있습니다.
영속적인 데이터를 사용하기 위해서는 두 데이터베이스 기술이 매우 다른 접근방식을 취하기 때문에 JPA와 JDBC의 차이는 종종 결정적인 요소입니다.JDBC: 개발자가 객체 지향 시멘틱스를 사용하여 데이터베이스 기반 Java 프로그램을 구축할 수 있도록 합니다.
JPA는 데이터베이스에 의존하지 않습니다.즉, 동일한 코드를 수정 없이 다양한 데이터베이스에서 사용할 수 있습니다.JPA는 개발자로부터의 낮은 수준의 JDBC 콜을 숨기는 추상화 레이어 역할을 하므로 데이터베이스 코딩이 상당히 쉬워집니다.
hibernate는 JPA hibernate를 구현한 것입니다.jpa 쿼리에 대한 자세한 내용은 여기를 참조하십시오.
언급URL : https://stackoverflow.com/questions/11881548/jpa-or-jdbc-how-are-they-different
'source' 카테고리의 다른 글
템플릿의 모델 인스턴스 필드 이름 및 값에 대해 반복 (0) | 2023.01.19 |
---|---|
max_allowed_packet 크기를 변경하는 방법 (0) | 2023.01.09 |
목록을 비우려면 어떻게 해야 하나요? (0) | 2023.01.09 |
MySQL 5.1보다 느린 Mariadb 5.5 (0) | 2023.01.09 |
Jest: 객체 키와 값을 테스트하는 방법 (0) | 2023.01.09 |