728x90
SMALL

Programming 11

[JPA] 좌석 개수를 구하기 위한 @Formula 사용기 (Feat. @DataJpaTest @Formula 데이터 검증 테스트 실패 분석)

개인 프로젝트 진행 중 공연장에 등록된 hall을 리스트로 조회하는 API를 구현하면서 각 hall에 설정된 좌석수를 간단히 보여주고 싶었다.이 때 모든 hall 리스트가 보여지더라도, 모든 hall에 대한 좌석 세부 정보를 확인하지 않을 거라 생각하기 때문에 좌석 정보를 조회하는 부분과 hall을 조회하는 부분을 나누어 필요하지 않은 데이터까지 로딩하지 않는 목표를 세웠다. 공연장과 공연장에 존재하는 홀, 홀에 존재하는 좌석 이렇게 세개의 테이블은 서로 연관관계를 가지는 테이블로 구성되어있고홀에 존재하는 좌석 수를 구하는 방법 중 4가지 방법을 고안하고 고민했었다. 고민했던 4가지 방안 1. 공연홀을 조회하고, 각 좌석의 리스트 개수를 조회하기 2. 공연홀을 조회한 후 각 공연 홀에 대한 좌석 수 카운..

Programming/Spring 2024.03.30

[Spring] DELETE API 사용하기

Put API는 CURD중 D(Delete)의 역할을 수행하게 된다. 리소스를 삭제하고, 없다면 아무것도 일어나지 않는다. 삭제 된 데이터이든 현재 있는 데이터든 삭제하는 것은 동일하기 때문에 멱등성을 가지고 있지만, 삭제하는 순간 데이터가 삭제되기 때문에 안정성은 가지고있지 않다. DataBody의 경우 넣을 순 있지만, 대부분 Unique값을 가지고 삭제시키기 때문에 사용하는 것을 권장하지는 않는다고 한다. @DeleteMapping("/path") : @DeleteMapping Annotation은 @RequestMapping(path = " ", method = RequestMethod.PUT) 와 같은 기능을 한다. 실제 데이터베이스를 연동하여 사용 중인 웹 사이트에서는 이 기능을 통해 데이터베..

Programming/Spring 2022.12.06

[Spring] PUT API 사용하기

Put API는 CURD중 C(Create)/U(Update)의 역할을 수행하게 된다. 리소스가 없는 경우 생성하고, 있다면 업데이트 한다. 처음 한번은 생성되고, 그 다음은 계속해서 기존 것을 업데이트하기 때문에 데이터는 항상 하나이며 같은상태를 유지하기 때문에 멱등성을 지녔다. 하지만 잘못된 데이터가 전송되더라도 업데이트 시키기 때문에 안정성은 지니지 못한다. [POST와 PUT의 차이] Post는 매번 생성하고, Put은 없으면 생성하고 있으면 업데이트를 한다는 점에서 차이를 드러낸다. 이러한 역할의 차이 때문에 Post는 멱등성이 없고, Put은 멱등성을 가지고 있다. Put 방식도 Json 방식으로 데이터를 주고 받게 되는데, Json 방식에 대해 간결한 설명은 아래 포스팅에 있으니 참고하면 된..

Programming/Spring 2022.12.06

[Spring] POST API 사용하기

Post API는 CURD 중 C(Create)의 역할을 수행하게 된다. 즉, 리소스의 생성 및 추가를 위해 사용하는 것이다. 또한 DataBody에 데이터를 담아서 보내고, 생성 된 데이터를 전달받기 때문에 QueryParameter를 사용할 수는 있지만 보통은 사용하지 않는다. [POST와 PUT의 차이] Post는 매번 생성하고, Put은 없으면 생성하고 있으면 업데이트를 한다는 점에서 차이를 드러낸다. 이러한 역할의 차이 때문에 Post는 멱등성이 없고, Put은 멱등성을 가지고 있다. Post API를 사용하기에 앞서, 주로 web에서 데이터를 주고 받을 때 xml이나 Json 형태로 주고 받는데, 거의 대부분은 Json를 사용한다. Json의 형태는 다음과 같다. { "key" : "value..

Programming/Spring 2022.12.06

[Spring] GET API 사용하기 (Annotation 정리)

Get API는 CURD중 R(Read)의 역할을 수행하게 된다. 즉 리소스의 취득을 위하여 사용하는 것이다. 동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고, 서버의 상태도 동일하게 남기때문에 멱등성을 지녔다. @RequestMapping("/path") : url의 뒷 경로 값을 지정함 ex) http://localhost:port/path @GetMapping(path="/path2") : RequestMapping에서 지정해준 경로의 뒷 경로값을 지정함 (path = 을 생략하고, @GetMapping("/path2")로 바로 경로를 지정할 수 있음 ex) http://localhost:port/path/path2 @RequestMapping(path="/pat..

