스프링 29

엔티티(Entity) - 왜 기본 생성자가 필요할까?

Entity - 기본 생성자 필요한 이유기본 생성자가 존재하지 않는다면 DB에서 조회해 온 값을 엔티티로 만들 때 객체 생성 자체가 실패합니다. -> 이유 : JPA가 엔티티를 인스턴스화할 때 리플렉션(Reflection)을 사용하기 때문입니다.리플랙션이란? - 자바 프로그래밍 언어에서 런타임에 클래스, 인터페이스, 메서드, 필드 등의 구조를 검사하고 조작할 수 있는 기능을 의미합니다.그래서 위와 같은 이유로 기본 생성자가 필요한데... 접근 제어자는 어떤 것을 써야 할까요?기본 생성자의 접근 제어자는 어떤 것을 써야 할까?private 사용했을 경우 : 리플랙션 사용할 때 접근 자체가 불가능합니다. -> JPA는 프록시 기술을 사용하는데 거기서 프록시 기술을 쓸 때, jpa hibernate가 객체를 ..

엔티티 매니저와 영속성 컨텍스트

엔티티 매니저란?엔티티를 저장, 수정, 조회, 삭제하는 등 엔티티와 관련된 모든 일을 처리합니다.말 그대로 엔티티를 관리하는 관리자 입니다.영속성 컨텍스트 사용(엔티티를 영구 저장하는 환경 이라는 뜻.) => 영속성 컨텍스트에 엔티티를 저장하거나 조회하고 보관합니다. 엔티티 매니저 팩토리와 엔티티 매니저데이터베이스 사용하는 애플리케이션은 일반적으로 하나의 엔티티 매니저 팩토리 생성. => 필요할 때마다 엔티티 매니저 펙토리에서 엔티티 매니저 생성중요 엔티티 매니저 팩토리는 여러 스레드가 동시에 공유해도 안전 BUT 엔티티 매니저는 여러 스레드 동시 접근 시 동시성 문제 발생엔티티의 생명주기비영속 : 영속성 컨텍스트와 관계가 없는 상태영속 : 영속성 컨텍스트에 저장된 상태 -> 엔티티가 영속성 컨텍스트에 ..

JPA 에 관하여 [자바 ORM 표준 JPA 프로그래밍]

JPA란 무엇인가?JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준입니다. 애플리케이션과 JDBC 사이에서 동작합니다.ORM이란 무엇인가?Object-Relational Mapping 이름 그대로 객체와 관계형 데이터 베이스 매핑한다는 뜻.ORM 프레임워크는 객체와 테이들블 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결합니다.ex) 개발자가 insert SQL문을 직접 작성하는 것이 아니라, 객체르 자바 컬렉션에 저장하듯 ORM 프레임워크에 저장하면 됨. -> ORM 프레임워크가 자동 매핑.자바 진영의 대표적인 ORM 프레임 워크 : HibernateJPA를 사용하는 하는 이유생산성지루하고 반복적인 CRUD용 SQL을 개발자가 직접 작성하지 않아도 됩니다.Create T..

Spring 예외처리 기본 원리와 어노테이션

스프링을 공부하다 보니, 예외처리가 상당히 중요한 것 같습니다.따라서, 스프링 예외처리에 관한 공부 기록을 남겨봅니다! Spring 예외처리는 어떻게 할까요?" @Controller 및 @ControllerAdvice 클래스는 컨트롤러 메서드에서 발생하는 예외를 처리하기 위해 @ExceptionHandler 메서드를 가질 수 있습니다. "스프링 공식 문서를 보면 이렇게 써져 있습니다. 이를 통해 예외 처리의 기본 원리를 알아보겠습니다. 그 전에, @ExceptionHandler에 관해 알아보겠습니다!@ExceptionHandler@ExceptionHandler 메서드는 컨트롤러 메서드에서 발생하는 특정 예외를 처리할 수 있습니다.@RestControllerAdvice와 함께 사용하여 전역 예외 처리를 구..

계층형 패키지 구조 vs 도메인형 패키지 구조

