2024/10 40

Stream API(1)

💡1. 자바 I/O 에서의 스트림( java.io.)과 java.util.stream 패키지에 있는 Stream 구분해서 이야기할 수 있다. 스트림 패키지의 구분 자바 I/O 스트림은 데이터를 읽고 쓰는 목적으로 사용됩니다. 파일, 네트워크, 메모리 등 다양한 소스에서 바이트나 문자 데이터를 읽거나 쓰기 위한 스트림입니다. InputStream과 OutputStream이 대표적인 I/O 스트림입니다.Stream API와 자바 I/O 스트림은 이름은 비슷하지만, 완전히 다른 개념입니다. Stream API는 자바 8에서 도입된 중요한 기능 중 하나로, 데이터 컬렉션(자료구조)을 처리할 때 사용되는 강력한 도구입니다. 스트림(Stream)은 데이터를 선언적으로 처리할 수 있게 하며, 특히 대용량 데이터 처..

카테고리 없음 2024.10.02

Optional<T> 주요 메서드

Optional는 Java 8에서 추가된 클래스로, 주어진 값이 null일 가능성을 명시적으로 처리하기 위해 사용됩니다. 이를 통해 null을 직접 다루지 않고도 안전하게 코드를 작성할 수 있습니다.  주요 메서드: isPresent()Optional에 값이 있는지 여부를 확인합니다.반환 타입: booleantrue는 값이 존재한다는 뜻이고, false는 값이 없음을 의미합니다.get()값이 존재하는 경우 값을 반환합니다.값이 없으면 NoSuchElementException을 던집니다.이 메서드는 값이 확실히 있을 때만 사용해야 하며, 그렇지 않은 경우 orElse() 또는 orElseThrow()를 사용하는 것이 좋습니다.orElse(T other)값이 존재하면 해당 값을 반환하고, 그렇지 않으면 지정..

공부 노트 2024.10.02

CRUD란?

CRUD 개념으로 회원 관리 시스템을 만들었는데대체 CRUD란 뭐지.. 싶어져서 찾아 보았다  Create(생성): 새로운 데이터를 추가하는 작업입니다. 데이터베이스에서는 새 레코드를 삽입하는 것을 의미합니다.예: 회원 가입 시 새로운 회원 정보를 데이터베이스에 저장하는 것.Read(읽기): 기존 데이터를 조회하는 작업입니다. 데이터베이스에 저장된 데이터를 불러오는 것을 의미합니다.예: 사용자가 자신의 프로필을 확인할 때 데이터베이스에서 회원 정보를 불러오는 것.Update(수정): 기존 데이터를 수정하는 작업입니다. 이미 존재하는 데이터의 내용을 변경하는 것을 의미합니다.예: 사용자가 자신의 프로필 사진이나 정보를 변경할 때 데이터를 업데이트하는 것.Delete(삭제): 기존 데이터를 삭제하는 작업입니..

공부 노트 2024.10.02

빈(Bean)이란?

빈(Bean)이란? Spring 컨테이너가 관리하는 자바 객체입니다.애플리케이션 내에서 사용할 객체들을 빈으로 정의하고, Spring이 이 객체들을 생성, 초기화, 의존성 주입, 소멸까지 관리합니다.이러한 빈은 애플리케이션의 설정 파일(주로 XML, 자바 기반의 설정 클래스 등)이나 애너테이션을 통해 정의됩니다. 왜 빈으로 등록해야 하는가?(ex: 컨테이너에 빈 등록을 해주다.. 왜?) 의존성 주입(Dependency Injection)객체들 간의 의존성을 Spring이 자동으로 관리해줍니다. 개발자는 직접 객체를 생성하거나 그 의존성을 수동으로 처리할 필요가 없습니다. 이는 애플리케이션의 유지보수를 쉽게 하고, 느슨한 결합(loose coupling)을 지원합니다.객체의 생명주기 관리Spring은 빈 ..

공부 노트 2024.10.02

[JPA] 글 상세보기(조회) API 구현 - 6

💡1. Optional 에 대한 개념을 숙지 한다. 2. 경로 변수(Path variable)에 대한 개념을 이해하고 사용할 수 있다. BlogService 파일에 게시글 조회 로직 추가 - 1@RequiredArgsConstructor@Service // IoC (빈으로 등록)public class BlogService { //@Autowired // DI findAll(){ List articles = postRepository.findAll(); return articles; } // 상세 보기 게시글 조회 public Article findById(Integer id) { // Optional는 Java 8에서 도입된 클래스이며, // 값이 존재할 수도 있고 없을 수도 있는 상황..

