목록DB (4)
코딩
crew를 만들기 위해 신청서를 보낼 때, 최대인원이 5명이고 현재원이 1명인 방에 여러명을 동시에 승낙받았을 경우, 4명만 들어와야하는데 요청한 7명이 다 들어왔다. 동시성을 해결하기 위한 방법에는 여러가지가 있지만 이 경우 트래픽의 수가 낮고 대용량 데이터가 오고가지 않으므로 데이터베이스에서 동시성을 해결해보도록 했다. crewID = 8 해결 비관적 Lock Write 옵션을 사용하여 해당 크루 데이터에 Lock을 걸어 다른 트랜잭션이 해당 크루를 select하지 못하게 처리함. 테스트 코드 @Autowired CrewService crewService; @Test @DisplayName("크루 참가 동시성 테스트 -> Service 직접 호출") void crewServiceTest() throw..
JPA에서 nativeQuery로 DTOclass를 매핑해주려니, 매핑이 안되는 오류가 발생했다. 이를 해결하기 위해서 DTOclass를 interface로 바꾸어 주었다. PloggingRepository.java PloggingInterface.java 주의 사항 SELECT절에 ALIAS로 interface와 똑같은 이름으로 맞춰주어야 한다. 만약 snake형식이 아닌 한단어로 이루어진 칼럼이라면 자동으로 mapping이 가능하다. ➡️ PloggingInterface.getPloggingId() = ploggingID의 값
프로젝트에서 사용자들의 발자취를 따라 위도와 경도를 계산하여 반경 5km 이내에 있는 다른 사용자들의 발자취를 보여줘야 했다. 이 과정에서 위도와 경도를 DB에서 어떻게 표현해야 성능이 빨라질까? 에 대한 고민을 했고 최종적으로 2가지의 후보가 나왔다. 1. 위도 경도 Column을 varchar로 두개를 따로 만들어서 반경 계산하기 2. 위도 경도를 Point ColumncolumnDefinition = "POINT SRID 4326"으로 만들어 반경 계산하기 1. 위도와 경도를 Cloumn으로 각각 만들어서 반경 계산하기(하버사인 공식 이용) SELECT p.plogging_id as ploggingId ,p.start_lat as startLat, p.start_lng as startLng, (63..
공공데이터에서 SAXParser를 이용해서 데이터를 가져오는데, 이름이 온전하지 않은 데이터가 특별한 규칙 없이 발견되었다. 분명 같은 데이터가 공공데이터에서 조회 했을 땐, 잘 돌아갔는데 약 3시간동안 찾아낸 결과.. 원인은 바로 SAX parser에서 It is not guaranteed that the characters() method will run only once inside an element. If you are storing the content in a String, and the characters() method happens to run twice, you will only get the content from the second run. The second time that t..