본문 바로가기

프로그래밍/Java9

[Spring] queryDsl 사용시 group_concat 적용하기 컬럼 데이터를 합쳐서 결과값을 보여줘야할 때 쓰는 SQL함수로는 group_concat과 string_agg가 있다. JPA(queryDsl) 환경에서 어떻게 해당 기능을 쓰는 방법이다. 사실 쿼리는 간단하게 날리고 데이터 전처리는 어플리케이션 단에서 해줘야한다고하지만 당장 어떻게 짜야할지 생각이 안나니 group_concat으로 데이터를 배열 형식으로 받아줬다. 해당 쿼리를 select p.post_id, u.nickname,count(distinct (c.comment_id)) as commentCount ,count(distinct(p2.pick_id)) as likeCount, group_concat(distinct (h.hashtag_name)) as hashtags from post p joi.. 2023. 2. 14.
[Java] Optional 사용법 자바에서 없는 값(*아무것도 할당되지 않은)을 조회하려고하면 바로 NullPointerException가 발생하며 오류를 뱉곤합니다. 그런 값이 존재하는지 매번 검사해주기 힘든데 이를 위해 존재하는 것이 Optional입니다. 참조하더라도 에러가 발생하지 않도록 해당 값을 감싸는 Wrapper 클래스다. 1. 해당 값이 있는지 조회하는 로직 - 객체 단위로 optional로 받아주면 get으로 객체를 return할 수 있다 Optional existReference = referenceRepository.findByTitle(title); if(existReference.isPresent()){ return existReference.get(); } 2. 해당 값이 절대로 null이 아닌 경우 - 해당 .. 2023. 2. 8.
[Spring] 양방향 Entity 저장 시 save 한번만 하도록 수정 현재 게시글 엔티티의 경우 이렇게 되어있다. Post 객체에서 해시태그를 가지고 있는 셈이다. public class Post extends BaseTimeEntity { @Id @GeneratedValue @Column(name="POST_ID") private Long postId; ... private String title; @Column(name="CONTENT") @Lob private String content; @Fetch(FetchMode.SUBSELECT) @OneToMany(mappedBy = "post", cascade = CascadeType.ALL) private List hashtags = new ArrayList(); @Fetch(FetchMode.SUBSELECT) @One.. 2023. 2. 4.