본문 바로가기
반응형

Library & Framework/JPA3

@Converter 사용해서 DB값 변환하기 엔티티의 속성 중에 boolean 타입을 사용하는 속성은 DB에 저장 시에는 DBMS마다 상이한 경우도 있지만 0 혹은 1로 저장되는 경우가 많다. 이는 의미를 불명확하게 하여 보는 사람이 손쉽게 파악하기 어렵다는 단점이 있다. 그리하여 DB에 저장할때는 Y / N으로 변환하여 저장해 주면 파악하기 좋아진다는 장점이 있다. 이 경우 뿐만아니라 DB에서 불러올 때 저장할 때 암호화/복호화하는 경우에도 사용 가능하기도 하다. 저장할 때 직접 변환해서 저장하고, 조회할 때 변환해서 가져오는 로직을 추가하여 사용할 수 있지만 그보다는 엔티티의 속성 자체에 Converter를 넣어주어 자동으로 변환되도록 하면 유지보수는 물론 보기에도 좋은 코드가 된다. 간단하게 말하면 객체의 속성과 DB의 컬럼 데이터를 매핑할 .. 2023. 9. 6.
[JPA] 생성일, 수정일 자동 기입 기능 추가하기 (AuditingEntityListener) 게시글과 같은 기능을 구현하다 보면 생성일, 수정일을 관리해야 하는 경우가 흔하게 발생한다. 이럴 때 서비스로직에 직접 생성, 수정 시에 해당 날짜를 생성일, 수정일 컬럼에 직접 update 하는 방식으로 구현할 수 있다. 하지만 이렇게 되면 사람이 코드를 작성하다 보니 까먹고 추가를 안 하는 경우가 생겨 정상적으로 동작하지 않는 컬럼이 될 수 있다. 이러한 부분을 해결하기 위해서 엔티티에 리스너를 추가하여 엔티티를 조작할 때 추가적인 로직을 설정할 수 있다. 바로 AuditingEntityListener를 이용하는 것이다. EntityListener EntityListener는 엔티티에 이벤트가 발생하는 것을 감지하여 동작하는 로직을 구현할 수 있도록 해준다. JPA는 7가지의 이벤트를 감지할 수 있다.. 2023. 7. 9.
[JPA] 페이징 처리, Paging (Pagination, Infinite Scroll) 페이징 처리 페이지네이션? 무한 스크롤? 페이징 처리는 한 번에 모든 데이터를 가져오면 많은 시간이 걸리기 때문에 단위를 나눠서 데이터를 가져올 수 있도록 단편화시키는 것을 의미한다. 구글만 보더라도 아래와 같이 페이지네이션을 처리해 두었다. 위와 같이 페이지를 나누어 사용자가 골라 접근할 수 있도록 만든 것을 페이지네이션이라고 부른다. 웹페이지를 이용할 때 흔하게 볼 수 있는 모습이다. 반면 요즘에는 SNS 같은 곳을 보면 이러한 숫자방식의 페이지네이션이 아닌 스크롤을 모두 내리면 추가적인 콘텐츠를 불러오는 방식의 무한 스크롤(infinite scroll) 방식도 많이 사용한다. 하지만 이러한 방식의 차이는 어떻게 보여주냐의 차이일 뿐 내부적인 로직은 거의 흡사하다. 기본적인 동작 원리는 조회할 때 얼.. 2023. 6. 21.
반응형