Java 공부를 하다 보면 어느 순간 반드시 만나게 되는 개념이 있다.👉 Reflection처음 들으면 이름부터 어렵다.그리고 보통 설명도 이렇게 나온다.런타임에 클래스 정보를 분석하는 기능처음 보는 사람 입장에서는:"그래서 정확히 뭘 할 수 있다는 건데?"싶어진다.근데 Reflection은:✔ Spring✔ JPA✔ Lombok✔ Jackson✔ Mockito✔ 테스트 프레임워크같은 거의 모든 Java 프레임워크 내부에서 사용되는 핵심 기술이다.실무에서도 엄청 중요하다.왜냐면:객체를 동적으로 제어할 수 있기 때문이다.오늘은 Reflection이 무엇인지 초보자도 이해할 수 있게 쉽게 정리해보겠다.Reflection 이란?👉 실행 중(Runtime)에 클래스 정보를 분석하고 조작하는 기술쉽게 말하면:..
JPA 공부하다 보면 거의 반드시 듣게 되는 핵심 기능이 있다.👉 Dirty Checking그리고 처음 보면 대부분 이렇게 생각한다."UPDATE 쿼리 안 썼는데 왜 DB가 수정되지?"실제로 JPA에서는 이런 코드가 가능하다.member.setName("kim");근데:UPDATE SQL을 직접 호출하지 않았는데도 DB 값이 바뀐다.처음 보면 진짜 신기하다.근데 이게 바로:👉 Dirty Checking덕분이다.실무에서도 엄청 중요한 기능이다.왜냐면:✔ JPA 자동 UPDATE 핵심✔ 영속성 컨텍스트 핵심 기능✔ 트랜잭션 동작 이해 필수✔ 성능 최적화와 연결되기 때문이다.오늘은 Dirty Checking 원리를 초보자도 이해할 수 있게 쉽게 정리해보겠다.Dirty Checking 이란?👉 엔티티 변경..
JPA 공부하다 보면 거의 반드시 만나게 되는 옵션이 있다.👉 cascade그리고 처음 보면 진짜 헷갈린다.왜냐면 코드가 보통 이렇게 생긴다.@OneToMany( cascade = CascadeType.ALL)처음 보는 사람 입장에서는:"이게 대체 뭘 자동으로 해준다는 거지?"싶어진다.근데 실무에서는:✔ 부모 저장 시 자식 자동 저장✔ 부모 삭제 시 자식 자동 삭제✔ persist 전파✔ remove 전파같은 엄청 중요한 동작과 연결된다.특히:CascadeType.ALL무심코 사용했다가 데이터가 예상치 않게 삭제되는 경우도 진짜 많다.오늘은 JPA cascade 옵션을 초보자도 이해할 수 있게 쉽게 정리해보겠다.cascade 란?👉 부모 엔티티 작업을 자식 엔티티로 전파하는 기능쉽게 말하면:부모..
JPA 공부하다 보면 거의 반드시 헷갈리는 개념이 있다.👉 flush👉 commit처음에는 둘 다 비슷해 보인다.왜냐면 둘 다:DB에 반영되는 느낌이 있기 때문이다.그래서 초보자들은 자주 이렇게 생각한다."flush 하면 저장 완료 아닌가?"근데 실제로는:✔ flush ≠ commit✔ 역할 완전히 다름✔ 동작 시점 다름✔ rollback 가능 여부 다름이다.이 차이를 제대로 이해해야:✔ JPA 동작 원리✔ 영속성 컨텍스트✔ Dirty Checking✔ 트랜잭션 관리를 제대로 이해할 수 있다.오늘은 flush vs commit 차이를 초보자도 이해할 수 있게 쉽게 정리해보겠다.가장 먼저 결론flush👉 SQL을 DB로 전송commit👉 최종 저장 확정핵심 차이flush = 반영 준비commit =..