Back-End 22

[Spring] 자주 사용하는 Annotation (개인적)

@RestController - 클래스 / 해당 클레스가 RESTFul 웹서비스 컨트롤러임을 나타냄. 스프링은 해당 클래스를 REST 요청을 처리하는 컨트롤러로 간주하고, 메서드들이 HTTP요청을 받고 응답을 반환하는 역할을 한다. @RequestMapping - 메서드, 클래스 / 요청 URL과 HTTP메서드의 매핑을 설정한다. 어떤 URL과 HTTP 메서드에 대한 해당 메서드가 실행되어야 하는지를 정할때 사용된다. @Service - 클래스 / 해당 클래스가 비즈니스 로직을 처리하는 서비스 빈임을 나타낸다. 스프링이 해당 클래스를 빈으로 등록하여 의존성 주입을 수행하고, 비즈니스 로직을 처리하는 서비스 객체로 활용한다. @Validated - 메서드, 타입 / 메서드 인자들의 유효성을 검증하기 위해 ..

[Spring] JPA - JPQL, QueryDSL, N+1 문제

JPQL - Table 이 아닌 Entity(객체) 기준으로 작성하는 쿼리를 JPQL이라고 하며 이를 사용할 수 있도록 EntityManger 또는 @Query 구현체를 통해 JPQL 쿼리를 사용할 수 있다. JQL : Entity 명으로 쿼리짤때 쓰이는 언어 (쓰이는 곳. JPQL, QueryDSL) SQL : Table 명으로 쿼리짤때 쓰이는 언어 (쓰이는 곳. JDBC, SQL Mapper) EntityManager.createQuery() - 쿼리 문자열과 Entity 를 직접 넣어서 쿼리를 작성한다. - setParameter 와 같이 key, value 문자열을 통해서 쿼리 파라미터를 매핑할 수 있다. 코드에 문자열이 들어가는게 안 좋은 이유 - 문자열은 오타가 발생할 여지가 많다. - 개발할..

[Spring] JPA - SpringData, JpaRepository, QueryDSL

SpringData 기능 목록 - 강력한 리포지토리 및 사용자 지정 객체 매핑 추상화 - 리포지토리 메서드 이름에서 동적 쿼리 파생 - 기본 속성을 제공하는 구현 도메인 기본 클래스 - 명료한 추적기능 지원(생성일시, 마지막 변경일시, 생성자, 마지막 변경자) - 사용자 지정 리포지토리 코드 통합 가능성 - JavaConfig 및 사용자 지정 XML 네임스페이스를 통한 간편한 Spring 통합 - Spring MVC 컨트롤러와의 고급 통합 - 교차 스토어 지속성에 대한 실험적 지원 SpringData Jpa와 JpaRepository의 원리 - Repository는 MarkerInterface로 특별한 기능은 없다. - Repository ~ JpaRepository 까지는 @NotRepositoryBe..

[Spring] JPA - ORM의 배경, Raw JPA 기능

ORM의 탄생 배경 탄생 배경을 알아야 하는 이유? - 내가 맡아야 할 프로젝트가 JPA가 적용이 안된 프로젝트일 수도 있다. - ORM은 갑자기 나타난 게 아니라 점차 발전해 온 DB 연동 기술이론이다. JDBC Java Database Connectivity - Java 앱과 DB를 연결시켜주기 위해 만들어진 기술이다. - JPA도 이 기술을 사용하여 구현되어 있다. JDBC Driver Manager - Connection (연결)을 생성하여 쿼리를 요청할 수 있는 상태를 만든다. - Statement (상태)를 생성하여 쿼리를 요청하게 해 준다. - ResultSet (결과 셋)을 생성하여 쿼리 결과를 받아올 수 있게 해 준다. - 사용 후에는 꼭 각각 close()를 호출해서 자원 해제를 시켜줘..

[Spring] 스파르타코딩클럽 Spring공부(6) - OAuth, 단위테스트, 통합테스트, 예외처리관리

카카오 로그인 탄생배경 - 모든 웹 사이트에서 회원가입을 거치는 것은 사용자에게 부담이 된다. 매번 번거로운 회원가입 과정을 수행해야 할 뿐 아니라, 웹사이트마다 다른 아이디와 비밀번호를 기억해야 한다. 또한 웹사이트를 운영하는 측에서도 역할이 부담이 된다. 이런 문제를 해결하기 위해 OAuth를 사용한 소셜 로그인이 등장하게 됐다. OAuth OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로써 사용되는, 접근 위임을 위한 개방형 표준입니다. 사용자가 애플리케이션에게 모든 권한을 넘기지 않고 사용자 대신 서비스를 이용할 수 있게 해주는 HTTP 기반의 보안 프로토콜이다. 카카오 로그인 사..

