Spring Boot
-
[SPRING] bulk delete 벌크딜리트 하기Spring Boot 2023. 2. 22. 00:23
커뮤니티 프로젝트를 하면서 게시글/댓글/좋아요까지 연관되어있는 테이블을 쿼리최적화 하면서 삭제하는 방법을 찾고 있었다. 우선 댓글과 연관되어있는 좋아요를 삭제 해줄것이다. 게시글 ID로 모든 댓글을 불러온다. List comments = commentRepository.findAllByCommunityBoardId(boardId); 여기서 일단 쿼리가 한번 쓰였다. 다음은 이 댓글에 있는 좋아요를 다 지워줘야 하는데... for (CommunityComment comment : comments) { likeCommentRepository.deleteAllByComment(comment); } 이렇게 했다가는 엄청난 쿼리가 나가는 것을 볼 수 있다.... 스프링데이터 JPA의 'In'이라는 것을 써보는 건..
-
[QUERYDSL] querydsl 전용 메서드/라이브러리 정리Spring Boot 2023. 2. 18. 21:10
com.querydsl.core.types.Projections querydsl에서의 Projections를 활용하면 더 편하게 사용할 수 있다. 다만, JPA가 dto를 만들어줄 때 기본생성자가 필요해서 MemberDto에 @NoArgsConstructor를 추가한다. Projections.constructor 조회를 원하는 필드를 포함한 생성자가 반드시 있어야 한다. 그리고 dto에서 생성자의 파라미터들의 타입과 순서가 select 절에서의 타입과 순서와 일치해야한다. 또한 compile 전에 에러를 잡아주지 못한다는 단점이 있다. Projections.fields Projections.fields 방식은 dto에서 정의한 필드의 이름과 select절에서의 각 필드명이 일치해야 한다. 만약 일치할 수..
-
[DOCKER] Docker에 MySQL 적용부터 WorkBench 연결까지!Spring Boot 2023. 2. 14. 21:32
https://oingdaddy.tistory.com/299 1. 도커 설치 https://www.docker.com/products/docker-desktop/ 2. MySql 워크벤치 설치 https://dev.mysql.com/downloads/workbench/ 도커에 이미지 생성 docker pull mysql:버전숫자 (현재 플젝 기준 👉 docker pull mysql:8.0.32) 도커에 생성된 이미지 확인 docker images 도커 컨테이너 생성 및 실행 docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=비밀번호 --name 마이에스큐엘서버이름 mysql:버전숫자 --character-set-server=utf8mb4 --collation-ser..
-
[SPRING] 강한결합, 느슨한 결합?Spring Boot 2023. 2. 12. 13:04
스프링데이터 JPA 레포지토리에 메서드를 추가해주다가 에러가 발생했다. User_Id로 조회해올 수가 없는 것이다. 이유가 무엇일까 생각해보았다. User NoticeBoard 테이블의 연관관계는 현재 NoticeBoard쪽에서만 @ManyToOne으로 단방향이다. NoticeBoard는 User 필드를 가지고 있는데, @JoinColumn(name="user_id")를 선언해주면 mapped 어쩌구 에러를 일으켜서 해주지 않았다. 아마도 User 엔티티에서도 @OneToMany를 걸어주었을 때만 쓰는 것 같은데, 이걸 안했으니 그런 것 같다. 근데 Repository에서 findBy---User_Id를 쓰려면 @JoinColumn(name="user_id")를 해줘야 하는 것 같다. 즉, 양방향 연관관..
-
[SPRING] Redis를 사용해보장Spring Boot 2023. 2. 9. 20:39
캐시를 사용하기 좋은 데이터 1. 변경될 일이 없는 데이터베이스 조회값 2. 자주 호출되는 데이터 스프링부트에서 사용되는 캐시는 대부분 JSR-107을 따름. Redis가 범용적으로 사용됨. Remote Dictionary Server의 약자로, '키-값' 구조의 데이터를 저장하고 관리하기 위한 '오픈 소스' 기반의 비관계형 데이터 관리 시스템. 레디스의 특징 1. 메모리를 사용(인메모리), 데이터베이스와는 다른 방식. 코어에 가깝기 때문에 속도가 빠름. 2. 견고하다. 어떤 데이터가 내 스트럭쳐 안에 들어오면 무조건 데이터의 특징들을 잘 보존해준다. 3. 확장성. 커스텀 익스텐션을 많이 제공하며 API가 많다. 접근성이 용이하다는 뜻. 4. 레디스 서버를 여러개 두고 동기화 처리를 할 수 있다. 5. ..
-
[SPRING] application.yml 에 들어갈 설정Spring Boot 2023. 1. 31. 21:32
spring: h2: console: enabled: true datasource: # url: jdbc:h2:mem:db;MODE=MYSQL; url: jdbc:h2:tcp://localhost/~/test username: sa password: jpa: properties: hibernate: # show_sql: true # Hibernate가 DB에 수행하는 모든 쿼리문을 콘솔에 출력함. 겹치기 때문에 굳이 안넣어도 될듯 format_sql: true # 로그, 콘솔의 SQL을 좀 더 이쁘게 출력함. use_sql_comments: true # /* JQPL문 */