0130 일지

Yesol Lee·2023년 1월 30일
0

개발일지 - 2023

목록 보기
17/32

프로젝트

  • 결국 오픈일이 일주일 더 미뤄졌다.

간단한 수정사항 반영

  • 글자 변경 등 화면의 단순한 변경사항 다수 수정하여 커밋함
  • 특정 게시판의 카테고리 값 변경 및 순서 변경해달라는 요청이 있었는데, 카테고리목록을 DB에서 조회해와서 뿌리는 부분이라 코드가 아닌 쿼리를 건드려야 했다. 해당 부분을 찾아보니 사용자, 관리자 각각 카테고리 가져오는 쿼리가 달라서 관리자에서 사용하는 카테고리 조회 쿼리 조건을 사용자와 동일하게 변경해주었다.

SMS/MMS 관련

MMS 발송 시 nullPointer 에러 해결

  • MMS 발송 시 파일 정보를 조회해서 저장하는 로직을 추가했었는데, 파일이 없는 경우 null 예외처리를 빠뜨려서 생긴 에러였다.
  • 파일 id를 가져와서 파일 객체를 조회하고, 해당 객체가 파일인지 다시 한번 더 확인한 후 파일을 다루도록 로직을 수정하였다.
  • 첨부파일 등 필수입력정보가 아닌 것을 다룰 때는 항상 null이 될 가능성을 염두에 두고 코딩해야된다.

(에러) 파일 전송 불가

  • 위 MMS 관련 코드를 고쳐서 짧은 문자메시지와 텍스트가 긴 문자메시지는 전송이 되는데, 파일 관련 데이터를 추가하면 여전히 에러코드가 뜨며 발송이 되지 않는다.
  • 파일 정보는 대부분 고정값이고, 파일의 절대경로를 넣어주는 부분이 가장 중요한데, 이 부분에서 문제가 나는 것 같다. 그런데 왜 나는지 이유를 잘 모르겠다.
  • 브라우저 url에 파일 경로를 쳤을 때 파일에 잘 접근되는 것으로 봐서 파일 접근 문제는 아닌 것 같다. 내일 업체에 직접 전화해봐야될듯.

추가 컬럼 별도 테이블로 분리

현재 문자전송 모듈은 A테이블로 들어온 요청을 처리한 후 B 테이블로 데이터를 이전해주는데, A, B테이블에 추가한 컬럼을 insert하지 않는 것을 발견했다. 추가한 컬럼 중 not null 속성인 컬럼이 있었는데, 해당 값을 넣지 않으니 에러가 났던 것이다.
알고보니 B테이블에 추가하는 로직은 직접 변경이 불가능해서 추가정보들은 별도 테이블에 저장한 후 B테이블과 조인해서 조회해야 했다.
이제와서 DB 테이블 및 sql 쿼리를 바꿔야 해서 처음엔 살짝 막막했지만, 계획을 먼저 짜고 순서대로 하나씩 해보니 생각보다 빨리 수정할 수 있었다.

1. 기존 B테이블에서 임의로 추가된 컬럼들 삭제

How to drop column using ALTER TABLE in Oracle?

ALTER TABLE table_name 
DROP (column_name1, column_name2,);

2. 추가정보 컬럼들 별도 테이블로 생성

create table 쿼리 안에 A테이블의 추가정보를 select하는 쿼리를 넣어 select에서 create를 하도록 만들었다.
[Oracle] 오라클 SELECT 해서 INSERT 하는 방법 (여러개, 서브쿼리)

3. B테이블과 별도테이블 C 조인해서 조회하는 select쿼리로 대체

기존에 B테이블에서만 조회하던 것을 C테이블을 조인해오는 로직으로 변경하였다.
부가정보인 C테이블 내용이 없을 경우를 대비해 LEFT OUTER JOIN을 활용하였다.

4. java에 추가정보를 C테이블에 insert하는 로직 추가

A테이블에 데이터를 넣으면서 해당 테이블의 key로 A테이블에서 레코드를 조회해서 insert하는 로직을 추가하였다. (insert from select)

5. 테스트

  • sms, mms 발송 테스트 : A테이블, 추가테이블에 데이터가 잘 들어가는지
  • 이력조회 테스트 : B테이블과 추가테이블이 잘 join 되어서 데이터가 조회되는지
profile
문서화를 좋아하는 개발자

0개의 댓글