Hibernate-ORM 개요
JDBC 란 무엇입니까?
JDBC는 Java Database Connectivity. Java 프로그램에서 관계형 데이터베이스에 액세스하기위한 Java API 세트를 제공합니다. 이러한 Java API를 사용하면 Java 프로그램이 SQL 문을 실행하고 SQL 호환 데이터베이스와 상호 작용할 수 있습니다.
JDBC는 다른 플랫폼에서 실행될 수 있고 수정없이 다른 DBMS와 상호 작용할 수있는 데이터베이스 독립 응용 프로그램을 작성할 수있는 유연한 아키텍처를 제공합니다.
JDBC의 장단점
JDBC의 장점 | JDBC의 단점 |
---|---|
깨끗하고 간단한 SQL 처리 대용량 데이터에서 좋은 성능 소규모 애플리케이션에 매우 적합 배우기 쉬운 간단한 구문 |
대규모 프로젝트에서 사용되는 경우 복잡함 큰 프로그래밍 오버 헤드 캡슐화 없음 MVC 개념을 구현하기 어려움 쿼리는 DBMS에 따라 다릅니다. |
왜 객체 관계형 매핑 (ORM)인가?
객체 지향 시스템으로 작업 할 때 객체 모델과 관계형 데이터베이스간에 불일치가 있습니다. RDBMS는 데이터를 표 형식으로 표현하는 반면 Java 또는 C #과 같은 객체 지향 언어는 상호 연결된 객체 그래프로 표현합니다.
적절한 생성자와 관련 공용 함수가있는 다음 Java 클래스를 고려하십시오.
public class Employee {
private int id;
private String first_name;
private String last_name;
private int salary;
public Employee() {}
public Employee(String fname, String lname, int salary) {
this.first_name = fname;
this.last_name = lname;
this.salary = salary;
}
public int getId() {
return id;
}
public String getFirstName() {
return first_name;
}
public String getLastName() {
return last_name;
}
public int getSalary() {
return salary;
}
}
위의 객체가 다음 RDBMS 테이블에 저장되고 검색된다는 것을 고려하십시오.
create table EMPLOYEE (
id INT NOT NULL auto_increment,
first_name VARCHAR(20) default NULL,
last_name VARCHAR(20) default NULL,
salary INT default NULL,
PRIMARY KEY (id)
);
첫 번째 문제, 몇 페이지 나 애플리케이션을 개발 한 후 데이터베이스 디자인을 수정해야한다면 어떻게해야할까요? 둘째, 관계형 데이터베이스에 객체를로드하고 저장하면 다음과 같은 5 가지 불일치 문제에 노출됩니다.
Sr. 아니. | 불일치 및 설명 |
---|---|
1 | Granularity 때로는 데이터베이스의 해당 테이블 수보다 많은 클래스가있는 개체 모델이 있습니다. |
2 | Inheritance RDBMS는 객체 지향 프로그래밍 언어의 자연스러운 패러다임 인 상속과 유사한 것을 정의하지 않습니다. |
삼 | Identity RDBMS는 정확히 하나의 '동일성'개념 인 기본 키를 정의합니다. 그러나 Java는 객체 ID (a == b)와 객체 동등성 (a.equals (b))을 모두 정의합니다. |
4 | Associations 객체 지향 언어는 객체 참조를 사용하여 연관을 나타내는 반면 RDBMS는 연관을 외래 키 열로 나타냅니다. |
5 | Navigation Java와 RDBMS에서 객체에 액세스하는 방법은 근본적으로 다릅니다. |
그만큼 OBject-R기분 좋은 Mapping (ORM)은 위의 모든 임피던스 불일치를 처리하는 솔루션입니다.
ORM은 무엇입니까?
ORM은 OBject-R기분 좋은 Mapping (ORM)은 관계형 데이터베이스와 Java, C # 등과 같은 객체 지향 프로그래밍 언어간에 데이터를 변환하는 프로그래밍 기술입니다.
ORM 시스템은 일반 JDBC에 비해 다음과 같은 장점이 있습니다.
Sr. 아니. | 장점 |
---|---|
1 | 비즈니스 코드가 DB 테이블이 아닌 객체에 액세스합시다. |
2 | OO 논리에서 SQL 쿼리의 세부 정보를 숨 깁니다. |
삼 | JDBC 'under the hood'를 기반으로합니다. |
4 | 데이터베이스 구현을 다룰 필요가 없습니다. |
5 | 데이터베이스 구조가 아닌 비즈니스 개념을 기반으로하는 엔티티. |
6 | 트랜잭션 관리 및 자동 키 생성. |
7 | 응용 프로그램의 빠른 개발. |
ORM 솔루션은 다음과 같은 네 가지 항목으로 구성됩니다.
Sr. 아니. | 솔루션 |
---|---|
1 | 영구 클래스의 개체에 대한 기본 CRUD 작업을 수행하는 API입니다. |
2 | 클래스 및 클래스 속성을 참조하는 쿼리를 지정하는 언어 또는 API입니다. |
삼 | 매핑 메타 데이터를 지정하기위한 구성 가능한 기능입니다. |
4 | 더티 검사, 지연 연관 페치 및 기타 최적화 기능을 수행하기 위해 트랜잭션 객체와 상호 작용하는 기술입니다. |
Java ORM 프레임 워크
Java에는 몇 가지 영구 프레임 워크와 ORM 옵션이 있습니다. 영구 프레임 워크는 개체를 관계형 데이터베이스에 저장하고 검색하는 ORM 서비스입니다.
- Enterprise JavaBeans 엔티티 Bean
- 자바 데이터 객체
- Castor
- TopLink
- 봄 DAO
- Hibernate
- 그리고 더 많은