정리하기 35

[Daily Report] 22.01.21 - Column 'cat_id' cannot be null 이슈 해결

Memo Column ‘cat_id’ cannot be null 이슈 해결과정 l [가정1] save 메서드의 return에 cat_id가 실려오지 않음 - 확인해보니 save의 return에 cat_id가 존재 l [가정2] schema의 불일치 - cat_id가 java의 entity 객체에서 Long, shecma에서 BIGINT로 정의 - 그러나 JPA DB 자료형 맵핑 확인시 Long과 BIGINT가 매핑됨 l cat_id가 TistoryCategory의 cat_id가 아닌 @OneToOne Category의 cat_id - Category를 채워 해결 완료 Cat_parent 수정 필요 l cat_parent 값이 tistory_cat_id - cat_id로 변경 필요 l cat_parent와..

정리하기/DR 2022.01.21

[Daily Report] 22.01.20 - updatePost 작성 및 오류 원인 확인중

Memo 테이블에서 key를 자동 생성할 경우 l 현상 - @GeneratedValue(strategy= GenerationType.AUTO)를 사용 - 다음 에러 발생 … could not read a hi value … l 원인 - Hibernate 자체적으로 사용하는 hibernate_sequence 테이블이 없을 때 발생 - spring.jpa.hibernate.ddl-auto=update를 삭제했더니 table이 생성되지 않는듯 l 해결 - @GeneratedValue(strategy= GenerationType.IDENTITY)로 변경 - 해당 컬럼을 AUTO_INCREMENT로 설정 CrudRepository.save()에서 null이 아닌 값을 null로 판단 l 현상 - CrudRepos..

정리하기/DR 2022.01.20

[Daily Report] 22.01.19 - createPost, deletePost 작성

Memo Done l create/delete Post 추가 l updatePost - PostId-TistoryPostId table 필요 Todo l postId-TistoryPostId table - Category와 같이 mapper에 작성 l mapping table을 Vector로 변경 - 동기화 문제로 vector로 변경 필요 New List vs ArrayList l List는 인터페이스, ArrayList는 List를 구현 l List list = new ArrayList(); 로 사용을 권장 - List의 하위클래스(LinkedList 등)으로 사용 가능 Vector vs ArrayList l Vector는 동기화되어 쓰레드 하나씩만 접근 가능 - ArrayList는 동기화되지 않아 여..

정리하기/DR 2022.01.19

[Daily Report] 22.01.18 - updateCat 구현 및 Post부분 구현중

Memo Done l updateCat - catUpdateList로 update 가능하여 따로 API를 재호출하지 않음 - throws 추가 Todo l createPost - 새로 생성된 category로 인한 catMapTable 업데이트 필요 New Throws Exception or try-catch-finally l catch문에서 유의미한 처리를 할 수 있는 경우만 try-catch 사용 - input parameter로 인한 오류의 경우 throws Exception 사용 Things to know

정리하기/DR 2022.01.18

[Daily Report] 22.01.14 - Category 동기화를 위한 메서드 구현 (진행중)

