본문 바로가기

분류 전체보기28

관계형 데이터베이스 개념 정리(릴레이션, 튜플, 도메인) 관계형 데이터베이스 수학과 관계형 모델에서 릴레이션의 차이 자료 구조 중 set은 서로 다른 요소를 가진 자료 구조로 순서가 없습니다. 이제 set이 두 개가 등장합니다. set A에는 a, b가 있고 set B에는 1, 2, 3이 있습니다. set A에서 하나의 요소를 고르고, set B에서 하나의 요소를 골랐을 때 가능한 모든 한 쌍의 조합을 릴레이션이라고 합니다. 위 이미지에서는 {a, 1}, {a, 2}, {a, 3}, {b, 1}, {b, 2}, {b, 3}이 있겠습니다. 이를 카테시안 곱이라고 하는데 수식으로 표현하면 A × B = {(a, b) | a ∈ A and b ∈ B}라고 합니다. 즉, A와 B의 카테시안 곱은 (a, b) 형태의 요소들로 이루어진 집합이며, 이때 a는 A의 원소이고.. 2023. 9. 18.
관계형 데이터베이스 정리 이번 내용은 데이터베이스 시스템 책을 보면서 생각 및 공부 정리를 한 포스팅입니다. 관계형 데이터베이스 관계형 데이터베이스 구조 관계형 데이터베이스는 테이블의 모임으로 구성됩니다. 그리고 테이블은 각각 행과 열로 구성되어 있습니다. 테이블의 각 열은 속성으로 표현합니다. 만약 테이블의 열에 이름, 성별, 나이가 있다면 이것이 테이블의 속성입니다. 테이블의 각 행은 속성과 관계가 있습니다. 가령 이름이란 속성(열)의 행에 유재석, 박명수, 하하, 길이 있다고 합시다. 이때 행은 이름이란 속성의 관계를 표현합니다. 테이블은 이런 관계들이 모인 것으로 이를 릴레이션이라 표현합니다. 튜플은 자료 구조로 데이터의 리스트를 의미합니다. 릴레이션은 튜플의 집합이며 튜플의 순서를 보장하지 않습니다. 또한 릴레이션의 각.. 2023. 9. 14.
TemplateInputException: Error resolving template [/common/fragments/footer], template might not exist or might not be accessible by any of the configured Template Resolvers 예외 해결 1. 문제상황 EC2로 서버를 구동했을 때 예외가 터졌습니다. 로컬에서는 문제 없었는데 말이죠. 그리고 이상하게 특정 url에만 접근하면 위와 같은 예외가 터졌습니다. org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/common/fragments/footer], template might not exist or might not be accessible by any of the configured Template Resolvers (template: "user/home" - line 79, col 11) at org.thymeleaf.engine.TemplateManager.resolveTemplate(Template.. 2023. 8. 2.
TemplateInputException: Error resolving template, template might not exist or might not be accessible by any of the configured Template Resolvers] 예외 해결 1. 문제상황 분명 로컬에서는 아무런 문제가 없었는데, EC2에 jar를 배포하자 사이트는 먹통이 되었습니다. 위와 같은 예외가 터졌습니다. @GetMapping("/find-id") public String findId(){ return "/login/find-id"; } 컨트롤러에서 뷰 탬플릿 이름을 리턴할 때 슬래쉬('/')를 포함해서 리턴했기 때문에 발생한 예외였습니다. IDE에서 돌릴 때는 상관 없지만, jar로 배포할 때는 문제가 된다고 합니다. 2023. 8. 2.
Pageable을 활용해 타임리프로 페이징 처리 구현하기 1. 개요 포스팅에 앞서 이 포스팅은 페이징 처리에 관련해서만 내용을 담았습니다. 들어가기 앞서 용어를 정리해야 할 거 같은데요. 아마 페이징 처리를 한다는 건 위처럼 하는 것을 의미할 겁니다.(더미 데이터라 그러려니 하고 봐주세요) 페이지 그룹 : 페이지들을 모은 상위 카테고리 개념입니다. 페이지 그룹 사이즈만큼 페이지가 생길 것입니다. 위 이미지에서는 페이지 그룹 사이즈를 2로 설정했기 때문에 페이지는 두 개가 나옵니다. 페이지 : 페이지에는 정해둔 페이지 사이즈만큼 컨텐츠가 나올 겁니다. 게시판이면 게시글이, 쇼핑몰이면 상품들이 컨텐츠에 해당하겠습니다. 저는 e-book 서점이므로 도서의 정보가 컨텐츠로 나오는데 만약 페이지 사이즈를 5개로 설정했다면 페이지당 도서의 정보가 5개씩 나와야 합니다. .. 2023. 7. 20.
테스트 코드 작성 시 파일 업로드를 하지 않고 MultipartFile 가져오기 파일을 업로드하는 로직들을 모아 유틸 클래스로 만들고, 특정 서비스에서 파일 업로드 유틸 클래스를 참조하여 메소드를 호출할 때 해당 메소드를 테스트하려면 바로 다음과 같은 문제에 직면합니다. 테스트 코드에서는 파일 업로드를 할 수 없는데 유틸 클래스에서 MultipartFile 객체의 의존성이 있는 경우입니다. 이번 포스팅에서는 해당 내용을 다뤄보겠습니다. 1. 코드 코드를 보여드리기 전, 대충 코드의 로직을 설명해드리자면 도서를 등록할 때 thumbnail 이미지를 같이 등록해야 하는데 이때 파일 업로드 클래스를 호출하여 로직을 처리하고 있습니다. 도서 그룹 관리 컨트롤러 @RestController @RequiredArgsConstructor @Slf4j @RequestMapping("/manage/.. 2023. 7. 10.