Programming/Spring 2022.12.06

[Python] SVN 커밋 시 라인(LINE)으로 메세지 받는 알림봇 만들기 - 2편

https://elephant-dev.tistory.com/19 [Python] SVN 커밋 시 라인(LINE)으로 메세지 받는 알림봇 만들기 - 1편 요즘은 불편한 부분은 자동화 하는 것에 빠져서.. 업무를 하다가 엇! 이런게있으면 편하겠다 하는 것들은 바로바로 간단하게 구현해서 프로그램을 만드는 재미에 빠져있다.. 개발자로 일하면서 elephant-dev.tistory.com 1편에 이어서 본격적으로 알림봇 프로그램을 만들어보도록 하겠습니다. - SVN 커맨드 프로그램 설치 우선 SVN의 경우 command를 사용할 수 있도록 설치를 해주어야하는데요, https://tortoisesvn.net/downloads.html Downloads · TortoiseSVN download TortoiseSVN ..

Programming/Python 2022.11.16

[Python] SVN 커밋 시 라인(LINE)으로 메세지 받는 알림봇 만들기 - 1편

요즘은 불편한 부분은 자동화 하는 것에 빠져서.. 업무를 하다가 엇! 이런게있으면 편하겠다 하는 것들은 바로바로 간단하게 구현해서 프로그램을 만드는 재미에 빠져있다.. 개발자로 일하면서 사용하는 형상관리 툴이 SVN인데, 팀원들이 커밋할 때 마다 알림을 받으면 좋겠다는 생각을 했고 구글 서치를 하다가 SVN도 command로 커밋 내역을 조회할 수 있다는 사실을 발견!!! 개발 일을 하면서 이것저것 하다보니 'command로 리스트를 받아올 수 있다 == 쉽게 구현 가능' 이 되어버린.. 아무튼!!! 팀원들이랑 소스코드를 머지하고 업무내용을 공유하고 싶은데, 우리회사에는 업무시스템을 처리하는 툴이 없어서ㅠㅠ (메일 또는 메신저로 공유할 수 밖에 없는 상황..) 수기로 보고하는 일을 줄이고, 팀원들과 조금..

Programming/Python 2022.11.16

[Window] eclipse 설치와 설정

eclipse 설치에 앞서 Java 설치가 필요하므로, Java 설치가 완료되지 않으신 분들은 하단 링크로 들어가 Java 설치를 먼저 완료해 주셔야합니다. https://elephant-dev.tistory.com/17 [Window] Java 1.8 설치와 환경 변수 설정 자바 프로젝트 실행에 앞서 Java환경을 구축해보려고합니다. 1. Java 설치 우선 Java 1.8 버전을 설치합니다. 아래 링크에 접속하여 원하는 OS의 파일의 설치하면 됩니다. https://www.oracle.com/java/technolog. elephant-dev.tistory.com 1.eclipse 다운로드 https://www.eclipse.org/downloads/ Eclipse Downloads | The Ecl..

Programming/Java 2022.10.24

[Window] Java 1.8 설치와 환경 변수 설정

자바 프로젝트 실행에 앞서 Java환경을 구축해보려고합니다. 1. Java 설치 우선 Java 1.8 버전을 설치합니다. 아래 링크에 접속하여 원하는 OS의 파일의 설치하면 됩니다. https://www.oracle.com/java/technologies/downloads/#java8 Download the Latest Java LTS Free Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts. www.oracle.com 저는 윈도우 환경에서 설치를 진행하기 때문에 위와 같은 경로의 파일을 설치하였습니다. 설치를 하기 위해서는 Oracle의 계정이 필..

Programming/Java 2022.10.24

[Mac OS] VScode Go lang 개발환경 구성하기

인터프리터 언어의 장점과 객체지향 언어의 장점을 합친 언어라는 점에서 go lang에 매력을 느껴 개발자로서의 역량을 키워보고자 go lang 스터디를 시작하며 기록합니다. - OS : Mac os - Editor : VScode 1. Go Lang 설치 https://go.dev/dl/ Downloads - The Go Programming Language Downloads After downloading a binary release suitable for your system, please follow the installation instructions. If you are building from source, follow the source installation instructions. Se..

Programming/Go lang 2022.10.22
728x90
LIST