그래프
그래프는 아이템들과 이들 사이의 연결 관계를 표현한 자료구조로 M:N 관계 표현 시 많이 사용된다.
정점 : 그래프의 데이터가 담긴 부분
간선 : 정점간의 연결관계
인접하다는 것은 정점과 정점을 연결하는 간선이 존재한다는 것을 의미한다.
차수 : 한 정점을 기준으로 정점에 연결된 간선의 개수
정점을 통해 연결되는 간선들을 순서대로 나열한 것을 경로라고 함.
그래프 종류
무향 그래프
양쪽 정점에서 간선을 통해 서로에게 도달 가능한 그래프.
유향 그래프
한 정점에서 다른 정점으로는 도달 가능하지만 반대는 불가능한 그래프
가중치 그래프
간선에 값이 추가된 형태로 해당 간선을 택할 때 비용을 표현하는 경우 사용한다.
순환 그래프
시작한 정점에서 끝나는 경로를 사이클이라고 할 때
이런 순환 구조를 가진 그래프
완전 그래프
정점들이 가능한 모든 간선을 가진 그래프이다.
연결할 수 있는 모든 간선을 갖고 있음.
Validation
유효성 검사란 사용자가 입력한 데이터가 허용된 형태인지 검사하는 과정을 말한다.
spring-boot-starter-validation
jakarta bean validation
이란 java에서 validation을 하기위한 명세로
어떤 항목이 어떤 규칙을 지켜야 하는지를 표시하는 기준이다.
hibernate validation
jakarta bean validation을 토대로 실제로 검증해주는 프레임워크
둘의 관계는 jpa와 hibernate ORM과 비슷하다
여러가지 어노테이션
https://beanvalidation.org/2.0/spec/#builtinconstraints
@NotNull : 데이터가 null 이 아님을 검증.
@NotEmpty : 데이터가 비어있지 않음을 검증. String의 경우 길이가 0이 아님을, List 등의 Collection은 아이템이 하나 이상 존재하는지를 검증.
@NotBlank : 문자열에 대하여 공백이 아님을 검증. 이때 공백의 기준은 문자열의 길이가 아닌,
공백문자, 탭, 개행문자 등 공백으로 나타나는 문자들을 제외한 문자열의 길이를 의미한다.
어노테이션 만들기
@Target()
이 어노테이션이 어디에 덧붙일 수 있는지를 정의하는 용도.
@Retention()
이 어노테이션이 어느시점까지 유지될 지를 정의하는 용도. 유효성 검사의 경우 서비스 실행중에도 확인이 가능해야 하기 때문에 RUNTIME이다.
실행 중에는 확인할 수 없는 어노테이션의 예시는 lombok의 어노테이션들
'멋쟁이 사자처럼 > TIL' 카테고리의 다른 글
230628 11주 3일차 TIL. File 실습 (0) | 2023.06.28 |
---|---|
230627 11주 2일차 TIL. 관점 지향 프로그래밍 AOP (0) | 2023.06.27 |
230620 10주 2일차 TIL. LinkedList, 직렬화, REST (0) | 2023.06.20 |
230619 10주 1일차 TIL. Queue, HTTP (0) | 2023.06.19 |
230615 9주 4일차 TIL. JPA 복습, create, readAll (0) | 2023.06.18 |