TIL

2022.07.27.TIL

rootzero 2022. 7. 27. 17:42

JPA 조사:

https://dbjh.tistory.com/77

 

[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의 한계:

  1. Atomic한 업데이트가 불가능 ex)a가 b에게 송금 시 a의 잔액이 줄어듬과 b의 잔액이 증가함은 항상 함께 일어나야 함(다 일어나거나 다 일어나지 않거나)
  2. 하나의 데이터에 여러 사람이 동시에 접근했을 시 문제가 발견할 수 있음
  3. 일부 정보만 숨기기 힘듬(보안의 문제)

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그리기:

https://narup.tistory.com/70

 

[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

https://kotlinworld.com/326

 

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

https://aridom.tistory.com/61

 

[Spring] MVC 패턴 & Spring Framework MVC

[해당 포스트는 개인적으로 공부를 하고 차후에 참고용으로 하고자 작성한 것입니다. 따라서 잘못된 부분이나 부족한 부분이 있을 수 있기에 참고하시기 바랍니다.] Spring Framework로 웹 개발을 할

aridom.tistory.com