ORM

Java

Dirty Checking 원리 완벽 정리 (JPA 자동 UPDATE 쉽게 설명)

JPA 공부하다 보면 거의 반드시 듣게 되는 핵심 기능이 있다.👉 Dirty Checking그리고 처음 보면 대부분 이렇게 생각한다."UPDATE 쿼리 안 썼는데 왜 DB가 수정되지?"실제로 JPA에서는 이런 코드가 가능하다.member.setName("kim");근데:UPDATE SQL을 직접 호출하지 않았는데도 DB 값이 바뀐다.처음 보면 진짜 신기하다.근데 이게 바로:👉 Dirty Checking덕분이다.실무에서도 엄청 중요한 기능이다.왜냐면:✔ JPA 자동 UPDATE 핵심✔ 영속성 컨텍스트 핵심 기능✔ 트랜잭션 동작 이해 필수✔ 성능 최적화와 연결되기 때문이다.오늘은 Dirty Checking 원리를 초보자도 이해할 수 있게 쉽게 정리해보겠다.Dirty Checking 이란?👉 엔티티 변경..

Java

JPA cascade 옵션 완벽 정리 (CascadeType.ALL, orphanRemoval 쉽게 설명)

JPA 공부하다 보면 거의 반드시 만나게 되는 옵션이 있다.👉 cascade그리고 처음 보면 진짜 헷갈린다.왜냐면 코드가 보통 이렇게 생긴다.@OneToMany( cascade = CascadeType.ALL)처음 보는 사람 입장에서는:"이게 대체 뭘 자동으로 해준다는 거지?"싶어진다.근데 실무에서는:✔ 부모 저장 시 자식 자동 저장✔ 부모 삭제 시 자식 자동 삭제✔ persist 전파✔ remove 전파같은 엄청 중요한 동작과 연결된다.특히:CascadeType.ALL무심코 사용했다가 데이터가 예상치 않게 삭제되는 경우도 진짜 많다.오늘은 JPA cascade 옵션을 초보자도 이해할 수 있게 쉽게 정리해보겠다.cascade 란?👉 부모 엔티티 작업을 자식 엔티티로 전파하는 기능쉽게 말하면:부모..

Java

Lazy Loading vs Eager Loading 차이 완벽 정리 (JPA 성능 최적화 쉽게 설명)

JPA 공부를 시작하면 거의 반드시 헷갈리는 개념이 있다.👉 Lazy Loading👉 Eager Loading처음에는 둘 다 그냥:"연관 객체 조회 방식"정도로 보인다.근데 실무에서는:✔ 성능 차이 엄청 큼✔ N+1 문제 발생 가능✔ 메모리 사용량 영향✔ API 속도 차이 발생하기 때문에 반드시 제대로 이해해야 한다.특히:fetch = FetchType.EAGER무심코 사용했다가 성능 문제 터지는 경우 진짜 많다.오늘은 Lazy Loading vs Eager Loading 차이를 초보자도 이해할 수 있게 쉽게 정리해보겠다.먼저 로딩(Loading)이란?👉 연관 객체를 언제 DB에서 가져올지 결정하는 것예시 엔티티Team@Entityclass Team { @Id Long id; Str..

Java

DTO vs Entity 차이 완벽 정리 (Spring JPA 실무 관점 쉽게 설명)

Spring + JPA 공부하다 보면 거의 반드시 헷갈리는 개념이 있다.👉 DTO👉 Entity처음에는 대부분 이렇게 생각한다."둘 다 그냥 데이터 담는 객체 아닌가?"맞다.겉보기에는 비슷하다.근데 실무에서는:✔ 역할 완전히 다름✔ 사용 목적 다름✔ 생명주기 다름✔ 수정 방식 다름이 차이를 반드시 이해해야 한다.특히:Entity를 API 응답으로 그대로 반환했다가 실무에서 큰 문제 생기는 경우도 진짜 많다.오늘은 DTO vs Entity 차이를 초보자도 이해할 수 있게 쉽게 정리해보겠다.Entity 란?👉 DB 테이블과 매핑되는 객체즉:데이터베이스 중심 객체이다.예시@Entitypublic class User { @Id private Long id; private String nam..

Coding_Slowly
'ORM' 태그의 글 목록