카테고리 없음 2024.10.02

[JPA] 글 목록 조회 API 만들어 보기 - 5

💡1. 글 전체 조회 기능을 만들 수 있다. 2. 응답 처리시 공통 DTO를 설계할 수 있다. 3. ExceptionHandler 개념을 이해하고 코드를 구성할 수 있다. BlogService 파일에 게시글 전체 조회 기능 추가 하기 - 1@RequiredArgsConstructor@Service // IoC (빈으로 등록)public class BlogService { //@Autowired // DI findAll(){ List articles = postRepository.findAll(); return articles; } } 공통 응답 DTO 만들기 - 2@Datapublic class ApiUtil { private Integer status; // 응답 상태 코드 저장(20..

카테고리 없음 2024.10.02

응답 코드 확인 (꼭 알아 두어야 하는 코드!!)

● 200 OK: 요청이 성공적으로 처리되었습니다. ● 201 Created: 요청이 성공적으로 처리되었고, 새로운 리소스가 생성되었습니다. ● 302 Found: 요청한 리소스가 임시적으로 다른 URL로 리다이렉트됩니다. ● 400 Bad Request: 클라이언트의 요청이 잘못되었거나 서버가 요청을 이해할 수 없습니다. ● 401 Unauthorized: 인증이 필요하지만 클라이언트가 인증되지 않았습니다. ● 403 Forbidden: 클라이언트가 요청한 리소스에 접근할 권한이 없습니다. ● 404 Not Found: 요청한 리소스를 찾을 수 없습니다. ● 500 Internal Server Error: 서버에서 오류가 발생하여 요청을 처리할 수 없습니다. [상태 코드]1xx 요청을 제대로 받았고, ..

공부 노트 2024.10.02

[JPA]서비스, 컨트롤러 만들어 보기 - 4

💡1. DTO 에 대한 개념을 설명 할 수 있다. 2. 애플리케이션 컨텍스트에 대해서 설명 할 수 있다. 3. 서비스 계층, 컨트롤러 계층을 코드로 작성할 수 있다.  작업 1 DTO(Data Transfer Object) 클래스 만들기 (게시글 저장)DTO는 데이터 전송을 위한 객체로, 주로 계층 간 데이터 교환을 목적으로 사용됩니다. 예를 들어, 클라이언트에서 서버로, 혹은 서비스 계층에서 프레젠테이션 계층으로 데이터를 전달할 때 사용됩니다. @NoArgsConstructor@AllArgsConstructor@Getter// 즉, 주로 계층간에 데이터 전송 목적으로 설계 된다.public class ArticleDTO { private String title; private String conten..

카테고리 없음 2024.10.02

레포지토리(Repository) & JpaRepository란?

레포지토리(Repository)란?레포지토리는 데이터베이스와 엔티티(데이터 클래스) 사이에서 데이터를 저장하고, 불러오고, 수정하고, 삭제하는 역할을 하는 도구입니다.예를 들어, "사용자" 데이터를 저장하고 싶다면, 레포지토리를 사용하여 "사용자"를 데이터베이스에 저장할 수 있습니다. 또는 저장된 "사용자" 데이터를 레포지토리를 통해 불러오거나 삭제할 수 있습니다. JpaRepository란?스프링에서 제공하는 JpaRepository는 우리가 따로 **SQL(데이터베이스 쿼리)**을 작성하지 않아도 데이터베이스와 쉽게 연결할 수 있도록 해주는 도구입니다.JpaRepository는 우리가 자주 사용하는 기본 기능들을 미리 만들어 놓은 것입니다. 예를 들어, 데이터 저장, 조회, 수정, 삭제 같은 작업을 ..

JAVA 2024.10.02

[JPA] 레포지토리 만들기 - 3

💡● 레포지토리 인터페이스를 만들 수 있다. 인터페이스 선언 방법과, 기본적인 CRUD 기능을 자동으로 제공받기 위한 JpaRepository 상속 구조를 이해한다.● JpaRepository의 역할과 계층 구조를 이해하고 설명할 수 있다.JpaRepository의 상속 계층(Repository → CrudRepository → PagingAndSortingRepository → JpaRepository)과 각 인터페이스의 역할을 이해한다. ● 스프링이 레포지토리 구현체를 자동으로 생성하는 개념을 설명할 수 있다. 스프링이 JpaRepository 인터페이스의 구현체를 런타임 시에 자동으로 생성하여 제공하는 방식에 대해 설명할 수 있다.  PostRepository 에 사용//@Repository {..

카테고리 없음 2024.10.02