DB 연동

ORM

  • 클래스와 RDB의 테이블은 어쩔 수 없는 불일치가 존재한다. ➝ ORM은 이를 해결하는 역할을 하여 쿼리문 작성이 아닌 code로 데이터를 조작할 수 있다.

  • 장점
    1. 데이터베이스 쿼리를 객체지향적으로 조작할 수 있어 쿼리문 작성 양이 줄어 개발비용이 줄어들고 코드의 가독성을 높인다.
    2. 매핑된 모든 객체들은 독립적으로 작성되어있어 재사용 및 유지보수가 수월하다.
    3. 객체를 기반으로 DB 테이블을 관리하므로 데이터베이스에 종속적이지 않아 DB 교체 상황에서의 리스크가 적다.
  • 단점
    1. 복잡한 서비스의 경우 ORM만으로 구성하게 되면 속도 저하 등의 성능 문제가 발생한다.

JPA

  • 자바의 ORM 기술 표준
  • JPA 기반의 구현체: Hibernate / EclipseLink / DataNucleus Hibernate
    • 자바의 ORM Framework
    • Spring Data JPA를 활용하여 이 기능을 더욱 편하게 사용할 수 있다.
    • CRUD 처리에 필요한 인터페이스를 제공한다.
    • 엔티티 매니저를 직접 다루지 않고 리포지토리를 정의하여 사용함으로써 스프링이 적합한 쿼리를 동적으로 생성하는 방식으로 데이터베이스를 조작
  • 영속성 컨텍스트
    • 애플리케이션과 DB 사이 엔티티와 레코드의 괴리를 해소하는 기능과 객체를 보관하는 기능및 객체 보관 기능
    • 엔티티가 Context에 들어오면 JPA는 엔티티 객체의 매핑 정보를 DB에 반영하는 작업 수행

Entity

데이터 베이스의 테이블에 대응하는 클래스

  • 데이터베이스에 쓰일 테이블과 칼럼을 정의
  • 엔티티에 어노테이션을 사용해 테이블 간 연관관계를 정의할 수 있음

엔티티 어노테이션

  1. @Entity: 클래스가 엔티티임을 명시하기 위한 어노테이션
  2. @Table: 클래스의 이름과 테이블의 이름을 다르게 지정해야 하는 경우 사용
  3. @Id: 테이블의 기본값임을 명시하는 어노테이션. 모든 엔티티에 반드시 필요한 값
  4. @GeneratedValue: 일반적으로 @Id와 함께 사용되는 값. 어떤 방식으로 필드값을 생성할 지 결정하는데 사용

    사용하지 않는 경우:애플리케이션에서 자체적으로 고유한 기본값을 생성하는 경우 사용
    AUTO: 기본 설정값. 기본값을 사용하는 DB에 맞게 자동 생성
    IDENTITY: 기본값 생성을 데이터베이스에 위임
    SEQUENCE: 식별자 생성기를 설정한 후 값을 주입받는 방식
    TABLE: 어떤 DBMS를 사용하더라도 동일하게 동작하기 원할 경우 사용

  5. @Column: 별 다른 설정을 하지 않을 거면 사용 X

    name: 데이터베이스의 칼럼명을 설정하는 속성
    nullable: null값이 가능한지 설정할 경우
    length: 데이터의 최대 길이 설정
    unique: 해당 칼럼을 유니크로 설정할 경우 사용

  6. @Transient: 엔티티 클래스에는 선언되어 있는 필드이지만 데이터베이스에는 필요 없을 경우 사용

repository

엔티티가 생성한 데이터베이스에 접근하는데 사용

  • 접근하려는 테이블과 매핑되는 엔티티에 대한 인터페이스 생성 후 JpaRepository를 상속 받음

DAO

데이터베이스에 접근하기 위한 로직을 관리하는 객체

  • 비즈니스 로직 동작 과정 중 데이터를 조작하는 기능 수행

Service

DAO에서 구현한 기능을 호출해서 결괏값을 가져오는 작업 수행

homebdy
homebdy 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람. 개발에 이제 막 발 담근 사람.
comments powered by Disqus