Server/JPA

    [JPA] Soft Delete를 위한 @SQLDelete, @Where

    [JPA] Soft Delete를 위한 @SQLDelete, @Where

    Hard Delete? Soft Delete? Delete 처리를 개발하던 도중, Soft Delete와 Hard Delete 두 방법이 존재한다는 것을 알게 되었다. Hard Delete는 물리 삭제라고도 하며, DB에서 해당 데이터를 실제로 삭제하는 것을 의미한다. Soft Delete는 논리 삭제라고도 하며, DB에서 해당 데이터가 삭제된 것을 하나의 컬럼을 이용하여 구분하는 것을 의미한다. 즉, Hard Delete의 경우에는 DB에 Delete Query를 날리게 되고 Soft Delete의 경우에는 DB에 Update Query를 날리게 된다. Soft Delete를 사용하는 이유? 그렇다면 Soft Delete를 왜 사용하게 되는 것일까? Hard Delete를 진행하게 되면 해당 글에 어떤..

    [JPA] Delete와 DeleteById 차이

    [JPA] Delete와 DeleteById 차이

    프로젝트를 진행하던 도중 Repository의 delete 메서드를 타이핑하고 있던 도중 자동 완성으로 두 가지 메서드가 내 눈앞에 등장했다. 해당 메서드들이 매개변수로 원하는 Integer id, Post entity가 둘 다 존재하는 상황이었다. 삭제해야 할 Post를 알아야하므로 Post Id를 매개변수로 넘겼기 때문에 Id가 존재했다. Post가 있어야 Post를 삭제할 수 있다는 조건을 해결하기 위해 Post Entity를 찾았기 때문에, Entity가 존재했다. 무엇을 선택해야 하는가 생각할 때, id만으로 비교하는 것보다 entity로 비교해서 삭제하는 게 좋지 않을까?라고 단순하게 생각하여 delete를 선택하고 엔티티를 넘겨 삭제 로직을 실행시켰다. 삭제 로직 @Service @Requi..

    [JPA] 01. JPA 시작

    [JPA] 01. JPA 시작

    객체 매핑 시작 회원 클래스 import javax.persistence.*; public class Member { private String id; private String username; private Integer age; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Integer getAge() { return age; } public void setAge(Inte..

    [JPA] 00. JPA 소개

    [JPA] 00. JPA 소개

    JPA를 사용해서 얻은 가장 큰 성과 "왜 객체 지향의 장점을 포기하고 객체를 단순히 테이블에 맞추어 데이터 전달 역할만 하도록 개발할까?" 애플리케이션을 SQL이 아닌 객체 중심으로 개발하니 생산성과 유지보수가 좋아지고 테스트를 작성하기도 편리함. 개발 단계에서 MySQL 데이터베이스를 사용하다가 오픈 시점에 오라클 데이터베이스를 사용하게 되는 경우 JPA를 사용하면 코드를 거의 수정하지 않고 데이터베이스를 손쉽게 변경할 수 있음 SQL을 직접 다룰 때 발생하는 문제점 객체를 데이터베이스에 CRUD하려면 너무 많은 SQL과 JDBC API를 코드로 작성해야함. Member 객체가 연관된 Team객체를 사용할 수 있을지 없을지는 전적으로 사용하는 SQL에 달려 있음. 이런 방식의 가장 큰 문제는 데이터 ..