n+1 문제 해결

lazy로 연결했을 때 영속성이 연결될 때 select를 무조건 실행하다보니 발생한 문제 해결방법 eager로 만든다 문제점: 불필요한 join을 계속해야한다 jpql에서 join fetch를 사용한다 EntityGraph 사용 MultipleBagFetchException 이발생 객체를 list -> set으로 변경

2023년 2월 21일
·
0개의 댓글
·

spring entity annotation

@Entity JPA에서 엔티티 클래스임을 나타내기 위해 사용되는 어노테이션입니다. 해당 클래스를 데이터베이스의 테이블과 매핑하기 위해서는 반드시 @Entity 어노테이션을 추가해야 합니다. @Table 엔티티 클래스와 매핑되는 데이터베이스 테이블을 지정하기 위해 사용되는 어노테이션입니다. name 속성을 이용하여 테이블 이름을 지정할 수 있으며, catalog, schema, uniqueConstraints 등 다양한 속성을 설정할 수 있습니다. @Column 엔티티 클래스의 필드와 데이터베이스 테이블의 컬럼을 매핑하기 위해 사용되는 어노테이션입니다. name, nullable, unique, length, precision 등 다양한 속성을 설정할 수 있습니다. @Id 엔티티 클래스의 필드 중 데이터베이스 테이블의 기본 키 역할을 수행하는 필드임을 나타내기 위해 사용되는 어노테이션입니다. 하나의 엔티티 클래스에서는 반드시 하나의 @Id 어노테이션을 가

2023년 2월 19일
·
0개의 댓글
·

JPA delete관련 에러

post(one) - reply(many)의 관계에서 post를 삭제하려고 하면 영속성 문전이 문제로 reply가 삭제되지 못하고 rollback이 발생하는 문제가 발생했다. 해결방법을 찾아본 결과 cascase(영속성 전이)옵션을 CascadeType.ALL, CascadeType.REMOVE로 설정해주면 된다. 위의 방법으로 하다보니 다른 문제가 있었는데 주인객체들은 삭제하지 않고 싶었다. 영속성 관리에 따르면 댓글쪽에서 먼저 포스트를 null처리 해주면 관계가 끊어지면서 해결자체는 되었다. 더 찾아본 결과 @EntityListeners중 라는 엔티티 생명주기에 따라 처리하는 과정이 존재함을 알게 되었고 @PreRemove를 사용하여 post가 삭제되기 전에 post에 연결된 replies에서 포스트와 관계를 끊어주는 처리를 하였다.

2023년 2월 12일
·
0개의 댓글
·
post-thumbnail

database 한글 문제

게시글을 등록하는 api를 테스트하는데 좀전까지 되던게 되지 않아서 로그를 보니 post.post.content이런 애러가 뜨길래 처음에는 user를 같이 등록하면서 순환참조가 걸리는 건가 싶었다. > Error: 1366-22007: Incorrect string value: '\xEA\xB2\x8C\xEC\x8B\x9C...' for column post.post.title > could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement 그런데 이유는 다른게 아니라 데이터베이스의 인코딩설정.... aws에서 rds로 mariadb를 이용하여 구성했기에 파라미터 그룹을 수정하려 했다. 그런데 뜨는 거는.... ![](https://velog.velcdn.com/images/kikidy12/p

2023년 2월 11일
·
0개의 댓글
·

Spring security

Spring Security는 보안/인증 등을 간편하게 구현하도록 도와주는 프레임워크입니다. Spring Boot + JWT + Security 구성 1. gralde 추가 2. jwt 구성 TokenProvider 생성 토큰 생성및 검증 JwtFilter 생성 GenericFilterBean, OncePerRequestFilter redirect를 몇번을 시키냐에 따라 여러번 인증처리 또는 불필요한 처리를 반복하게 된다. 이런 문제를 해결하기 위해 OncePerRequestFilter 라는 것이 나왔다. Dofilter는 토큰의 인증정보를 SecurityContext 안에 저장하는 역할 수행 3. SecurityConfig WebSecurityCustomizer SecurityFilterChain antMatchers, mvcMatchers 차이점 화이트 리스트 블랙 리스트 참

2023년 2월 10일
·
0개의 댓글
·

mysql JDBC

com.mysql:mysql-connector-java gradel 설치 불가 com.mysql:mysql-connector-j로 설치하니 가능

2023년 2월 10일
·
0개의 댓글
·

message queue

kafka

2023년 2월 9일
·
0개의 댓글
·

spring batch

2023년 2월 9일
·
0개의 댓글
·

페이징 처리

import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort;

2023년 2월 8일
·
0개의 댓글
·

dot null처리

org.apache.commons.lang3.ObjectUtils

2023년 2월 8일
·
0개의 댓글
·

hibernate

2023년 2월 8일
·
0개의 댓글
·

영속성 컨텍스트

2023년 2월 8일
·
0개의 댓글
·

spring data JPA

2023년 2월 8일
·
0개의 댓글
·

lombok

2023년 2월 8일
·
0개의 댓글
·

springDocs

2023년 2월 8일
·
0개의 댓글
·

연관관계 매핑

연관관계 일대일, 일대다, 다대다의 연관관계 양방향 연관관계에서는 주인을 지정해줘야하고 주인을 지정할때는 mappedBy로 주인이 누구인지 지정해준다. @OneToOne, @OneToMany, @ManyToOne, @ManyToMany

2023년 2월 8일
·
0개의 댓글
·

[Spring] reqest Duo

API 서버를 개발할 때 Request를 받아올 DTO를 생성해서 사용 Entity(Member) ` 1. @RequestBody에 값 그대로 받기 java @PostMapping("/members/new") @ResponseBody public String create(@RequestBody String name, @RequestBody String phone) { memberService.join(member); return "등록성공"; } java @PostMapping("/members/new") @ResponseBody public String create(@RequestBody @Valid Member member) { memberService.join(member); return "등록성공"; } java @Getter public class AddMemberDto { private String name; private Str

2023년 2월 4일
·
0개의 댓글
·