DB
과거 메모장에 적고 저장하듯이 정리되지 않은 상태로 데이터를 저장했었음
->여러 사람이 사용해야하는 경우 문제가 생길수 있어 누락없이 일관되게,묶는 방법을 통해 저장해야됨
방법 : 파일 시스템
-데이터의 중복성
-데이터 종속성
=>데이터 베이스
특징 1.실시간 접근성
-사용자가 데이터를 요청하면 수초 내에 결과를 서비스
특징 2. 계속적인 변화
-삽입, 삭제, 수정 등의 작업을 통해여 바뀐 데이터 값을 저장
특징 3. 동시 공유
-여러 사용자에게 동시 공유, 데이터베이스에 접근하는 프로그램이 여러개
특징 4. 내용에 따른 참조
데이터베이스에 저장된 데이터는 값에 따라 참조.사용자가 조건 제시 -> 데이터 검색
특징 5. 데이터 독립성
-독립데이터의 논리적 구조를 변경시켜도 응용 프로그램은 변경되지 X
데이터베이스 등장 이후 망형 데이터베이스가 주로 사용
-데이터 간 연결 구조가 복잡
-새로운 요구사항이 생기면 시스템 전체 수정
-개발 생산성 낮음
=>관계형 모델

SQL
-DDL / 데이터베이스 구조 정의
-DML / 데이터 조작
-DCL / 권한제어
-TCL / 트랜잭션 관리
테이블 정의
-데이터는 테이블 형태로 저장
-테이블로부터 언하는 자료를 꺼내옴
-새로운 데이터 입력시 테이블 생성 없이 데이터만 추가
WHERE 절 뒤에 오는 조건식
1.비교 연산자

2. 논리 연산자

3. 특수 연산자

4.LIKE 연산자

JPA
자바의 ORM 기술을 쉽게 구현하도록 도와주는 API
-자바에서는 데이터의 영속성을 위한 JDBC를 지원
=>매핑 작업을 개발자가 일일히 수행(번거로움)
JDBC
Interface이고 구현한것은 각 데이터베이스에 맞는 드라이버
도입이후 데이터베이스 종류에 상관없이 똑같은 코드로 해결이 가능해짐
장점
1.표준 인터페이스 제공
-어떤 DB를 사용해도 코딩 스타일 동일
-드라이버만 바꾸면 다른 DB로 전환 가능
2. 직접적인 제어
-SQL문을 자바 코드에서 자유롭게 작성하고 실행 -> 세밀한 DB작업 가능
3.뛰어난 성능
-중간 계층이 없어 순수 SQL 처리 속도가 빠름
단점
1.코드가 길고 복잡
2.반복되는 코드 많음
3.SQL과 자바코드가 섞임
4.DB변경이 힘듦
JPA(Java Persistance API)
-SQL문 직접 쓰지 X (DB 테이블을 자바 객체처럼 다룸)
-객체 저장하면 알아서 INSERT, 수정하면 알아서 UPDATE
=>자바객체만 다루면 백그라운드에서 알아서 DB와 동기화
Hibernate
-JPA의 구현체
-자바 언어에서 사용하는 ORM 프레임워크
-객체지향적인 방식으로 관계형 데이터베이스를 다룰수 있게 도움
=>기보넉인 CRUD 코드 반복적으로 작성해야함
=>인터페이스로 묶기
Sprinf Data JPA
-JPA를 더 간단하고생산성 있게 쓰게 만들어주는 Sprinf 프로젝트
1.의존성 추가
2.User Class 정의(엔티티 정의)
3. 레포지토리 정의(인터페이스 정의)
