본문 바로가기

Learning-log/Spring & JPA55

(스프링 핵심 원리 - 기본편) 1-(4) 좋은 객체 지향 설계의 5가지 원칙(SOLID) - SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙 정리 1. SRP 단일 책임원칙 한 클래스는 하나의 책임만 하나의 책임 : 모호 / 클 수도 작을 수도 , 문맥, 상황에 따라 중요한 기준은 변경! 변경이 있을 때 파급 효과 적으면 OK. 2. OCP 개방-폐쇄 원칙 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 함 다형성을 활용하면 지킬 수 있음 인터페이스를 구현한 새로운 클래스를 하나 만들어서 새로운 기능 구현 문제점 구현 객체를 변경하려면 클라이언트 코드 변경해야 함 분명 다형성을 사용했는데 이 원칙을 지킬 수 없는데??? 객체를 생성하고 연관관계를 맺어주는 별도의 조립, 설정자가 필요함 => 이걸 스프링이 해준다 !! 3. LSP 리스코프 치환 원칙 .. 2023. 3. 24.
(스프링 핵심 원리 - 기본편) 1-(3) 좋은 객체지향 프로그래밍 - 객체지향 프로그래밍 컴퓨터 프로그램을 명령어 목록으로 보기보다는 여러 개의 독립된 단위인 객체들의 모임으로 파악하고자 하는 것. 객체는 메시지를 주고 받고 데이터 처리 가능 프로그램을 유연하고 변경이 용이(부품 갈아끼우듯이) 하게 만들기 때문에 대규모 개발에 많이 사용됨. - 다형성 실세계와 비교해보자. 세상을 역할과 구현으로 구분해본다면! 운전자 & 자동차 비유 운전자 & 자동차. 운전자 역할 / 자동차 역할. 이런 자동차 역할을 여러 자동차 회사의 자동차들이 구현 자동차가 바뀌어도 운전자에게 영향을 주지 않음 자동차 역할과 구현을 분리한건 바로 운전자를 위한 것. 자동차의 내부 구조를 운전자가 알 필요가 없고, 자동차가 바뀌어도 운전자는 바뀔 필요가 없다. => 대상을 바꾸지 않고 새로운 자동차를.. 2023. 3. 24.
(스프링 핵심 원리 - 기본편) 1-(2)스프링이란? - 스프링이란? 1. 스프링 생태계 필수 스프링 프레임워크 스프링 부트 : 여러 스프링 기술들을 편리하게 사용할 수 있도록 도와줌 선택 스프링 데이터 : 데이터 베이스들의 기본적인 CRUD는 다 비슷한데, 이 기능들을 편리하게 사용할 수 있도록 도와주는 기술 스프링 세션 : 세션 기능 편리하게 스프링 시큐리티 : 보안 관련 스프링 Rest Docs : API 문서를 편리하게 스프링 배치 스프링 클라우드 2. 스프링 프레임워크 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타 등 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원 기술 통합 : 캐시, 이메일, 원격접근, 스케줄링 테스트 : 스프링 기반 테스트 지원 언어 : 코틀.. 2023. 3. 24.
(스프링 핵심 원리 - 기본편) 1-(1)스프링의 탄생 - 스프링의 탄생 1. Spring 이전. EJB 사용 : 어렵고 복잡하고 느렸음. 인터페이스 의존적으로 설계해야하는게 복잡 , POJO : 위 EJB가 복잡하다보니 그냥 오래된 Java 방식을 쓰자 =>하이버네이트와 Rod Johnson이 안되겠다 ! 해서 오픈소스를 만듦. 하이버네이트 EJB 엔티티빈 기술 대체 JPA(Java Persistence API) : 새로운 표준이 됨 현재는 JPA가 표준 인터페이스로 있고, 그 구현체 들로 하이버네이트, EclipseLink 등이 있음. Rod Johnson 책 출간 EJB 문제점 지적함 책이 유명해지면서 책의 예제를 다른 개발자들이 사용하기 시작 유겐 휠러와 얀 카로프가 로드 존슨에게 오픈소스 프로젝트 제안 Spring 탄생 ~! 2. 스프링의 역사 겨울.. 2023. 3. 24.
비즈니스 요구사항 정리 - 아직 DB가 선정되지 않은 상황 : 성능이 중요한 데이터베이스를 쓸지 등등이 정해지지 않은 상황 가정 - 일반적인 웹 애플리케이션의 계층 구조 컨트롤러 - 서비스 - 리포진토리 - DB 도메인 - 컨트롤러 : 웹MVC의 컨트롤러 역할, API만들거나 할 때 컨트롤러 역할 - 서비스 : 핵심 비즈니스 로직 구현 - 리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB에 저장,관리 - 도메인 : 데이터베이스에 주로 저장하고 관리되는 비즈니스 도메인 객체 아직 데이터베이스가 지정되지 않은 상황으로 인해, 회원을 저장할 수 있는 리포지토리는 인터페이스로 만들고 구현체를 메모리 구현체로 만들 것. Memory에 넣었다 뺐다 할 수 있는 단순한 구현체를 만들어 추후 데이터베이스가 정해지면 이를 바꿔끼울 것. .. 2023. 3. 20.
MVC와 템플릿 엔진 / API 1. MVC(Model, View, Controller) - 예전에는 view에 모든 걸 다 하고 controller가 따로 있지 않았음. - view 란 : 화면을 그리는 데에 모든 역량을 집중 - controller : 비즈니스 로직과 관련있거나 내부적인걸 처리하는데에 관심 있음 - 요즘엔 컨트롤러와 뷰를 쪼개는게 기본 ! - 비즈니스 로직, 서버와 관련된건 컨트롤러 쪽에서 다 처리하고 model에다 관련된 화면에 필요한 것을 담아서 view에 넘겨주는 패턴 많이 활용 - controller - 웹브라우저에서 localhost:8080/hello-mvc를 보내면 스프링 부트가 띄울 때 같이 띄우는 내장 톰켓서버를 먼저 거쳐. helloController에 저 메서드에 매핑이 돼있는 걸 확인하고 ret.. 2023. 3. 9.