전체 446

[JAVA] Long에 대하여

Spring boot로 프로젝트를 하다보니, 정수형 변수로 Long을 자주 사용하게 되었습니다. 그러다 for loop에서 보통 int를 사용하다가 long을 사용하게 되었는데, long형을 사용했을 때 발생하는 문제가 없나?라는 고민을 시작으로 몇가지 알아본 사실을 적어보려 합니다. Long과 long의 관계 long은 JAVA의 원시타입인 변수타입이고, Long은 long을 다루는 객체를 의미합니다. 이처럼 원시타입을 객체로 다루기위해 사용하는 클래스를 Wrapper 클래스라고 합니다. 원시타입을 Wrapper 클래스인 참조타입으로 만드는 것을 boxing, 그 반대를 unboxing이라고 합니다. 원시타입과 참조타입인 객체는 확연하게 분리되어야하는데, 제가 생각하는 것보다 두 경계가 크지 않았습니다..

CS/언어 2022.01.12

[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

[JAVA] 자바의 다중상속

두 객체를 합친 객체를 정의하고싶다 JAVA로 개발을 하면서 데이터 중복과 사용하는 멤버의 범위 제한 등을 위해서 객체의 상속을 사용하게됩니다. 저는 이번에 데이터 중복을 줄이기 위해 상속을 사용하고 싶었습니다. A라는 객체와 B라는 객체의 멤버가 합쳐진 C 객체, 정확히 말하면 DAO A와 B가 있고 두 Entity가 join된 DAO인 C를 정의해야했습니다. 만약 다중상속이 된다면, 저는 A와 B를 모두 C가 상속하여 멤버변수를 다시 정의할 필요없이 관련 메서드만 작성하면 간단하게 C를 정의할 수 있습니다. 멤버가 많을수록 C를 정의하기 편하기도 하고, 중복된 이름의 변수가 줄어들기 때문에 더 선호하는 방식일 수 있습니다. 다중 상속을 지원하지 않는 이유 C++은 다중 상속이 지원되는 것으로 알고있습..

CS/언어 2022.01.11

[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

[Spring] CrudRepository를 이용한 table join

지금까지 Spring boot에서 CrudRepository를 사용할 때 다음과 같은 루틴으로 사용하였습니다. DB Table과 일치하는 DAO를 만든다. 해당 객체가 사용되는 CrudRepository Interface를 작성한다. 그런데 join된 Table에 대한 정보를 읽어와야하는 일이 생겼습니다. 스택오버플로우에서 아래와 같은 글을 발견하여 정리해봅니다. https://stackoverflow.com/questions/43891571/crudrepository-join-single-field-from-other-table-to-entity-as-readonly Crudrepository / Join single field from other table to entity as readonly Be..

[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

[JAVA] POJO(Plain Old Java Object)

아직 자세히 알아보지 않은 상태이며, 추후 업데이트가 필요합니다 POJO POJO란 특정 기술에 의존이 없는 순수 자바 객체를 의미한다고 합니다. JAVA의 장점 중 하나인 재사용성을 이용해 보통 implements나 extends로 구현된 객체에 의존된 형태로 편하게 사용할 때가 많습니다. 그러나 이러한 방식은 프레임워크에 대한 의존성이 높아 가독성과 확장성에 문제가 될 수 있습니다. POJO와 의존성 그럼에도 Spring PSA(Portable Service Abstraction)에 의해 Spring은 객체를 의존성이 있는 형태로 구현하면서도 POJO를 지킬 수 있다고 합니다. 예를 들어, Spring은 ORM의 JPA 표준 인터페이스를 정의하여 Hibernate와 같은 ORM 프레임워크가 해당 인터..

CS/언어 2022.01.06