1 minute read

Spring - 11

  • Mybatis CRUD 구현
  • h2 Database
  • JPA



스프링 부트 - Mybatis CRUD 구현

  • 어제에 이어서 수정, 삭제 기능 구현.. 복습 ㄱㄱ!!!



스프링 부트 - h2 Database

  • h2 DB?
    • 컴퓨터에 내장된 램(RAM) 메모리에 의존하는 DB
    • 간편하고 빠르게 활용 가능
    • 웹 서버 재부팅하면 기존 데이터 사라짐


  • h2 DB 설정 & 접근
  1. dependency 추가

h2db



  1. application.properties 설정

h2db2



  1. 브라우저, localhost:포트/h2-console

h2Access



  1. url, username, password 입력하여 로그인

h2Access2



  1. 완료

h2Accessed



  1. view에서 실행된 sql문

view

view2



  1. h2 db에 연동

sync



JPA(Java Persistence API)

  • JPA(Java Persistence API)란?
    • 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스
    • 자바 ORM 기술에 대한 표준 API(자바에서 제공)

      ORM(Object Relation Mapping): 자바 클래스와 DB테이블을 매핑 (sql을 매핑하지 않음!!!)

  • JPA 동작방식
    • (1) Entity Manager Factory
    • -> create 작업 (2) Entity Manager
    • -> operation 작업 (3) Persistence Context
  • 용어 참고
    • Entity(엔티티): DB에 대응하는 클래스와 인스턴스

      @Entity가 붙은 클래스는 JPA에서 관리

    • Entity Manager Factory: 엔티티 매니저 인스턴스를 관리하는 주체
      • 애플리케이션 실행 시 한 개만 생성
      • 사용자 요청이 오면, ‘엔티티 매니저’ 생성
    • Entity Manager: 영속성 컨텍스트에 접근, 엔티티에 대한 DB 작업 제공
  • 문제점
    • (1) 패러다임 불일치

      객체를 단순히 데이터 전달 목적으로 사용할 뿐.. 객체지향으로 프로그래밍 할 수 없다.

    • (2) 복잡한 쿼리 처리 어려움

      Native SQL 써서 해결할 수 있지만, 그러면 특정 DB에 종속되는 문제

    • (3)



Mapper vs ORM

  • (1) SQL Mapper
    • SQL ←mapping→ 자바 객체(Object 필드)
    • SQL문 명시하여 디비 조작(직접적)
    • 단순히 필드를 매핑시키는 것이 목적
    • ex. Mybatis, jdbcTemplate
  • (2) ORM(Object-Relation Mapping/객체-관계 매핑)
    • DB 테이블 ←mapping→ 자바 객체(Object 필드)
    • 객체 간 관계를 바탕으로 SQL문 자동 생성(간접적)

      SQL 쿼리가 아니라 메서드로 데이터를 조작할 수 있다.

    • DB 데이터의 관계를 자바 객체에 반영하는 것이 목적
    • ex. JPA, Hibernate



Spring Data JPA(Java Persistence API)

  • Spring Data JPA
    • JPA: ORM을 위한 자바 EE 표준
    • Spring-Data-JPA: JPA를 더 쉽게 사용하게 하는 프레임워크(스프링 제공)

      추상화 정도: Spring-Data-JPA -> Hibernate -> JPA

  • Spring Data JPA 장점
    • 구현체 교체의 용이성, 저장소 교체의 용이성






Spring 과제

  • 프로젝트 demojpa1 따라하기
  • 수정, 삭제 기능 스스로 해보기
    • ‘demojpa1_Homework’






nice!

Updated: