본문 바로가기

프로그래밍27

[Java] ArrayList안에 HashMap 저장 특정 데이터를 ArrayList안에 HashMap 저장하려고 한다. data: { categories: [ 0:{ "ko_name": "책", "code": "book" }, 1:{ "ko_name": "슬픔", "code": "sadness" } ] } 데이터를 이런식으로 뽑아줘야 하는 경우가 있다고 쳐보자. ArrayList안에 hash맵이 들어가는 데이터 형식을 선언하고 이를 ko_name따로, code 따로 분리해서 저장하려 했다. (이후 이를 categories라는 Dto에 매핑해준다.) public static final ArrayList categoryCodeResponse= new ArrayList(); @PostConstruct public static void categoryMap(){.. 2023. 3. 25.
[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.
[WIL] 조회수 기능 개발 1 sns를 사이드 프로젝트로 개발하고 있는데 조회수 기능을 개발할 일이 생겼다. 사실 조회수를 어떻게 측정하느냐도 중요한데 추후 변경될 수도 있으나 현재 기획은 이렇다. 사용자가 웹피드(타임라인)을 조회했을때 조회되는 게시글들은 전부 조회수+1 특정 게시글 상세보기를 한다면 조회수+1 현재 Post(게시글) 테이블이 이렇게 되어있다고 할때 조회수 테이블을 어떻게 생성하는게 좋을까 생각해보았다. 첫번째는 POST 테이블에 VIEW_COUNT 컬럼을 추가하는 것이고 두번째는 VIEW라는 테이블을 따로 생성해 POST_ID를 FK이면서 동시에 PK로 놓는것이다. 사실 처음엔 SNS라는 도메인 특성상 POST테이블은 게시글 CURD외에도 여러가지 이벤트가 일어날텐데 조회수 추가라는 이벤트까지 추가해 특정 테이블에.. 2023. 2. 4.
빠르게 사용 가능한 Mock Server(모의서버) 백엔드 API가 완성되기전까지 프론트에선 통신이 잘되는지 확인하기 위해 가짜 API를 준비해야할 경우가 있다 이때 대체로 1. Postman의 MockServer나 2. 파이어베이스 이 두가지 방식을 사용하는데 사내 프록시서버때문에 막힌다던가 개인의 PC문제로 두가지 방법을 사용하지 못할때의 대처방법이 있다. 위 두 방법이 막힐때 IDE 확장프로그램중에 목서버를 빠르게 설치해주고 사용가능한 확장프로그램이 있으리라 생각했는데 역시나 있었다. 참고로 중국개발자분이 만드신것같다. 준비물: vsCode 사용법은 간단하다 Install > F1 > EasyMock Start하면 바로 목서버페이지를 켜준다 켜면 이렇게 메인이 되는 페이지가 나온다. mock이라는 폴더와 함께 목서버 파일이 생성된다. api주소도 추.. 2021. 11. 29.