SpringBoot
-
Enum 열거형 선언(엔터티 내, 별도 엔터티)SpringBoot 2024.03.02 01:13
이번 프로젝트를 진행하면서, Enum type로 변수를 사용할 일이 있어 두 방법으로 열거형 변수를 선언하여 활용해 봤다. 1. 별도의 Enum Class 활용 @ToString @Getter public enum Feel { //sat as 4 type ALIVE, LITTLE, FULLY, DEATH; } 일반 엔터티 클래스처럼 enum 타입으로 별도의 .java 파일을 두어 관리했다. 보통 각 열거형에 대해서 숫자/문자열 타입의 속성을 추가하기도 하지만, 이번 프로젝트에서는 필요하지 않았음. @Enumerated(EnumType.STRING) private Feel hangOver; 그리고 위의 enum 타입을 활용하는 엔터티 클래스에서는 이런 식으로 필드 선언을 해주었다. @Enumerated 어..
-
Part 4(Ch 7, 8, 9) - M:N(다대다) 관계와 파일 업로드 처리SpringBoot 2024.01.15 01:34
(책 - 코드로 배우는 스프링 부트 웹 프로젝트) https://github.com/uqualid/SBW-ex7-mreview GitHub - uqualid/SBW-ex7-mreview Contribute to uqualid/SBW-ex7-mreview development by creating an account on GitHub. github.com 영화/리뷰(목록, 평균 평점) 프로젝트에 사진을 등록하기 위해 파일 업로드 처리 방식을 적용했다 1. M:N(다대다) 관계 JPA에서 대부분의 M:N 처리는 @ManyToMany와 별도의 엔터티 설계 후 @ManyToOne으로 처리하는 방식이 있는데, 해당 프로젝트에서는 후자의 방법을 사용하였다 영화, 리뷰, 회원, 이미지 엔터티가 각각 1:N 관계로 구..
-
ch5, 6 - N:1(다대일 관계) 처리하기(+ @RestController와 JSON 처리)SpringBoot 2024.01.02 20:10
(책 - 코드로 배우는 스프링 부트 웹 프로젝트) https://github.com/uqualid/SBW-ex5-board GitHub - uqualid/SBW-ex5-board Contribute to uqualid/SBW-ex5-board development by creating an account on GitHub. github.com 간단하게 프로젝트에 대해 언급하자면 entity 세 개 - Board(방명록), Reply(댓글), Member(회원) - 로 구성된 방명록 및 댓글 CRUD 기능이 구현되어 있는 프로젝트이다 이중 @ManyToOne과 @RestController(JSON 처리) 관련 내용만 정리해 볼 것이다 1. @ManyToOne 세 엔티티 간의 관계는 board와 외의 2개 ..
-
ch4 - 방명록 프로젝트 톺아보기SpringBoot 2023.12.28 17:42
(책 - 코드로 배우는 스프링 부트 웹 프로젝트) https://github.com/uqualid/SBW-ex4-guestbook html과 css의 경우 제공되는 탬플릿을 따라 구성되어 있고, 외에는 여타 프로젝트와 동일하게 entity, DTO, repository, service(+ Impl) , controller로 구성되어 있다) GuestBook entity 구성 변수명 속성 게스트북 아이디 gno Long, PK 제목 title String 내용 content String 작성자 writer String 생성시간 regDate LocalDateTime 수정시간 modDate LocalDateTime 생성시간과 수정시간은 BaseEntity 추상 클래스에서 AuditingEntityListen..
-
ch2 - Spring Data JPASpringBoot 2023.12.21 15:36
(책 - 코드로 배우는 스프링 부트 웹 프로젝트) ORM(Oriented Relational Mapping) 객체지향 패러다임을 관계형 DB에 보존하는 기술 객체지향 패러다임을 관계형 패더라임으로 매핑(mapping)해 주는 개념 객체지향의 구조가 관계형 데이터베이스와 유사하다는 점에서 기인 객체지향 프로그래밍 관계형 데이터베이스 데이터를 보관하는 틀 클래스(Class) 테이블(Table) 데이터 보관(저장)하는 장소 인스턴스(Instance) Row(데이터 개념; 레코드, 튜플) 참조(Reference) - 객체 간의 관계 관계(relation) - 구조적 데이터 표현 JPA(Java Persistence API) ORM을 Java 언어에 맞게 사용하는 spec. 구현체마다 여러 프레임워크가 존재, 대..
Algorithm
-
백준 11727번 - 2×n 타일링 2(Python)Algorithm(in Python) 2023.05.16 02:37
2*n 넓이의 직사각형을 2*1과 2*2 넓이의 직사각형(정사각형 또한 직사각형이다)으로 채우는 문제이다. 설명처럼 문제가 요구하는 것도 굉장히 간단하다. 타일의 가로(편의상) 길이를 입력받은 후 그를 채울 수 있는 경우의 수를 계산하여 출력하는 것이 문제의 전부이다. n이 1일 때는 경우의 수가 하나뿐이다(2*1). n이 2일 때는 경우의 수가 3개이다. n이 3일 때는 경우의 수가 위처럼 5개이고 n이 4일 때는 경우의 수가 위처럼 11개 인데 그렇다면 이 수들 간의 규칙성을 찾아야 하지 않을까? 하는 생각을 가장 먼저 했다. 1) 1 2) 3 3) 5 4) 11 에서 5 = 1*2 + 3 이다. 그리고 11 = 3*2 + 5 이다. 이걸 수식으로 표현하면 f(n) = f(n-1) + f(n-2) *..
-
백준 1914번 - 하노이 탑(Python)Algorithm(in Python) 2023.05.07 15:59
컴공 자료구조 수업을 들어봤다면 한번쯤은 들어봤을 법한 문제인 하노이 탑 문제이다. 당시에 나는 C언어를 통해 재귀호출 방식을 사용하여 이 문제를 풀었는데, 원판의 개수가 지정되어 있지 않고 사용자의 입력에 따라 달라지기 때문에 이번 문제 풀이에서도 재귀 호출 방식을 통해 문제를 해결했다. 문제에서 장대의 개수는 세 개로 고정되어 있고, 사용자가 입력한 개수만큼의 원판을 1번 장대에서 3번 장대까지 옮기는 데에 시행되는 횟수와 이동 과정을 출력하도록 구성되어 있다. 재귀 함수는 자기 자신을 호출하는 함수를 일컫는데, 이 경우 함수 정의문 내에서 base 조건이 갖는 값을 이용하여 함수가 반복 시행됨에 따라 최종 값을 구해낸다. def Fact(n): if n == 1: # n이 1인 경우 1를 반환 re..
-
백준 1929번 - 소수 구하기(Python)Algorithm(in Python) 2023.05.02 20:51
1929번은 m~n 수 범위 내에서 소수를 찾아 출력하는 프로그램이다. m과 n을 입력하면 사이에 존재하는 소수를 출력해주면 된다. 는 건데 참고로(알고있겠지만) 백준 문제 중에 해결에 어려움이 있을 때... 문제 밑에 달린 키워드를 찾아보면 좀 도움이 된다(많이) 이 문제는 소수를 찾는 방법으로 사용되는 에라토스테네스의 채 방법이 적혀있었고 1을 제외한 2부터 찾아지는 소수로 특정 수를 나누었을 때 나머지가 없다면 약수가 존재한다는 것이기 때문에 합성수를 제외해주면서 소수를 찾아나가는 방식이다. 그렇다면 이걸 어떻게 구현하느냐?(이게 본론이자 메인임...) a, b = map(int, input().split()) for i in range(a,b+1): if i==1:#1은 소수가 아니므로 제외 co..
-
백준 4153번 - 직각 삼각형(Python)Algorithm(in Python) 2023.04.12 14:43
4153번 문제는 중학 수학에서 다루는 '피타고라스 정리'를 이용해 삼각형이 직각삼각형인지, 아닌지를 구하는 문제이다. * 파이썬으로 머리 아프게 코딩한 경험이 너무 오래되어서 이번 스터디를 시작하며 '재활 운동' 겸 쉬운 문제부터 시작하게 되었는데, 이 문제는 브론즈 3 티어 문제다... 굉장히 쉽다는 거(상대적) 아무튼 문제 입력으로는 세 숫자 값(변의 길이)을 스페이스로 구분해서 받고, '0 0 0'이 입력되면 실행을 멈춘다. def sqr(i,j,k):# 세 변의 값을 입력받음 - i가 가장 긴 변의 길이 cul = i**2 == (j**2 + k**2)# cul - 직각삼각형인지 아닌지 판단(cul의 값은 0 혹은 1) if(cul):# 직각삼각형이 맞을 때(cul 값이 1) print("rig..