java 95

[Spring Boot] 관련 어노테이션

1. 스프링부트 기본 설정 관련@SpringBootApplication스프링부트 애플리케이션의 시작점임을 명시@Configuration, @EnableAutoConfiguration, @ComponentScan 을 결합한 어노테이션@SpringBootApplicationpublic class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); }} @EnableAutoConfiguration스프링부트가 클래스패스에 있는 라이브러리와 애플리케이션의 설정을 기반으로 자동 설정을 활성화 @ConfigurationJava 기반의 설정 파일임을 명시@B..

[Java] @IdClass

JPA에서 복합키를 매핑하는 방법중 하나, 복합키를 정의하는 별도의 클래스를 사용복합키를 지정할때 @IdClass 를 사용하여 엔티티와 연결 복합키두개 이상의 컬럼을 조합하여 기본키로 사용하는 것을 의미설정 방식1. 식별자 클래스 정의복합키에 포함될 필드를 정의한 클래스를 작성2. 엔티티 클래스와 연결엔티티에서 어노테이션을 사용하여 식별자 클래스를 지정하고, 각 필드를 @Id로 선언예제테이블 구조 :Order---------------------------------order_id (PK)product_id (PK)quantity 식별자 클래스 정의 :import java.io.Serializable;import java.util.Objects;public class OrderId implements S..

BE/Java 2024.12.31

[프로그래머스 / Java] [level 0] 배열의 길이에 따라 다른 연산하기

