Lombok 사용 시 boolean 필드 Getter 문제 해결하기Spring Boot 프로젝트에서 Lombok의 @Getter를 사용하면 자동으로 getter 메서드가 생성된다. 하지만 boolean 타입 필드에서는 예상과 다르게 동작할 수 있다.문제 상황@Getter@AllArgsConstructor@NoArgsConstructor@Builderpublic class MedicineCreateRequestDTO { private boolean isPrescribed;}위처럼 boolean 타입 필드에 대해 @Getter를 적용했고서비스에서requestDto.isPrescribed()작성하고 postman에서 json형식으로"isPrescribed": true,이렇게 작성하여 호출하면 isPres..
생성자란?생성자는 객체를 생성할 때 호출되는 특수한 메서드즉, new 키워드로 객체를 만들 때 자동으로 실행되는 메서드public class Member { String name; int age; // 생성자 추가 public Member(String name, int age) { this.name = name; this.age = age; }}public class Main { public static void main(String[] args) { // 생성자를 사용하여 객체를 생성하면서 초기값 설정 Member member = new Member("홍길동", 25); System.out.pr..
1. 순수 JPA를 이용한 BaseEntity 구현@Setter@Getter@MappedSuperclasspublic class BaseEntity{ @Column(updatable = false) private LocalDateTime createdAt; private LocalDateTime updatedAt; @PrePersist public void prePersist(){ LocalDateTime now = LocalDateTime.now(); createdAt = now; updatedAt = now; } @PreUpdate public void preUpdate() { updatedAt = LocalDateTime.now(); }}MappedSuperclassBaseEntity..
1. RequestBody클라이언트가 전송한 HTTP 요청의 본문(Body)을 Java 객체로 변환합니다. 일반적으로 JSON 또는 XML 데이터를 수신하는 데 사용한다.@PostMapping("/api/users")public ResponseEntity createUser(@RequestBody User user) { // user 객체를 사용하여 처리 return ResponseEntity.ok(user);}클라이언트가 전송한 JSON 데이터를 User 객체로 변환하여 메서드 매개변수로 전달한다. 이 방식은 POST, PUT, PATCH 요청에서 자주 사용한다.= 사용자가 입력한 값(데이터)2. RequestParamURL 쿼리 매개변수를 메서드 매개변수로 바인딩한다. 주로 GET요청에서 ..
1. Optinal 이란?자바에서 Null 참조시 NullPointerException을 방지해주는 클래스로 값이 존재할 수도 있고 존재하지 않을 수도 있는 경우를 처리하기 위한 용도로 사용한다.Optional의 주요 메서드 중 orElse, orElseGet, orElseThrow는 각각 값을 반환하거나 기본 값을 제공하는 데 사용한다.2. orElseOptional이 값이 존재할 경우 해당 값을 반환하고, 값이 없을 경우 지정한 기본값을 반환한다.Optional optionalValue = Optional.ofNullable(null);String value = optionalValue.orElse("기본값");System.out.println(value); // 출력: 기본값optionalValue..
1. Stream이란?Java 8에서 새로 도입된 기능으로, 컬렉션이나 배열 등의 데이터 집합을 처리하기 위한 일련의 기능을 제공한다. 이전에는 for 또는 foreach 문을 돌면서 요소 하나씩 꺼내는 방식으로, 코드도 길고 가독성도 길어서 불편함하여 이를 극복하고자 Stream이 나왔다.2. Stream 특징데이터 흐름Stream은 데이터 흐름을 나타내며, 데이터를 컬렉션이나 배열에서 가져와 연산을 수행하고 최종 결과를 생성한다.원본 데이터 변경 XStream은 원본 데이터를 변경하지 않는다. 즉, Stream 연산은 원본 컬렉션을 수정하지 않고 새로운 결과를 생성한다.중간연산과 최종연산 중간 연산: Stream에 여러 연산을 체인처럼 연결할 수 있다. 이 연산들은 지연(lazy) 방식으로 수행되..
1. 페이징(Paging)이란?Paging은 사용자에게 데이터를 제공할 때, 전체 데이터 중의 일부를 보여주는 방식이다. 이 방식은 사용자에게 편히를 줄 뿐만 아니라, 전체 데이터를 로딩할 필요가 없어서 처리 속도가 빨라진다. Spring Data JPA에서 페이징을 쉽게 구현할 수 있는 기능을 제공한다.2. 페이징의 기본 개념페이징은 보통 페이지 번호(page)와 페이지 크기(size) 으로 작동한다.page : 페이지 번호 (0부터 시작)size : 한 페이지 당 데이터 개수3. Spring Data JPA의 페이징 처리Spring Data JPA에서는 Pageable과 Page 인터페이스를 사용하여 페이징 처리를 할 수 있다.Pageable 인터페이스Pageable pageable = PageReq..
1. 접근제어자접근 제어자는 클래스, 메서드, 변수 등의 접근 범위를 결정한다.public: 어디서나 접근 가능protected: 같은 패키지 또는 서브클래스에서 접근 가능default: 같은 패키지 내에서만 접근 가능 (접근 제어자 미지정 시 기본값)private: 같은 클래스 내에서만 접근 가능2. private의 특징캡슐화: private 멤버는 클래스 외부에서 직접 접근할 수 없으므로, 데이터와 메서드를 보호하고 클래스의 내부 구조를 숨기는 역할을 한다.정보 은닉: 클래스의 내부 데이터와 메서드를 외부에서 숨겨, 의도하지 않은 조작이나 변경을 방지한다.접근 메서드 사용: 외부에서 private 멤버에 접근하기 위해서는 public 메서드(주로 getter와 setter)를 사용해야 된다.
1. staticstatic 이라는 용어를 해석해보면 말그대로 정적 혹은 고정된이란 의미를 가지고 있다. 자바에서는 static 키워드를 사용하여 static 변수와 static 메소드를 생성할 수 있고, 이 둘을 합쳐 정적 멤버라고 한다. static 키워드를 가지고 있는 변수, 메소드는 객체(new 키워드로 인스턴스화 된 클래스)에 소속된 멤버가 아니라 클래스 자체에 소속된 멤버이다.2. static 특징메모리에 고정적으로 할당된다.static 키워드가 붙지 않는 변수나 메소드의 경우 객체가 생성될 때마다 호출되기 때문에 서로 다른 주소 값을 가지고 있다. 각 객체들에서 공통적으로 관리해야하는 경우는 static 키워드를 사용하는 것이 유용하다.객체 생성 없이 사용할 수 있다.static 멤버는 객체..
1. 빌드 관리 도구 (Build Tool)빌드 관리 도구는 코드를 컴파일, 테스트, 패키징, 배포 등의 작업을 자동화하고 효율적으로 관리하는 데 사용하는 도구입니다.컴파일 및 패키징 자동화빌드 도구는 소스 코드를 컴파일하고, 결과물인 실행 가능한 파일(예: .jar, .war, .exe)을 자동으로 생성.의존성 관리빌드 관리 도구는 외부 라이브러리를 자동으로 다운로드하고, 프로젝트에서 사용할 수 있게 설정해준다. 의존성 충돌(서로 다른 버전의 라이브러리 간 충돌)도 자동으로 관리한다.Maven과 Gradle은 중앙 리포지토리(Maven Central, JCenter 등)에서 의존성을 가져오는 기능을 제공한다.테스트 자동화빌드 도구는 프로젝트 내에 포함된 테스트 코드(단위 테스트, 통합 테스트)를 자동으..