Memo TistorySyncExecuter l creteCat 작업 메모 - Tistory API로 데이터 받아오기 - Category/TistoryCategory에 파싱 - Category/TistoryCategory에 save - (필요)TistoryXMLParser에서 insert를 위한 전체 데이터 파싱 구현 - (필요)Category/Post Repository 생성 ToDo l createCat에서 DB에 save - transaction을 고려한 메서드 만들기 - 특정 loop만큼 saveAll New l ArrayList에서 Object member가 특정값을 갖는 Object 찾기 - list.stream().filter.filter( obj -> value.equals(obj.getM..

정리하기/DR 2022.01.14

[Daily Report] 22.01.13 - TistoryCategory 비교 메서드 구현

Memo DB Sync 처리 순서 l 정렬된 DB/Blog list 순차 비교 l Category를 DB에 추가 (tistoryCatId) - DB List가 end of list - DB의 id가 더 큰 경우 l Post를 DB에 추가 (tistoryPostId) - DB List가 end of list - DB의 id가 더 큰 경우 l Post를 DB에 변경 - tistoryPostDate가 다른 post 변경 (postTItle + postContent + postTags) - tistoryPostVisible이 다른 post 변경 l Post를 DB에 삭제 - Blog List가 end of list - Blog의 id가 더 큰 경우 l Category를 DB에 변경 - catName이 다른 ca..

정리하기/DR 2022.01.13

[Daily Report] 22.01.12 - DB Sync를 위한 DB/Blog 데이터 불러오기 구현

Memo DB Sync에 필요한 내용 정리 l Category - tistory_cat_id (추가+제거) l Post - tistory_post_id (추가+제거) - postDate (제목+내용+태그) l DB 업데이트 순서 - 카테고리 추가 - Post 정보 최신화 (추가/업데이트/삭제) - 카테고리 업데이트 - 카테고리 삭제 Done l (추가) TistoryXMLPaser - xml로 받은 API string을 tag에 맞게 파싱 - Tistory XML tag 구조 관련 l (추가) TistoryAPIMapper - API 데이터와 매칭된 다른 데이터가 필요할 때 사용 - Tistory API 데이터의 매핑 데이터 관련 l TistoryAPI - API로 수신한 데이터를 String으로 반환 ..

정리하기/DR 2022.01.12

[Daily Report] 22.01.11 - DB Sync를 위한 DAO 작성

Memo DB Sync에 필요한 내용 정리 l Category - tistory_cat_id (추가+제거) l Post - tistory_post_id (추가+제거) - postDate (제목+내용+태그) Progress l 진행 순서 - Tistory~All에 constructor 추가 - Repository에 Sync용 메서드 추가 - API 데이터를 Tistory~All로 파싱 l 데이터 중복 고민 - Sync를 위한 데이터 구조는 ~All의 일부 - 1) ~All을 그대로 사용 : 멤버에 null 포함 - 2) 새로 정의 : 데이터 중복 - 3) 상속 : Sync를 All이 상속 (직관적 x) - 결론 : 3) 상속해보자 l Post Sync를 위한 데이터 구조 - API에서 t_post_id와 ..

정리하기/DR 2022.01.11

[Daily Report] 22.01.10 - DB Sync를 위한 데이터 정의 및 API/DB 데이터 읽기 구현

Memo Note l Sync를 위한 데이터 정의 - Sync는 일부 데이터로만 확인 가능하기 때문에 모든 데이터를 읽는 것은 비효율 - 예) 이미 동기화된 모든 Post의 데이터를 DB/API에서 읽어올 필요 없음 - 해법 : Query에서 조절 l XML parser에서 NodeList를 반환? - NodeList로 반환시 외부에서 NodeList를 다뤄야하는 단점 Done l TistoryAPI 구현 - API response를 String(XML) 및 NodeList로 반환하는 객체 구현 l Sync 및 Update를 위한 데이터 정의 - TistoryCategoryAll, TistoryPostAll - Table join을 위한 TistoryCategory 수정 l Join test - Crud..

정리하기/DR 2022.01.10

[Daily Report] 22.01.09 - XML parser 구현 및 TistoryAPI 객체 작성

Memo Changed l TistoryInfo의 primary key 변경 - tistory_blog_id마다 여러 블로그 개설이 가능하여 key로 사용 불가 - tistory_blog_name으로 key 변경 Progress l DB 업데이트 순서 - 신규 카테고리 생성 -> post 정보 업데이트 -> 삭제 카테고리 처리 - 이슈 시나리오 : 카테고리 A의 post -> 카테고리 B로 이동 (카테고리 A 삭제) - 업데이트 전 DB 상태 : 카테고리 B가 없음 / 카테고리 A가 있음 / post의 카테고리가 A로 설정됨 l Sync 확인을 위한 데이터 구조 - catId, catName, catParent, catEntries, postId, postDate, tistoryPostDate Postp..

정리하기/DR 2022.01.09