문제 설명정수 배열 arr과 정수 n이 매개변수로 주어집니다. arr의 길이가 홀수라면 arr의 모든 짝수 인덱스 위치에 n을 더한 배열을, arr의 길이가 짝수라면 arr의 모든 홀수 인덱스 위치에 n을 더한 배열을 return 하는 solution 함수를 작성해 주세요.제한사항1 ≤ arr의 길이 ≤ 1,0001 ≤ arr의 원소 ≤ 1,0001 ≤ n ≤ 1,000입출력 예arrnresult[49, 12, 100, 276, 33]27[76, 12, 127, 276, 60][444, 555, 666, 777]100[444, 655, 666, 877]제출 답안 :class Solution { public int[] solution(int[] arr, int n) { int[] answ..

Etc./개인공부 2024.12.30

[Spring Boot] Validation 유효성 검사

애플리케이션에서 입력값이 예상한 조건에 부합하는지 확인하는 과정 필요한 이유1. 데이터 무결성 보장잘못된 입력값으로 인해 발생할 수 있는 데이터베이스나 시스템 오류 방지2. 보안 강화유효하지 않은 데이터를 허용하지 않아 악의적인 요청 차단3. 사용자 경험 향상잘못된 데이터를 입력했을때 즉시 피드백 제공Spring Boot에서 Validation 사용하기1. 의존성 추가 org.springframework.boot spring-boot-starter-validation 2. 주요 어노테이션어노테이션설명@NotNull값이 null이 아니어야 함@NotEmpty값이 null이 아니고, 빈 문자열이 아니어야 함@NotBlank값이 null, 빈 문자열, 공백만 포함하지 않아야 함@Size문자열, 배열..

[프로그래머스 / Java] [level 0] 부분 문자열 이어 붙여 문자열 만들기 (StringBuilder, StringBuffer)

문제 설명길이가 같은 문자열 배열 my_strings와 이차원 정수 배열 parts가 매개변수로 주어집니다. parts[i]는 [s, e] 형태로, my_string[i]의 인덱스 s부터 인덱스 e까지의 부분 문자열을 의미합니다. 각 my_strings의 원소의 parts에 해당하는 부분 문자열을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.제한사항1 ≤ my_strings의 길이 = parts의 길이 ≤ 1001 ≤ my_strings의 원소의 길이 ≤ 100parts[i]를 [s, e]라 할 때, 다음을 만족합니다.0 ≤ s ≤ e  my_strings[i]의 길이입출력 예my_stringspartsresult["progressive", "hamburger", ..

Etc./개인공부 2024.12.29

[Spring Boot] Thymeleaf 타임리프

Java 웹 애플리케이션에서 HTML 템플릿 엔진으로 사용되는 라이브러리서버에서 동적으로 데이터를 렌더링하여 HTML을 생성하며, Spring Boot와 잘 통합되어 뷰(View)를 생성하는데 널리 사용됨Thymeleaf의 주요 특징1. HTML 템플릿 파일로 작동순수 HTML로 디자인 할수 있어 HTML파일이 브라우저에서도 제대로 표시됨개발자와 디자이너가 동일한 파일을 사용할 수 있음2. Spring MVC와 강력한 통합컨트롤러에서 전달된 모델 데이터를 쉽게 활용 가능3. 표현식 기반의 문법 지원데이터 바인딩, 반복, 조건문 등을 쉽게 처리할 수 있음4. 확장성커스텀 태그와 속성을 정희할 수 있어 유연한 사용이 가능5. 서버 및 클라이언트에서 모두 동작 가능서버 사이드 렌더링을 기본으로 지원하지만, 클..

[Spring Boot] Page

Page (페이징)주로 Spring Data JPA 에서 사용되는 인터페이스페이징 처리는 데이터베이스에서 많은 데이터를 한번에 불러오지 않고, 필요한 크기만큼 나누어 가져오는 방식Page와 Pageable1. Page페이징된 데이터를 담고있는 객체페이징 처리된 데이터와 함께, 전체 데이터의 크기, 페이지 정보 등을 제공2. Pageable페이징 요청 정보를 담고있는 객체현재 페이지 번호, 페이지 크기(한페이지에 몇개의 데이터) 등을 설정하여 페이징 요청에 사용됨주요 메서드데이터 관련 메서드1. getContent()현재 페이지의 데이터리스트를 반환2. getTotalElements()전체 데이터 개수를 반환3. getTotalPages()전체 페이지 수를 반환4. getNumber()현재 페이지 번호를 ..

[Spring Boot, Java] Cascade

Cascade (영속성전이)는 특정 엔티티의 상태변화 (예: 저장, 삭제)가 연관된 엔티티에도 전이되도록 설정하는 기능연관관계가 있는 엔티티들 간에 일일이 상태를 동기화하지 않아도, 부모 엔티티의 상태변화를 통해 자식 엔티티의 상태도 자동 변경된다종류1. CascadeType.PERSIST부모 엔티티를 저장할때, 연관된 자식 엔티티도 함께 저장된다자식 엔티티를 따로 persist() 하지 않아도 된다@Entitypublic class Parent { @Id @GeneratedValue private Long id; @OneToMany(cascade = CascadeType.PERSIST) private List children = new ArrayList();}// 사용 예시Pare..

[Spring Boot, JPA] 스냅샷

JPA에서 변경 감지(Dirty Checking) 기능을구현하기 위해 사용하는 내부 메커니즘 중 하나엔티티의 초기상태를 복사하여 저장한값을 의미, 이를 통해 엔티티 객체의 변경 여부를 감지할 수 있음 스냅샷이 필요한 이유JPA는 데이터베이스와 객체 간 동기화를 위해 엔티티의 변경 여부를 확인해야 한다이를 위해 엔티티가 영속성 컨텍스트에 저장될때 스냅샷을 만들어 초기 상태를 기록한다트랜잭션이 커밋되거나 flush()가 호출될때 현재 엔티티의 상태와 스냅샷을 비교하여 변경사항이 있는지 판단한다스냅샷 작동 방식1. 엔티티 영속 상태로 전환em.persist() 를 호출하거나 데이터베이스에서 조회하여 엔티티가 영속성 컨텍스트에 저장되면, 스냅샷이 생성된다스냅샷은 엔티티의 초기 상태를 복사하여 저장한 데이터2. ..

[Spring Boot, JPA] 영속성 컨텍스트

영속성 컨텍스트 (Persistance Context)JPA 에서 엔티티 객체를 관리하는 메모리 상 저장소.JPA는 영속성 컨텍스트를 통해 데이터베이스와 상호작용하며, 엔티티의 생명주기를 관리하고, 데이터베이스 작업을 효율적으로 처리한다핵심 개념1. 엔티티 관리영속성 컨텍스트는 엔티티 객체를 생성, 읽기, 수정, 삭제 등 다양한 방식으로 관리한다엔티티는 JPA에서 데이터베이스의 한 행에 해당하는 자바 객체를 말함2. 1차 캐시영속성 컨텍스트는 1차 캐시로 작동하며, 데이터베이스 접근을 최소화하기 위해 객체를 메모리에 저장한다동일한 트랜잭션 내에서 같은 엔티티를 다시 조회하면, 데이터베이스에 쿼리를 보내지 않고 1차 캐시에서 데이터를 반환한다3. 변경 감지 (Dirty Checking)영속성 컨텍스트는 엔..