워크샵6349 141

[Spring] Spring Entity, Repository 설명

Spring Entity, Repository는 DB와 관련된 항목들 중 몇 가지입니다. 그 외에는 DAO, DTO, VO, Transaction 등이 있습니다. 이 글이 유용할 수도 있습니다. Repository에 대해서 참고하고 싶으시다면 참고해주세요. Entity란? Entity(엔티티)는 데이터베이스에 쓰일 필드와 여러 엔티티간 연관관계를 정의하는 역할을 합니다. 테이블에 대응하는 하나의 클래스라고 생각하시면 됩니다. Entity 어노테이션과 함께 여러 관련 어노테이션을 사용하여 설계할 수 있습니다. 모든 어노테이션들을 포스팅할 수 없으니, 링크를 걸어두겠습니다. Repository란? Repository는 기존 JPA를 한 단계 더 추상화시킨 인터페이스로서 간단하게 설명하자면, Entity에 의..

Spring 2022.02.17

[괴발개발] TODO 웹 개발 노트 - 엔티티 설계

TODO 웹 개발에는 기본적으로 갖추어야하는 조건에는 회원가입과 글 작성이 있습니다. 회원가입은 기본적으로 회원 엔티티가 필요할 것이고, TODO 게시글도 따로 저장을 해야하기에 엔티티가 필요합니다. 그리고 TODO 게시글의 수정 및 삭제는 작성자만이 할 수 있어야고, 동시에 회원이 총 몇개의 글을 작성했는 지 역시 알게 하고 싶었기에 양방향 연관관계로 매핑하였습니다. 회원과 TODO 게시글의 관계는 일대다이고, TODO 게시글과 회원의 관계는 다대일입니다. Member.java @Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder @Entity public class Member { @Id @GeneratedValue(strategy = Ge..

Spring/괴발개발 2022.02.17

[프로그래머스] 주식가격

※ 해당 문제의 링크는 여기입니다. ※ Queue를 활용하여 문제를 해결하였습니다. ※효율성 테스트가 있습니다. 혼자서 푸실 분들은 유의해주세요.※ 제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. 문제만 보고 헷갈릴 수 있습니다. 질문하기에 자세히 작성해주신 분이 있으셨습니다. 감사합니다. (링크) 알고리즘 굉장히 간단한 문제입니다. 배열로도 충분히 해결할 수 있는 문제입니다. 하지만 스택으로 문제를 해결하려고 했지만, 스택을 자주 사용해보지 않아 잘 몰라, 그나마 조금이라도 더 아는 Queue로 문제를 해결하였습니다. public int getTimeWhenFalls(int currentPrice, Queue left..

[Spring] Spring DAO, DTO 설명

Spring DTO, DAO... DB와 밀접한 관계가 있는 만큼 중요한 내용이 담겨있기에 포스팅합니다. 짧고 간결하게 포스팅하겠습니다. DAO란? Data Access Object의 약자로, 데이터베이스의 데이터에 접근하기 위해 생성하는 객체입니다. 데이터베이스에 접근하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용합니다. 간단하게 데이터베이스에 접속하여 데이터의 CRUD 작업을 시행하는 클래스입니다. JSP 및 Servlet페이지 내에 로직을 기술하여 사용할 수 있지만, 코드의 간결화 및 모듈화, 유지보수 등의 목적을 위해 보통 별도의 DAO 클래스를 생성하여 사용합니다. DTO란? Data Transfer Object의 약자로 계층간 데이터 교환을 위한 Java Beans를 뜻합니다. 또한 DT..

Spring 2022.02.16

[괴발개발] TODO 웹 개발 노트 - 준비과정

괴발개발 첫 번째 토이 프로젝트는 TODO 리스트 기능이 있는 간단한 웹 개발입니다. 기본적으로 갖추어야하는 기능들은 다음의 7가지가 있습니다. 회원가입과 로그인 기능 글 작성 기능 글 수정 및 삭제 기능 로그아웃 기능 글 체크 기능 회원 삭제 기능 글 조회 기능 그리고 시간이 여유롭다면 개발할 기능들은 다음의 3가지가 있습니다. 글 하트 기능 OAUTH2를 사용한 로그인 프로필 사진 기능 기본 기능 7가지, 추후 개발 기능 3가지 합하여 총 10가지의 기능을 20일안에 모두 끝맞치고 Docker에 무사히 배포하는 것까지가 목표입니다. 프론트는 SpringBoot에서 지원해주는 템플릿엔진 사용할 것입니다. (React 사용을 할 까도 생각을 하였으나, React까지 적용한다면 시간이 오래걸릴 것 같기 때..

Spring/괴발개발 2022.02.16

[프로그래머스] 다리를 지나는 트럭

※ 해당 문제의 링크는 여기입니다. ※ Inner Class를 사용해 문제를 해결하였습니다. 제한사항 bridgeLength 길이의 다리가 있고, 정해진 순서에 맞춰 트럭이 건너가야 한다. 트럭마다 무게가 각각 존재한다. bridgeLength길이만큼 트럭을 다리 위로 이동시킬 수 있으나, 다리가 최대로 버틸 수 있는 무게는 정해져 있다. 트럭은 한 번에 1씩만 움직일 수 있고, bridgeLength만큼 전부 움직여야 다리를 완전히 건넌 것이다. 한 번에 하나의 행동만 가능하다. (동시에 트럭을 2대 이상 이동시킬 수 없음) 위 문제에 자세히 설명이 되어있지 않아, 문제를 풀어서 설명하였습니다. 알고리즘 문제를 이해하는 데에 오래 걸렸습니다. 질문하기에서도 많은 분들이 문제를 이해하기 어려워하셨습니다...

[자료구조] 우선순위 큐와 힙

우선순위 큐란, 기존 큐 방식인 FIFO 방식과 함께 우선순위를 정하여 해당 방향으로 정렬을 하는 큐라고 생각하시면 됩니다. 우선순위를 어떻게 지정하냐에 따라서 큐가 바뀝니다. 우선순위 큐는 대부분은 힙을 이용하여 구현합니다. 힙은 완전이진 트리 형태의 자료구조입니다. 여러 개의 값 중 최댓값 또는 최솟값을 찾아내는 연산이 빠르다는 장점이 있습니다. 그리고 이진 탐색 트리(BST)와 달리 중복 값을 허용합니다. 힙의 종류는 2가지 정도가 있는 데, 최대 힙(Max Heap)과 최소 힙(Min Heap)이 있습니다. 이 둘을 판단하는 기준은 아주 단순합니다. 부모 노드 ≥ 자식 노드 (즉, 부모 노드의 key 값이 자식 노드보다 크거나 같은 완전 이진트리) 라면, 최대 힙입니다. 그 반대라면 최소 힙입니다..

[프로그래머스] 프린터

※ 해당 문제의 링크는 여기입니다. ※ 다른 분들이 푸신 방법이 더 좋을 수도 있지만 제가 생각해낸 방법으로 포스팅하도록 하겠습니다. (대부분 Inner Class, Queue 둘 중 하나, 혹은 둘 다 사용하셔서 푸셨습니다. 저 같은 경우에는 Queue만 사용하여 해결했습니다.) 제한사항 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냄 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣음 그렇지 않으면 J를 인쇄 알고리즘 문제를 파악함에 있어 제가 가장 중요하게 확인한 점은 값이 같더라도 위치를 정확하게 파악하는 것이었습니다. 그리고 해당 값을 인쇄, 즉 사라지게 된 후에는 다시 제한사항을 반복한다는 점이었습니다. 그래서 개인적으로 ..

[프로그래머스] 기능개발

※ 해당 문제의 링크는 여기입니다. ※ 배열로 푸는 편이 더 코드가 단순해지지 않을까 생각하였지만 스택/큐 영역인 만큼 이 둘을 최대한 사용하는 것이 맞다고 생각이 들어 Queue를 사용하여 문제를 해결하였습니다. 코드와 알고리즘 로직을 설명하기 앞서 문제에서 주의 깊게 봐야 하는 점들을 먼저 설명하도록 하겠습니다. 제한 사항 배포는 하루에 한 번만 가능하다. 뒤에 있는 기능을 먼저 완성하였다고 바로 배포할 수 없고, 앞에 있는 기능이 완성된 후, 같이 배포하게 된다. 한 번에 몇 개 배포하였는지 카운트를 배열에 저장한 후, 이를 반환해주어야 한다. 테스트 케이스 및 설명도 잘 되어있어 두세 번 정도 읽어보면 금방 이해할 수 있습니다. 알고리즘 로직 일단, 모든 알고리즘 해결 방식은 굉장히 많으므로 제가..

[프로그래머스] 스킬업/주문관리 API 서버 개발

SpringBoot 공부를 하고자 프로그래머스 스킬업에 있는 주문관리 API 서버 개발이라는 연습 과제를 해보았습니다. SpringBoot를 자세히 모르고, SpringBoot를 사용할 때에는 JPA밖에 사용해보지 않아 문제를 푸는 데 있어 어려움을 느꼈습니다. ... 결국 중도 포기를 하긴 하였지만, 좋은 경험이었던 것 같습니다. 제 첫 스킬업 연습 과제였기에 낯설기도 했지만, 에디터 역시 제가 기존에 사용해오던 에디터와 달라 더 낯설게 느껴졌던 것 같습니다. 문제 자체는 어려운 편은 아니었지만, 제가 사용해보았던 JPA가 아닌 JDBC template를 사용하였다는 점, 그리고 직접 DB를 사용하여 CRUD를 하지 않고, Read를 중점적으로 했다는 점에서 문제를 해결하는 데에 있어 어려움을 느꼈습니..

공부/서버 2022.02.13