주의점 메모장

주의점 메모장

update와 같은것들은 왠만해서는 한가지 일만 해라

여기서 void가 아니라 Member를 반환하면 Update도 하고 Member도 반환하는 꼴이 되기 때문이다. 할 수있다면 분리하자

주의점 메모장

API 개발 시 Entity를 직접 끌어와서 값을 받지 말아라

DTO를 만들어 따로 받아서 만들어라 그렇게 안하면 Entity스팩이 바뀌어버리면 유지보수가 힘들어지며 머리가 아파져버린다. 만약 password를 api로는 password를 받는다고 하는데 갑자기 Entity의 스팩에서 password가 없어져 버리면 그때는 머리가 아파진다. 이런식으로 DTO로 받아내면 좋다. Entity가 바뀐다고 DTO가 바뀌는것이 아니기 때문이다.

주의점 메모장

Embeddable 만들 때 주의점

Embeddable과 같은 값타입은 기본 생성자를 public 또는 protected로 설정해야 한다 함 그리고 setter또한 막아두자 값타입은 불변이여야 함 JPA가 이런 제약을 두는 이유는 JPA구현 라이브러리가 객체를 생성할 때 리플랙션 같은 기술을 사용할 수 있도록 지원해야 하기 때문임 그리고 누가 마음대로 생성하지 못하게 하기 위해서

주의점 메모장

멀티 스레드 환경을 생각하며 데이터 중복체크하기

둘이 동시에 같은 이름으로 가입을 하는 경우가 있을 때 그것을 유니크 제약조건을 걸어서 보호를 해주자

주의점 메모장

ElementCollection 를 사용한 entity사용하면 조심할 것

@Getter @Entity @AllArgsConstructor @Builder public class Image { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "image_id") private Long id; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "article_id") private Article article; //게시글 아이디 @ElementCollection private List imageFiles; protected Image(){} } @Getter @Entity @Builder @AllArgsConstructor public class Artic..

주의점 메모장

벌크 연산 주의

Member의 나이에 0을 입력한 후 저장을 했다고 하자 그 후 createQuery("update Member m set m.age = 20", Member.class).executeUpdate(); 를 한 후 초기화를 하지 않고 find로 Member를 찾아 age를 출력하면 0이 나온다. 그 이유는 사진에서 설명을 하듯이 영속성 컨텍스트에는 영향을 주지 않기 때문이다. 우리가 무언가를 찾을 때 순서를 생각해 보면 금방 알것이다. find -> 영속성 -> db 이 순서이다

키스샷1104
'주의점 메모장' 카테고리의 글 목록 (2 Page)