Today I Learned - 51
Spring - 11
- Mybatis CRUD 구현
- h2 Database
- JPA
스프링 부트 - Mybatis CRUD 구현
- 어제에 이어서 수정, 삭제 기능 구현.. 복습 ㄱㄱ!!!
스프링 부트 - h2 Database
- h2 DB?
- 컴퓨터에 내장된 램(RAM) 메모리에 의존하는 DB
- 간편하고 빠르게 활용 가능
- 웹 서버 재부팅하면 기존 데이터 사라짐
- h2 DB 설정 & 접근
- dependency 추가
- application.properties 설정
- 브라우저,
localhost:포트/h2-console
- url, username, password 입력하여 로그인
- 완료
- view에서 실행된 sql문
- h2 db에 연동
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 작업 제공
- Entity(엔티티): DB에 대응하는 클래스와 인스턴스
- 문제점
- (1) 패러다임 불일치
객체를 단순히 데이터 전달 목적으로 사용할 뿐.. 객체지향으로 프로그래밍 할 수 없다.
- (2) 복잡한 쿼리 처리 어려움
Native SQL 써서 해결할 수 있지만, 그러면 특정 DB에 종속되는 문제
- (3)
- (1) 패러다임 불일치
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’