Spring Boot
-
Spring MVC란?Spring Boot/스프링부트 공부 2022. 2. 19. 17:30
Spring MVC란? Sprign MVC란 Spring에 내장되어 있는 Model-View-Controller 구조를 이용해서 Web Application을 개발하는 프레임워크이다. 기본적으로 Presentation Layer를 제공한다. MVC란? MVC 구분 1 View 사용자가 보는 화면, Model data의 렌더링을 담당하며 2 Controller 전체를 제어하는 부분, View와 Model 사이의 인터페이스 역할 3 Model 어플리케이션에서 사용할 데이터 관리 Spring MVC와 MVC는 다르다. MVC는 용도별로 코드를 분리한 디자인 패턴. 개발자가 직접 구현 Spring MVC는 스프링이 제공하는 Framework. 이미 만들어진 클래스들, 주의! Model을 단순히 Entity, D..
-
디자인 패턴- BuilderSpring Boot 2022. 1. 19. 02:37
스프링은 객체 지향 설계 원칙을 극한으로 적용하고 있는 프레임워크다. 객체 지향을 정말 잘 따르는 Best Practice"들이 있는데, 그것이 디자인 패턴이 되겠다. 디자인패턴은 응집도는 높고 결합도는 낮은 코드 디자인의 패턴이다. 과 을 구분해서 바뀌는 부분을 바꿔도, 바뀌지 않는 부분에는 영향을 끼치지 않는 것. 목차 Builder 패턴 Builder 패턴 스프링으로 연습 삼아 Todo list를 간단히 만들었는데, DTO를 사용할때 this.필드 = 매개변수.getter; 로 값을 할당하는게 아니라 @Builder라는 이상한 어노테이션을 사용하는 것을 보았다. 쓰면 뭐가 좋고 정체가 무엇일까? @Builder @NoArgsConstructor @AllArgsConstructor @Data publ..
-
JPA 개념 정리 - 영속성 컨텍스트, 트렌젝션, 1차 캐시, Flush, 쓰기 지연Spring Boot 2022. 1. 16. 05:12
오늘은 간단한 Spring Data JPA의 내부에서 어떻게 작동 하는지를 기록 해본다. 기본적으로 서버가 할 수 있는 일은 한계가 있다. CPU를 100% 사용 중이라던지, 메모리가 full이라던지, 쓰레드가 전부 일하는 중이라던지 서버 컴퓨터가 맛탱이 가는 일이 일어난다. 이를 방지하려고, AWS 로드밸런서로 서버를 여러대로 scale out 한다던지, 다른 놀고 있는 컴퓨터를 찾아서 코딩으로 분산 처리를 해준다던지,,,를 백엔드 개발자가 한다고 한다. 오늘 정리하는 영속성 컨텍스트도 이러한 일을 초점으로 공부하면 좋을 것 같다. 목차 엔티티 매니저 영속성 컨텍스트 1차 캐시 트렌젝션, 쓰기 지연, Flush() 엔티티 매니저 JPA가 제공하는 기술은 크게 2가지 이다. 1) 엔티티와 DB 테이블을 ..
-
DB 연결 시, 특정 객체만 close() 하는 이유Spring Boot/DB 2022. 1. 11. 19:09
코드를 보던 중에 스프링 부트와 디비를 직접 연결하는 경우에는 꼭 연결했다가 해제해주는 것을 보았다. 한번 연결해 놓으면 될 것 같은데 왜 API 기능을 수행할 때마다 연결/해제를 반복해야 하는 걸까? 1) 운영체제가 외부 파일을 "열면" 다른 프로세스가 접근 못하도록 잠금을 하기 때문. DB가 계속 연결 중이면, API가 접근 할때 제약이 있을 수 있어 x.close()로 사용마다 연결을 끊어주어야 한다. When a file is "opened," the OS marks the file as locked, generally so it can't be deleted by other processes while it's being used. x.close() undoes the lock, allowing..
-
JUnit이란?Spring Boot/테스트 2022. 1. 5. 20:52
프로젝트를 하면서 아쉬운 점로 2가지가 있겠다. 하나는 데이터베이스, 둘은 테스트이다. 테스트 코드에 대한 학습이 없어서, 테스트 코드의 존재도 모르고 개발했는데 발표회에 테스트 코드를 척척 완성한 다른 팀들을 보니 너무 부러웠다. 나도 해볼꺼야.. JUnit이란? Java 언어의 단위 테스트 프레임워크이다. 기능 단위, 메서드 단위 별로 테스트를 도와주는 도구다. Hamcrest라는 JMock이라는 Matcher 라이브러리(값을 비교 할때 더 편리하게 도와주는 도구)를 같이 사용한다. 기본적으로 아래 3가지 기능을 지원한다. - 테스트의 결과가 예상과 같은지 판별하는 assert 단정문 - 여러 테스트에서 공동 사용하는 테스트 픽스처 - 테스트 작업을 수행하는 테스트 러너 코드를 써보자. 테스트를 위해..
-
Spring boot JPA/하이버네이트?Spring Boot/JPA 2022. 1. 4. 10:54
"JPA는 데이터베이스 기술이라기보다 애플리케이션의 데이터를 객체지향으로 볼 수 있게 해주는 객체 지향 기술이다." 전자정부 프레임워크에는 몇 가지 데이터 액세스 기술을 제공하는데. JPA는 데이터에 접근하는 방법 중 하나 1) 아이바티스(or 마이바티스) 2) 하이버네이트 3) JPA 4) 스프링 JPA 5) 스프링 몽고 DB ... 등등 목차 JPA란 하이버네이트란? JPA란? JPA(Java Persistence API)는 자바 진영의 ORM 표준 기술이다. ORM - Oriented Relational Mapping 은 이름 그대로 객체와 RDBMS를 매핑해주는 기술이다. SQL을 작성하는게 아니라, 자바 컬렉션 저장하듯이 객체를 ORM 프레임워크에 저장하고 프레임워크가 데이터베이스에 알아서 저장..
-
SOLID 객체 지향 설계 5원칙Spring Boot/스프링부트 공부 2022. 1. 3. 09:37
객체 지향 설계 5원칙? 스프링부트를 공부하면서 자주 언급되는 말이 있어 정리해본다. 목차 1) 객체 지향 설계 5원칙이란? 2) SOLID 객체 지향 설계 5원칙이란? 결론 : 객체 지향 프로그램을 올바르게 설계하는 원칙 결합도는 낮추고, 응집도는 높인다" 관점을 재정립 제품이 아닌 개념이다. 속성 메서드, 클래스, 객체, 모듈, 라이브러리 등등 전반에 녹아 있음. 이 원칙이 녹아있으면 유지보수/리펙토링이 수월해짐 디자인패턴의 뼈대, 스프링의 근간이 되는 개념 SOLID 결론 :객체 지향이 처음 등장한 1960년 이래로 시행착오를 통해 탄생한 5개의 설계 원칙이 있다. AKA, SOLID. SRP 단일 책임 원칙 Single Responsibility Principle OCP 개방 폐쇄 원칙 Open ..