ORM(Object-Relational Mapping) 개요
·
Spring
1️⃣ ORM의 기본 원리객체 지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 테이블 사이의 불일치를 해소하여,개발자가 객체를 다루는 것처럼 데이터베이스에 접근할 수 있도록 하는 기술입니다. 객체와 테이블의 매핑객체 지향 프로그래밍에서 사용하는 클래스는 데이터베이스의 테이블과 매핑됩니다.예를 들어, 객체인 User 클래스는 데이터베이스인 users 테이블에 대응됩니다.클래스의 속성(필드)는 테이블의 컬럼에 대응됩니다.각 객체의 인스턴스 변수가 테이블의 각 행(row)에 저장되는 데이터 필드입니다. CRUD 작업의 추상화ORM은 기본적인 CRUD작업을 객체의 메소드 호출로 처리할 수 있도록 해줍니다.개발자가 SQL쿼리를 직접 작성하지 않고,ORM 프레임워크가 객체의 상태 변화를 감지하여 적절한 SQL ..
[Spring] Hibernate @Where 애노테이션 대신 @Filter로 특정 조건 조회하기
·
Spring
스케줄 관리 프로젝트 개발 중 엔티티의 논리 삭제(Soft Delete)를 처리하기 위해 @Where 애노테이션을 사용하고 있었습니다.@SQLDelete(sql = "UPDATE user SET is_deleted = true, deleted_at = now() WHERE id = ?")@Where(clause = "is_deleted = false")이 코드는 조회시 삭제되지 않은 데이터만 반환하도록 동작하지만,커밋 시 경고 문구가 발생하여 일부 버전에서 `@Where`애노테이션 기능이 더이상 권장 되지 않는다는 사실을 알게되었습니다.      해결 방법 - @Filter 사용 `@Filter`와 `@FilterDef`를 사용해 기존 `@Where`를 대체했습니다  (1) 코드 수정 전 (@Where)..
[Spring] 하이버네이트와 영속성 개념 완벽 이해 및 적용 방법
·
Spring
웹 애플리케이션에서는 데이터가 정말 중요합니다.데이터를 효율적으로 관리하고 저장하는 것은 개발 과정에서 아주 종요한 요소입니다. Java 애플리케이션에서 이를 더욱 쉽게 구현하기 위해 하이버네이트(Hibernate)가 사용됩니다.이 글에서는 영속성(Persistence)의 기본 개념부터 하이버네이트의 작동원리와 실전 예제까지 알아보겠습니다.      영속성(Persistence)의 기본 개념 영속성은 데이터를 영구적으로 저장해 어플리케이션이 종료되더라도 해당 데이터를 유지할 수 있게 하는 개념입니다.따라서 데이터의 지속성을 보장하기 위해 데이터를 데이터베이스, 파일시스템, 클라우드 저장소와 같은 영구 저장소에 저장하는 것이 필요하며, 이를 영속성이라고 합니다. 🔍 자바 애플리케이션에서의 영속성자바 애플..
[Spring] Hibernate @Where로 인한 논리 삭제 데이터 조회 문제 트러블 슈팅
·
Spring
문제 상황 논리 삭제된 데이터가 조회되지 않음 Spring Boot와 JPA를 사용해 논리 삭제(Soft Delete) 기능을 구현하던 중 예상치 못한 이슈가 발생했습니다.`isDeleted = true` 조건으로 논리 삭제된 데이터를 조회하려 했으나, Hibernate의 `@Where` 애노테이션이 모든 조회 쿼리에 `isDeleted = false` 조건을 강제 적용하면서원하는 데이터를 가져오지 못하는 상황이 발생했습니다. SQL 로그 확인 결과SELECT * FROM user u WHERE u.is_deleted = false;쿼리를 `isDeleted = true` 조건으로 작성했음에도 `is_deleted = false` 조건이 추가되어 논리 삭제된 사용자를 조회할 수 없었습니다.    문제 원..