2022.07.27.TIL
JPA 조사:
[Spring JPA] JPA 란?
이번 글에서는 JPA(Java Persistence API)가 무엇인지 알아보려고한다. JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된것이
dbjh.tistory.com
JPA는 자바 진영에서 ORM(Object-Relational Mapping) 기술 표준으로 사용되는 인터페이스의 모음이다. 그 말은 즉, 실제적으로 구현된것이 아니라 구현된 클래스와 매핑을 해주기 위해 사용되는 프레임워크이다. ORM이란 애플리케이션 Class와 RDB(Relational DataBase)의 테이블을 연결(mapping)한다는 뜻이다.
JPA의 장점:
- SQL문이 아닌 Method를 통해 DB를 조작할 수 있어, 개발자가 SQL을 신경쓰지 않아도 됨
- Query문을 사용하지 않아 코드의 가독성을 높임
- 자바를 통해 객체지향적인 코드 작성이 가능함
- 매핑하는 정보가 Class로 명시 되었기 때문에 ERD를 보는 의존도를 낮출 수 있고 유지보수 및 리팩토링에 유리
- 사용하고 있는 RDMS를 쉽게 바꿀 수 있음
단점:
- 프로젝트의 규모가 크고 복잡하여 설계가 잘못된 경우, 속도 저하 및 일관성을 무너뜨리는 문제점이 생길 수 있음
- 복잡하고 무거운 Query는 속도를 위해 별도의 튜닝이 필요하기 때문에 결국 SQL문을 써야할 수도 있음
- 학습비용이 비쌈
스프링에서 사용하고 있는 것은 JPA를 이용하는 spring-data-jpa 프레임워크이지 JPA는 아니다.
JPA의 영속성: https://velog.io/@seho100/JPA-영속성-컨텍스트
[JPA] 영속성 컨텍스트
JPA에서 가장 중요한 2가지 아래와 같다.객체와 관계형 데이터베이스 매핑영속성 컨텍스트JPA를 이해하는데 가장 중요한 용어엔티티를 영구 저장하는 환경 이라는 뜻EntityManager.persist(entity);데이
velog.io
RDBMS vs NoSQL 조사:
RDBMS: RelationalDataBaseManagementSystem 관계형 DB
Database System의 역사:
1960년대 이전:
- data processing이 magnetic tapes로 보관됨 → 순차접근만 가능
1960년 후반 ~ 1970년대:
- hard disk의 발명이 data에 direct access 하는걸 가능하게 만들어 줌
- db들은 각자 다양한 data model을 사용함(hierarchical model, network model 등)
- 아직 high-level query language를 지원하지 않음
Ted Codd (1923 - 2003)
- data를 relations라 부르는 table로 구성하는 database system을 제안함→현대 sql의 기초
1980년대:
- relational DB의 prototype이 개발되었고 SQL이 산업 표준이 됨
- 객체 지향 database system
1990년대:
- 오픈소스 RDBS가 널리 쓰기에 됨(MySQL, PostgreSQL 등)
2000년대 초: XML,XQuery가 표준이 됨 (이제는 XML이 아닌 json이 표준)
2000년대 후: giant data storage system이 생김 ex)Google BigTable, 하나의 슈퍼컴퓨터로는 저런 거대한 데이터를 다루는 것이 불가능 해짐
FIle System의 한계:
- Atomic한 업데이트가 불가능 ex)a가 b에게 송금 시 a의 잔액이 줄어듬과 b의 잔액이 증가함은 항상 함께 일어나야 함(다 일어나거나 다 일어나지 않거나)
- 하나의 데이터에 여러 사람이 동시에 접근했을 시 문제가 발견할 수 있음
- 일부 정보만 숨기기 힘듬(보안의 문제)
Database의 추상화:
- Physical level: 물리적으로 정보가 저장되는 곳
- Logical level: data의 저장을 설명(descibe)하는 곳(sql)
- View level: data를 보는 부분(프로그래머가 보이고 싶은 정보만 보일 수 있음)
- 각 level은 독립적이라 서로 영향을 받지 않음(서버가 증설되어도(physical) 프로그래머(logical)는 신경 x)
Data model → 데이타 나 정보를 설명하는 방법:
- how to organize data
- how to access/manipulate data
- how to give some rules(규칙) and constraints(제한조건) on data
Data model의 종류:
- Relational model
- Entity-relationship data model(ER모델, 데이터 설계에 사용)
- Semistructured data model(XML)
- NoSQL(형식이 따로 없는 data model, sql의 규칙과 제한조건을 따르지 않는다.)
Relational Model of Data:
- Data가 relations라 불리는 많은 tables로 저장된다.
attribute(이름) | attribute | attribute | attribute | |
id | 이름 | 직업 | 나이 | ←schema |
3122 | 이아름 | 무직 | 21 | ←instance |
1523 | 김철수 | 회사원 | 35 | ←instance |
0923 | 최철민 | 의사 | ←instance | |
tuples(값들) | tuples | tuples | tuples |
- 테이블 전체를 entity라 부름, 각 entity를 join해서 새로운 entity를 표현할 수도 있다.
- Relation schema : relation의 논리 구조, relation의 이름과 그것을 구성하는 attribute들로 나뉨,
- 흔히 테이블의 column이라고 함
- Relation instance: schema의 값들(저장된 data)
- Key: 중복이 되지 않는 attributes
SQL(Structured Query Language)
- 비절차적이고 선언적인 언어, relation database를 설명할 때 사용
UML그리기:
[UML] 유스케이스 다이어그램(Usecase Diagram)
[UML] 유스케이스 다이어그램(Usecase Diagram) 시스템과 사용자의 상호작용을 다이어그램으로 표현한 것으로, 사용자의 관점에서 시스템의 서비스, 기능, 외부와의 관계에 대해서 다이어그램으로
narup.tistory.com
API명세서 작성:
Spring Bean:
https://melonicedlatte.com/2021/07/11/232800.html
스프링 빈(Spring Bean)이란? 개념 정리 - Easy is Perfect
melonicedlatte.com
CS스터디:
파이프라이닝: https://jokerkwu.tistory.com/120
[ 기술면접 / 컴퓨터구조] 파이프 라이닝
파이프라이닝이란? 명령어를 순차적으로 실행하는 프로세서에 적용되는 기술로, 한 번에 하나의 명령어만 실행하는 것이 아니라 하나의 명령어가 실행되는 도중에 다른 명령어를 실행을 시작
jokerkwu.tistory.com
스프링링 MVC
Spring MVC Framework란 무엇인가? Spring MVC의 구조와 의의
Spring MVC란 무엇인가? Spring MVC는 Spring에서 제공하는 웹 모듈로, Model, View, Controller 세가지 구성요소를 사용해 사용자의 다양한 HTTP Request을 처리하고 단순한 텍스트 형식의 응답부터 REST 형식의..
kotlinworld.com
https://catsbi.oopy.io/f52511f3-1455-4a01-b8b7-f10875895d5b
스프링 MVC - 구조 이해
목차
catsbi.oopy.io
[Spring] MVC 패턴 & Spring Framework MVC
[해당 포스트는 개인적으로 공부를 하고 차후에 참고용으로 하고자 작성한 것입니다. 따라서 잘못된 부분이나 부족한 부분이 있을 수 있기에 참고하시기 바랍니다.] Spring Framework로 웹 개발을 할
aridom.tistory.com