본문 바로가기

JPA3

[자바 ORM 표준 JPA 프로그래밍] JPA 시작 1 데이터베이스 방언 JPA는 특정 데이터베이스에 종속적이지 않은 기술입니다. 따라서 다른 데이터 베이스로 손쉽게 교체할 수 있습니다. 그런데 각 데이터 베이스가 제공하는 SQL문법과 함수가 조금씩 다르다는 문제점이 있습니다. 예를들어 데이터 베이스마다 다음과 같은 차이점이 있습니다. 데이터 타입 : 가변 문자 타입으로 MySQL은 VARCHAR, 오라클은 VARCHAR2를 사용합니다. 다른 함수명 : 문자열을 자르는 함수로 SQL 표준은 SUBSTRING()를 사용하지만 오라클은 SUBSTR()을 사용합니다. 페이징 처리 : MySQL은 LIMIT를 사용하지만 오라클은 ROWNUM을 사용합니다. 이처럼 SQL 표준을 지키지 않거나 특정 데이터 베이스만의 고유한 기능을 JPA에서는 방언( Dialect )이.. 2022. 2. 15.
[자바 ORM 표준 JPA 프로그래밍] JPA 시작 0 Why JPA? SQL에 의존적인 개발 해결 JPA는 아래와 같은 문제점을 해결해 줍니다. 진정한 의미의 계층 분할이 어렵다. 엔티티를 신뢰할 수 없다. SQL에 의존적인 개발을 피하기 어렵다. 바로 애플리케이션에서 SQL을 직접 다룰때 발생하는 문제점을 요약한 부분입니다. 패러다임의 불일치 객체 구조를 테이블 구조에 저장하는데는 한계가 있습니다. 객체와 관계형 데이터베이스는 지향하는 목적이 서로 다르므로 둘의 기능과 표현방법도 다릅니다. 객체지향은 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 있는 다양한 장치들을 제공합니다. 이 부분에서 지금의 개발 단계에서 복잡한 애플리케이션을 다룰때 객체지향은 필수입니다. 관계형 데이터 베이스는 데이터 중심으로 구조화 되어 있고, 집합.. 2022. 2. 13.
JPA Annotation JPA 엔티티와 매핑 관계 객체와 테이블 매핑 : @Entity, @Table 기본 키 매핑 : @Id 필드와 컬럼 매핑 : @Column 연관관계 매핑 : @ManyToOne, @JoinColumn @ Entity 데이터베이스의 테이블과 일대일로 매칭되는 객체 단위를 의미한다. Entity 객체의 인스턴스 하나가 테이블에서 하나의 레코드 값을 의미한다. 따라서 인스턴스를 구분하기 위해 PK를 가지는데 이것은 @id로 정의를 한다. Spring Boot를 설정 시 spring.jp.hibernate.ddl-auto 설정이 create 또는 update로 되어 있는 경우 EntityManager가 자동으로 DDL(Data Definition Language)를 수행해 테이블을 생성해 준다. 이때 명시적으로.. 2021. 2. 21.