hi
[강좌] 스프링 핵심 원리 - 객체 지향 설계의 5가지 원칙(SOLID)

좋은 객체 지향 설계의 5가지 원칙(SOLID) SOLID 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP: 단일 책임 원칙(single responsibility principle) OCP: 개방-폐쇄 원칙 (Open/closed principle) LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregation principle) DIP: 의존관계 역전 원칙 (Dependency inversion principle) SRP (Single responsibility principle) : 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. but 하나의 책임이라는 것은 모..

article thumbnail
[강좌] 스프링 핵심 원리 - 좋은 객체지향 프로그래밍이란?

좋은 객체 지향 프로그래밍이란? 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 객체 들의 모임 으로 파악하고자 하는 것이다. 각각의 객체 는 메시지를 주고받고 데이터를 처리할 수 있다(협력). 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 SW 개발에 많이 사용된다. 유연하고 변경이 용이 하다는것은 컴포넌트들을 쉽고 유연하게 변경하면서 개발할 수 있는 방법이다. 객체지향의 특징 추상화 캡슐화 상속 다형성 객체지향의 핵심 다형성(Polymorphism) 다형성의 실세계 비유 실세계와 객체 지향을 1:1로 매칭이 잘 안된다. 그래도 실세계의 비유로 이해하기에는 좋으므로 역할과 역할을 직접 행하는 구현으로 구분해본다. 다형성과 관련된 운전..

article thumbnail
[강좌] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - chap 7. AOP - AOP가 필요한 상황

[강좌] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - chap 7. AOP - AOP가 필요한 상황 AOP AOP가 필요한 상황 만약 모든 메소드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? ex ) @Transactional public class MemberService { private final MemberRepository memberRepository; public MemberService(MemberRepository memberRepository) { // Dependency Injection this.memberR..

article thumbnail
강좌] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - chap 6. 스프링 DB 접근 기술 - (5) 스프링 데이터 JPA

[강좌] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - chap 6. 스프링 DB 접근 기술 - (5) 스프링 데이터 JPA 스프링 데이터 JPA 스프링 부트와 JPA만 사용해도 개발 생산성이 정말 많이 증가하고, 개발해야할 코드도 확연히 줄어듭니다. 여기에 스프링 데이터 JPA를 사용하면, 기존의 한계를 넘어 마치 마법처럼, 리포지토리에 구현 클래스 없이 인터페이스 만으로 개발 을 완료할 수 있습니다. 그리고 반복 개발해온 기본 CRUD 기능도 스프링 데이터 JPA가 모두 제공합니다. 스프링 부트와 JPA라는 기반 위에, 스프링 데이터 JPA라는 환상적인 프레임워크를 더하면 개발이 정말 즐 거워집니다. 지금까지 조금이라도 단순하고 반복이라 생각했던 개발 코드들이 확연하게 ..

[강좌] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - chap 6. 스프링 DB 접근 기술 - (4) JPA

[강좌] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - chap 6. 스프링 DB 접근 기술 - (4) JPA JPA JPA는 기존의 반복 코드는 물론이고, 기본적인 SQL도 JPA가 직접 만들어서 실행해준다. sql을 개발자가 작성할 필요가 줄어든다. JPA를 사용하면, SQL과 데이터 중심의 설계에서 객체 중심의 설계로 패러다임을 전환을 할 수 있다. JPA를 사용하면 개발 생산성을 크게 높일 수 있다 JPA는 인터페이스고, HIBERNATE같은 구현체들로 사용하낟. JPA는 ORM 기술이다 (Object Relational Mapping) build.gradle 파일에 JPA, h2 데이터베이스 관련 라이브러리 추가 dependencies { implementation..

[강좌] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - chap 6. 스프링 DB 접근 기술 - (3) 스프링 JdbcTemplate

[강좌] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - chap 6. 스프링 DB 접근 기술 - (3) 스프링 JdbcTemplate 스프링 JdbcTemplate 순수 Jdbc와 동일한 환경설정을 하면 된다. 스프링 JdbcTemplate과 MyBatis 같은 라이브러리는 JDBC API에서 본 반복 코드를 대부분 제거해준다. 하지만 SQL은 직접 작성해야 한다. JdbcTemplate을 사용하기 위해선 org.springframework.jdbc.core.JdbcTemplate;이 필요하다. public class JdbcTemplateMemberRepository implements MemberRepository{ private JdbcTemplate jdbcTempl..

[강좌] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - chap 6. 스프링 DB 접근 기술 - (2) 순수 JDBC

쉬어가는 타임.. [강좌] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - chap 6. 스프링 DB 접근 기술 - (2) 순수 JDBC 순수 JDBC 환경 설정 build.gradle 파일에 jdbc, h2 데이터베이스 관련 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' 자바는 기본적으로 DB랑 연동하려면 JDBC 드라이버가 필요하다. 스프링 부트 데이터베이스 연결 설정 추가 resources/application.properties 파일에 다음 내용을 입력 spring.datasource.url=jd..