[JPA] Soft Delete를 위한 @SQLDelete, @Where
·
Server/JPA
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] Update 후 해당 객체를 Return했을 때 @CreatedDate가 null 이 반환되는 상태에 대한 회고
·
Server/Spring&Spring Boot
서론 프로젝트를 진행하면서, 하나의 Update API를 개발하고 있었다. 요구사항에서는 update 후 해당 데이터의 정보를 Return 하도록 구성되어 있었다. 업데이트 처리 후 해당 객체를 바로 Return 하도록 진행하였는데, lastModifiedAt의 경우에는 update 쿼리가 날아간 시간이 잘 적혀있는 반면 createdAt은 Null로 반환되었다. 바로 DB를 실행시켜 해당 데이터를 확인했을 땐, createAt과 lastModifiedAt이 모두 들어있는 상황이었다. Comment Entity ... public class Comment extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private..
[MySQL Error] Error executing DDL alter table like drop foreign key via JDBC Statement. MySQL 예약어 에러
·
Server/Error
문제 발생 개발을 진행하고 있는 상황이므로 jpa.ddl-auto를 create-drop으로 계속 사용하던 도중, 다음과 같은 에러가 발생하기 시작했다. Error executing DDL alter table like drop foreign key via JDBC Statement Table을 생성하는 도중 계속해서 에러가 발생하였다. 문제 해결 좋아요 기능을 개발하면서 Entity의 이름을 'LIKE'로 지정하면서 발생하게 되는 문제였다. LIKE는 MySQL에서 사용되고 있는 예약어이므로 Entity의 이름으로 사용할 수 없도록 지정되어 있는 이름이었다. 기존 ENTITY ... public class Like extends BaseEntity { @Id @GeneratedValue(strategy..
[Error] 테스트 코드 실행 시 Parameter 1 of constructor in com.PostRestController required a bean of type 'com.service.LikeService' that could not be found. 발생 이유
·
Server/Error
문제 발생 새로운 API를 제작하면서 테스트코드를 진행하던 도중, 모든 테스트 코드가 먹통이 되기 시작했다. Application Run을 했을 경우에는 에러가 발생하지 않았다. 에러코드 Description: Parameter 1 of constructor in com.likelion.finalproject.controller.restcontroller.PostRestController required a bean of type 'com.likelion.finalproject.service.LikeService' that could not be found. Action: Consider defining a bean of type 'com.likelion.finalproject.service.LikeSe..
[JPA] Delete와 DeleteById 차이
·
Server/JPA
프로젝트를 진행하던 도중 Repository의 delete 메서드를 타이핑하고 있던 도중 자동 완성으로 두 가지 메서드가 내 눈앞에 등장했다. 해당 메서드들이 매개변수로 원하는 Integer id, Post entity가 둘 다 존재하는 상황이었다. 삭제해야 할 Post를 알아야하므로 Post Id를 매개변수로 넘겼기 때문에 Id가 존재했다. Post가 있어야 Post를 삭제할 수 있다는 조건을 해결하기 위해 Post Entity를 찾았기 때문에, Entity가 존재했다. 무엇을 선택해야 하는가 생각할 때, id만으로 비교하는 것보다 entity로 비교해서 삭제하는 게 좋지 않을까?라고 단순하게 생각하여 delete를 선택하고 엔티티를 넘겨 삭제 로직을 실행시켰다. 삭제 로직 @Service @Requi..
[Spring] @ModelAttribute에는 Setter가 필요하다.
·
Server/Error
발생했던 에러 2022-12-27 16:11:38.592 INFO 33716 --- [nio-8088-exec-1] c.l.f.controller.UserController : join controller name =null, passowrd =null 아래의 html을 통해 /user/join으로 userName과 password를 보내려고 했으나 계속 userName과 password가 null로 받아지는 상황. html User Name Password controller @RequestMapping("/users") @Controller @RequiredArgsConstructor @Slf4j public class UserController { private final UserService us..
[GitLab&GitHub] GitLab 작업을 GitHub에 연동하기, 미러링
·
Server/ETC.
개요 프로젝트를 진행하면서 깃허브가 아닌 깃랩을 사용하다 보니, 깃허브의 잔디가 비어 가는 것을 확인할 수 있었습니다. 깃랩에 이어서 꾸준히 1일 1커밋을 하고 있었지만, 비어있는 잔디를 보니 마음 한 구석이 비어버린 느낌이었습니다. 다행히 같이 공부하는 동생이 GitLab에 미러링 기능이 있다는 것을 알려주었고, 나도 도전해보려 한다. GitHub Token 발급 Settings 좌측 하단에 있는 Developer settings로 들어간 후 하단의 Personal access tokens로 들어갑니다. (Fine-grained tokens라는 게 새로 나왔나 봅니다.) expiration 기한을 지정해야 하는데, GitLab을 언제까지 사용할지 모르니 일단 무기한으로 설정하였습니다. Repo에 관련된..
[Docker] Docker Images Tag <NONE> 삭제 자동화
·
Server/Infra
배포 스크립트와 크론탭을 사용해서 gitlab의 pipeline이 build가 완료 되면 자동으로 빌드하게 되는 명령어를 구성했었다. repository를 새롭게 pull할때마다 docker image가 계속해서 추가되는 현상이 발생한다. [CI/CD] 배포 스크립트 작성, 크론탭을 활용해서 자동 배포 깃을 푸시하고, 도커에서 풀하고 실행시키는 과정을 계속해서 반복하기란 너무 번거로운 작업입니다. 해당 작업을 자동화시키기 위해 배포 스크립트 작성 및 크론탭을 이용해보도록 하겠습니 chordplaylist.tistory.com 왜 삭제를 자동화 시켜야하는가? 이 때, 동일한 태그를 가진 이미지가 생성이 되면, 기존 이미지는 삭제되는 것이 아니라 tag가 None으로 바뀐 후 계속 남아있게 된다. 위와 같은..
코드플리
'Server' 카테고리의 글 목록 (12 Page)