스프링에 대해 공부하다 보니, 패키지 구조 또한 정말 중요하다는 것을 느낍니다.해서, 계층형 패키지 구조와 도메인형 패키지 구조의 모양과 장단점을 간단히 정리하고자 합니다.1. 계층형 패키지 구조controller ⎿ UserController ⎿ LottoController service ⎿ UserService ⎿ LottoServicedto ...domain ...장단점패키지만 보면 전체적인 구조 파악 가능합니다.계층별 응집도가 좋습니다.but 도메인별 응집도는 낮습니다.(하나의 패키지 안에 여러 도메인이 섞여있음.)규모가 커지면 가시성이 떨어집니다. 2. 도메인형 패키지 구조User ⎿ UserController ⎿ UserService ⎿ UserDto ..

HTTP 상태 코드 정리

### HTTP 상태 코드* 200 OK: 요청이 성공적으로 처리되었습니다.* 201 Created: 리소스가 성공적으로 생성되었습니다.* 204 No Content: 요청이 성공적으로 처리되었으나 반환할 데이터가 없습니다.* 400 Bad Request: 잘못된 요청입니다.* 401 Unauthorized: 인증이 필요합니다.* 403 Forbidden: 권한이 없습니다.* 404 Not Found: 요청한 리소스를 찾을 수 없습니다.* 500 Internal Server Error: 서버에서 오류가 발생했습니다. 이제 슬슬 HTTP 상태 코드 외울 때도 되었는데, 조금씩 헷갈리는 것 같아 정리해봅니다. ㅠ

HTTP 메서드에 관해서

HTTP 메서드란?클라이언트와 서버 간의 통신에서 사용되는 일종의 규약입니다. 각 메서드는 특정한 작업을 수행하며, RESTful 서비스에서 리소스 조작을 위해 주로 사용됩니다. HTTP 메서드는 CRUD(Create, Read, Update, Delete) 기능을 제공합니다.1. GET - 서버에서 리소스를 조회. * 안전성: 서버 상태를 변경하지 않는다. * 멱등성: 동일한 요청을 여러 번 수행해도 결과가 동일. * 캐싱: GET 요청은 캐싱할 수 있다.2. POST - 서버에 새로운 리소스를 생성. * 안전성: 서버 상태를 변경. * 멱등성: 동일한 요청을 여러 번 수행하면 여러 개의 리소스가 생성될 수 있음. * 캐싱: 일반적으로 캐싱하지 않음.3. PUT - 서버의 기존..

REST API 설계 규칙!

설명하기에 앞서, RestFul에 대해 헷갈리신다면 여기 한 번 참고해주시면 될 것 같습니다!URL 설계리소스: URI는 리소스를 표현합니다. ex) 사용자를 표현하는 URI = /members.컬렉션: 복수형 명사를 사용하여 리소스 컬렉션을 표현합니다. ex) /members (모든 사용자)리소스 인스턴스: 특정 리소스를 표현하기 위해 식별자를 사용합니다. 예: /members/123 (ID가 123인 사용자) @PathVariable 같은 어노테이션과 함께 공부하시면 좋을 것 같아요 !RestAPI 설계 규칙URI는 정보의 리소스를 표현합니다. ** 행위에 대한 표현이 아닌 리소스 표현하는데 중점을 두어야 한다, 리소스명은 동사보다는 명사를 사용한다. **리소스에 대한 행위는 HTTP Method로 ..

RestFul 에 관하여

RestFul 을 알려면, Rest 에 관하여 알아야 합니다.REST 란?REST(Representational State Transfer) 네트워크 아키텍처 원칙을 기반으로 한 웹 서비스 디자인 방식입니다. REST 는 리소스를 기반으로 한 설계 철학을 따르며, URI을 통해 식별됩니다.(리소스 기반 URL) --> 쉽게 말해, REST는 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이고, 이미지나 텍스트 같은 자원들을 JSON 혹은 XML 형식으로 URL 통해 주고 받는 것이라고 이해하시면 편할 것 같습니다!REST 의 주요원칙Client–server 구조 : 클라이언트와 서버는 서로 독립적이어야 하며, 클라이언트는 url만 알아야 한다. 그리고, 클라이언트와 서버의 인터페이스..