[Spring] 스파르타코딩클럽 Spring공부(5) - Validation, Entity 관계

Validation Spring에서는 null 확인 뿐 아니라 문자의 길이 측정과 같은 다른 검증 과정도 쉽게 처리할 수 있도록 Bean Validation을 제공하고 있다. - 간편하게 사용할 수 있는 여러 애너테이션을 제공해 준다. @NotNull - null 불가 @NotEmpty - null, "" 불가 @NotBlank - null, "", " " 불가 @Size - 문자 길이 측정 @Max - 최댓값 @Min - 최솟값 @Positive - 양수 @Negative - 음수 @Email - E-mail 형식 @Pattern - 정규 표현식 implementation 'org.springframework.boot:spring-boot-starter-validation' 위 코드를 build.gra..

[Spring] 스파르타코딩클럽 Spring공부(4) - 인증/인가, 쿠키/세션, 필터

Bean 수동등록 Bean 수동 등록은 어제 사용될까? 기술적인 문제나 공통적인 관심사를 처리할 때 사용되는 객체들을 수동으로 등록하는 것이 좋다. - @Component를 사용하면 @ComponentScan에 의해 자동으로 스캔되어 해당 클래스를 Bean으로 등록해 준다. - 일반적으로 @Component를 사용하여 Bean을 자동등록으로 하는 것이 좋다. Bean 수동등록이 사용되는 경우 - 공통 로그처리와 같은 비즈니스 로직을 지원하기 위한 부가적이고 공통적인 기능들을 기술 지원 Bean이라 부르고 수동등록 한다. - 비즈니스 로직 Bean보다는 그 수가 적기 때문에 수동으로 등록하기 부담스럽지 않다. - 수동등록된 Bean에서 문제가 발생했을 때 해당 위치를 파악하기 쉽다는 장점이 있다. @Con..

[Spring] 스파르타코딩클럽 Spring공부(3) - 3 Layer Architecture, JPA

3 Layer Architecture - 한 개의 클래스에 너무 많은 양의 코드가 존재할때 이해하기가 어려울때 - 코드의 추가 혹은 변경 요청이 곗고 들어올때 - 문제가 발생했는데 해당 클래스를 구현한 개발자가 퇴사하여 유지보수가 어려울때 위와 같은 상황에서 문제를 해결하기 위해 서버 개발자들은 서버에서 처리과정이 대부분 비슷하다는 것을 깨닫고, 처리과정을 크게 Controller, Service, Repository 총 3개로 분리하였다. Controller - 클라이언트의 요청을 받는다. - 요청에 대한 로직 처리는 Service에게 전담한다. (Request 데이터가 있다면 함께 전달) - Service에서 처리 완료된 결과를 클라이언트에게 응답한다. Service - 사용자의 요구사항을 처리(비즈..

[Spring] 스파르타코딩클럽 Spring공부(2) - 데이터의 전달방식과 SQL

Jackson Jackson은 JSON 데이터 구조를 처리해주는 라이브러리 - Spring은 3.0 버전 이후 Jackson과 관련된 API를 제공한다. - Object를 JSON타입의 String으로 변환이 가능하다. - JSON 타입의 String을 Object로 변환이 가능하다. Path Vairable Client 즉, 브라우저에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보낼 수 있다. - 서버는 데이터를 받아 사용해야 하는데 데이터를 보내는 방식이 한 가지가 아니라 여러 가지가 있기 때문에 모든 방식에 대한 처리 방법을 학습해야 한다. - 데이터를 받기 위해서는 /star/{name}/age/{age} 이처럼 URL 경로에서 데이터를 받고자 하는 위치의 경로에 {data} 중괄호를 사용한..

[Spring] 스파르타코딩클럽 Spring공부(1) - Spring MVC

Gradle Gradle란? Gradle는 우리가 작성한 Java 코드를 설정에 맞게 자동으로 Build 해준다. - groovy / kotlin 언어로 스크립트 작성이 가능하다. - 필요로 하는 외부 라이브러리들을 dependencies 부분에 저장하면 Gradle이 해당 라이브러리를 외부 저장소에서 자동으로 다운로드해 온다. - 다른 라이브러리들과 의존성을 자동으로 관리해 준다. Client와 Server 택배 네트워크 주소(IP) 서울시 **구 **로 **** 192.168.***.*** 받는사람(포트) GunWook 8080 IP주소와 포트를 택배에 비교해 본 표이다. 우리가 택배를 받기 위해서는 실제주소와 받는 사람을 알려줘야 한다. 마찬가지로 네트워크도 정보를 요청하고..

프로필사진

남건욱's 공부기록

반응형