스프링 프레임워크 :스프링 부트 :스프링 데이터 : 기본적인 CRUD 데이터를 편리하게 사용하게 해주는 툴 ex) 스프링 JPA스프링 세션 : 세션 관리를 편하게 도와주는 툴스프링 시큐리티 : 보안과 관련된 작업을 편하게 하는 것스프링 Rest Docs : API 문서
기존 프로그램은 클라이언트 구현 객체가 필요한 서버 구현 객체를 생성하고, 연결하고, 실행했다.즉, 구현 객체가 프로그램의 제어 흐름을 스스로 조종했다.반면 AppConfig가 등장한 후 구현 객체는 자신의 로직을 실행하는 역할만 담당한다. 프로그램의 제어 흐름은 이제
객체지향적인 폴더 구조를 설계하기 위한 관련 개념들을 정리하는 내용입니다.패키지구조에는 정답은 없으며 필자는 유지보수와 인수인계라는 키워드를 중심으로 코드를 모르는 사람이 보아도 쉽게 이해할 수 있는 패키지구조를 설계하는 것이 목표이다.패키지 구조를 알기 위해서는 기본
스프링 스타터 사이트로 이동하면 스프링 프로젝트를 설정할 수 있다.Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다.spring-boot-starter-webspring-boot-starter-tomcat // 톰캣(웹서버)spring-webmvc // 스
웹브라우저에서 localhost:8080/hello-mvc로 request요청을 보낸다.요청을 톰캣이 받고 디스패쳐 서블릿이 web.xml(환경 설정 같은거임ㅇㅇ)에 있는 데이터를 읽고, 스프링 컨테이너를 생성한다.그 사이에 bean factory에서 필요한 객체를 b
OOP란 문제를 여러 개의 객체 단위로 나눠 작업하는 방식으로, 객체들이 서로 유기적 상호작용하는 프로그래밍 이론입니다.상속을 통한 코드 재사용성 증가독립적인 객체를 생성하여 사용해 생산성을 향상 시킬 수 있다.프로그램 수성 및 추가를 할 경우에 캡슐화를 통해 주변 영
스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 한다. 여기서 말하는 자바 객체는 스프링에서 Bean을 의미한다. < BeanFactory >스프링 컨테이너의 최상위 인터페이스이다.스프링 빈을 관리하고
자바에서 Getter, Setter, toString과같은 반복 메소드 작성을 줄여주기 위한 라이브러리이다. 일반적으로 DTO, VO와 같은 모델에서 사용한다.@Data 어노테이션을 까보면 @Getter / @Setter, @ToString, @EqualsAndHash
목차 서론 Spring Security JWT 강의 내용 정리 서론 이 글은 인프런 강의를 보고 정리한 내용입니다. Spring Security Spring Security는 Spring과는 별개로 작동하는 보안담당 프레임워크이다. > Security의 동작 Au
현재 LoginService는private final MemberRepository : MemberDB 접근 로직method : 스크래핑 기능method : 포맷팅 기능method : DB저장 메소드 호출 기능을 포함하고 있습니다.이를 코드로 어떻게 짜야 확장성이 좋은
Entity <-> Dto mapping convering을 해주는 기능이다.map()메소드를 통해 Entity와 DTO의 변환을 자유롭게 해준다.Service Layer, DTO, Entity에서 사용가능하다.하지만 Service Layer에서 사용하는 것은 모
스프링 프로젝트를 하면서 @Transactional이라는 애노테이션을 자주 사용한다.하지만 정확하게 어떻게 사용하는지 모르기에 정리를 시작한다..😶😶Transaction은 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위이다.ACID(원자성, 일관성, 고립
스프링 빈을 항상 무상태(statelses)로 설계하라는 말이 있다.이 말은 즉, 스프링 빈 클래스는 공유가 될 수 있는 전역 변수를 사용하면 안된다를 의미한다.이유를 알아보자!!!stateless protocol은 들어 보았다. stateless protocol은 어
DI는 의존 관계를 외부에서 결정(주입)해주는 것을 말한다. 스프링에서는 이러한 DI를 담당하는 DI 컨테이너가 존재한다. 이 DI 컨테이너가 객체들 간의 의존 관계를 주입한다.의존 관계 주입 방법생성자 주입생성자 호출시점에 딱 1번만 호출되는 것이 보장된다.불변, 필
패러다임의 불일치객체 지향 : 필드와 메서드로 객체를 구성해서 사용하는 것에 초점관계형DB : 데이터를 잘 정규화해서 저장하는 것에 초점객체저장 : 공통된 특징을 부모로 정의한 후 자식이 상속받아 특징을 가지는 필드 및 메서드 정의조회 : .을 통해서 바로 접근 가능관
엔티티를 영구적으로 저장하는 환경논리적인 개념Entity Manager를 통해 접근한다.영속성 컨텍스트와 전혀 관계가 없는 새로운 상태영속성 컨텍스트에 관리되는 상태영속성 컨텍스트에 저장되었다가 분리된 상태삭제된 상태1차 캐시동일성 보장트랜잭션을 지원하는 쓰기 지연변경
JPQLSQL과 유사한 객체 중심의 쿼리 언어Spring Data JPA에서 정해놓은 네이밍 컨벤션을 지키면 적절한 JPQL을 구성해준다.QueryDSLSQL과 같은 쿼리를 생성하는 빌더(JPQL의 단점인 동적쿼리 등을 커버하기 위한 용도로 사용)JPA Criteria
.을 통해서 객체 내부를 탐색하는 것을 말한다.상태 필드 : 단순히 값을 저장하기 위한 필드연관 필드단일 값 연관 필드 : 대상이 단수의 엔티티(@ManyToOne, @OneToOne)컬렉션 값 연관 필드 : 대상이 컬렉션(@OneToMany, @ManyToMany)연
Member 엔티티를 조회할 때 Team 엔티티도 함께 조회해야 할까?라는 질문으로 시작하자정확한 정답은 실제 비즈니스 로직에 따라 다르다.비즈니스 로직에서 Team이 필요하지 않는 경우에 항상 Team을 가져오는 경우 낭비가 발생한다.JPA는 이를 낭비하지 않기 위해
Member 엔티티를 조회할 때 Team 엔티티도 함께 조회해야 할까?라는 질문으로 시작하자정확한 정답은 실제 비즈니스 로직에 따라 다르다.비즈니스 로직에서 Team이 필요하지 않는 경우에 항상 Team을 가져오는 경우 낭비가 발생한다.JPA는 이를 낭비하지 않기 위해
내부 참조 객체를 조회 시점에 함께 조회하는 로딩 방법Join이 많이 발생하기 때문에 훨씬 더 많은 쿼리가 실행된다.즉시 로딩의 경우 내부 조인이 아닌 외부 조인을 사용한다.(회원은 팀이 없을 수 있기 때문에 null값을 허용하기 때문에 외부 조인을 사용한다.)@Joi
OSIV(Open Session In View)란 영속성 컨텍스트의 범위를 뷰까지 열어줄 것인가를 설정하는 것이다.서비스의 사용자가 많아지면 DB커넥션에 대해 신경 써야하는데 OSIV 설정을 통해 DB커넥션의 성능을 향상 시킬 수 있다. 부르는 명칭이 조금씩 다르지만,
공부하는 과정에서 한 글을 읽고 웹 성능을 개선해야겠다는 생각을 하게 되었다.요약하자면, 사용자가 늘어나 서버에 부하가 발생했을 때, 서버에 문제가 없는지 확인하고, 해결해 사용자에게 쾌적한 서비스 환경을 제공할 수 있어야 한다.문제 상황 : 5명의 사용자가 게시물 1
최근 인덱스를 공부하면서 어떨 때 인덱스를 사용해야 하는가에 대한 나만의 기준을 세우기 위해 노력했다.간단하게 정리하자면 인덱스가 되는 컬럼의 기준은1\. Where절 또는 join절에서 잦은 사용2\. 낮은 수정 빈도3\. 데이터의 중복(카디널리티 수치)이 적은정도이