항해99 4주차 WIL
1. 스프링 숙련, 로그인과 회원가입, 스프링 시큐리티 JWT
이번 주차 과제는 미완성이었다. 스프링 시큐리티에 대한 전체적인 구도를 알지 못했고 세션과 쿠키, jwt의 개념 정도만 알고 나머지 구현은 거의 강의 예제 복붙이었다. 심지어 프론트엔드는 존재하지 않아 내가 만든 기능들이 맞게 구현됐는지 확인할 방도가 없었다. 항해 초기에 프론트엔드는 자기가 만든 것을 곧바로 확인이 가능한 점이 장점이라는 것이 얼마나 큰 장점인지 알게되었다. 또한 테스트 케이스를 활용하는 것이 부족하다고 많이 느끼게 되었다. 기능 구현 뿐만 아니라 그것을 총체적으로 어떻게 설정하고 포멧을 다룰 것인지도 중요한 포인트라고 많이 느끼는 한 주였다. 스프링 시큐리티와 테스트 프레임워크에 대해 좀 더 공부해야 할 것 같다.
2. ORM
ORM은 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 뜻한다.
- 객체지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.
- 객체 모델과 관계형 모델 간에 불일치가 존재한다.
- ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.
- 객체를 통해 간점적으로 데이터베이스 데이터를 다룬다.
ORM의 장점
- 객체지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.
- ORM을 사용하면 SQL 쿼리가 아닌 직관적인 코드로 데이터를 조작할 수 있어 개발자가 객체 모델로 프로그래밍하는데 집중할 수 있도록 도와준다.
- 선언문, 할당, 종료 같은 부수적인 코드가 없거나 급격히 줄어든다.
- 각종 객체에 대한 코드를 별도로 작성하기 때문에 코드의 가독성을 올려준다.
- SQL의 절차적이고 순차적인 접근이 아닌 객체지향적인 접근으로 인해 생산성이 증가한다.
- 재사용 및 유지 보수의 편리성이 증가한다.
- ORM은 독립적으로 작성되어 있고, 해당 객체들을 재활용할 수 있다.
- 때문에 모델에서 가공된 데이터를 컨트롤러에 의해 뷰와 합쳐지는 형태로 디자인 패턴을 견고하게 다지는데 유리하다.
- 매핑 정보가 명확하여, ERM를 보는 것에 대한 의존도를 낮출 수 있다.
- DBMS에 대한 종속성이 줄어든다.
- 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하기 때문에 RDBMS의 데이터 구조와 자바 객체지향 모델 사이의 간격을 좁힐 수 있다.
- 프로그래머는 객체에 집중함으로 극단적으로 DBMS를 교체하는 거대한 직업에도 비교적 적은 리스크와 시간이 소요된다.
ORM의 단점
- 완벽한 ORM 으로만 서비스를 구현하기가 어렵다.
-프로젝트의 복잡성이 커질경우 난이도 또한 올라갈 수 있다.
- 사용하기는 편하지만 설계는 매우 신중하게 해야한다.
-잘못 구현된 경우에 속도 저하 및 심각할 경우 일관성이 무너지는 문제점이 생길 수 있다.
출처:https://gmlwjd9405.github.io/2019/02/01/orm.html
[DB] ORM이란 - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
3. SQL
SQL이란
- SQL은 구조적 질의 언어의 줄임말로, 관계형 데이터베이스 시스템에서 자료를 관리 및 처리하기 위해 설계된 언어다.
- SQL은 1970년대 IBM에서 최초로 개발되었으며 관계형 모델이라는 이론에서 파생된 특징을 가지고 있는데, 현재 SQL 표준으로 ANSI SQL이 정립되었다. 각 DBMS 프로그램에서 ANSI SQL을 기반으로 개발된 개별 SQL을 사용하며 서로 근소한 차이를 보인다.
SQL 문법의 종류
-SQL 문법은 크게 3 종류로 나누어진다.
- DDL, 데이터 정의 언어 -> 각 릴레이션을 정의하기 위해 사용되는 언어
- DML, 데이터 조작언어 -> 데이터를 추가/수정/삭제하기 위한, 데이터 관리를 위한 언어입니다.
- DCL, 데이터 제어 언어 -> 사용자 관리 및 사용자별로 릴레이션 또는 데이터를 관리하고 접근하는 권한을 다루기 위한 언어
구름EDU - 모두를 위한 맞춤형 IT교육
구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/
edu.goorm.io
4. MVC
- MVC 패턴은 디자인 패턴 중 하나이다.
- 디자인 패턴이란 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게
적용해서 쓸 수 있는 것을 정리하여 특정한 "규약"을 통해 쉽게 쓸 수 있는 형태로 만든 것을 말한다.
- MVC 는 Model, View, Controller의 약자 입니다. 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의
역할로 구분한 패턴이다.
모델
- 모델은 애플리케이션의 정보, 데이타를 나타낸다.
- 데이타베이스, 처음의 정의하는 상수, 초기화값, 변수 등을 뜻한다.
- 또한 이러한 DATA, 정보들의 가공을 책임지는 컴포넌트를 말한다.
모델의 규칙
- 1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.
- 2. 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다.
- 3. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 한다.
뷰
- input 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타낸다.
- 다시 말해 데이터 및 객체의 입력, 그리고 보여주는 출력을 담당한다.
- 데이타를 기반으로 사용자들이 볼 수 있는 화면이다.
뷰의 규칙
- 1. 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
- 2. 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 된다.
- 3. 변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 한다.
컨트롤러
- 데이터와 사용자인터페이스 요소들을 잇는 다리역할을 한다.
- 즉, 사용자가 데이터를 클릭하고, 수정하는 것에 대한 "이벤트"들을 처리하는 부분을 뜻한다.
컨트롤러의 규칙
- 1. 모델이나 뷰에 대해서 알고 있어야 한다.
- 2. 모델이나 뷰의 변경을 모니터링 해야 한다.
출처:https://m.blog.naver.com/jhc9639/220967034588
[개발자 면접준비]#1. MVC패턴이란
오늘은 개발자면접에 많이 나오기도 하는 MVC패턴에 대해서 알아보고자 합니다. 과연 MVC패턴이 무엇...
blog.naver.com
4. 스프링 심화 주차
스프링 심화 주차는 JPA와 데이터베이스를 이용하여 현업에서 직접 사용하는 기능들을 실제로 설계하는 관제를 맡았다. 곧 진짜 프론트엔드 분들과 프로젝트가 시작된다. 남은 기간 동안 갈고 닦아야할 것이다. 화이팅!