본문 바로가기

전체 글56

JPA 특정 엔티티 삭제시 연관된 엔티티도 함께 삭제하기 프로젝트에서 하나의 엔티티를 삭제했을 때 이 엔티티와 연관된 다른 엔티티는 어떻게 될까?? 정답은 그 엔티티의 외래 키로 연결된 엔티티에서는 부모 엔티티가 없기 때문에 데이터베이스에서 외래 키 무결성 예외가 발생한다. 예를 들어 User 엔티티와 Article 엔티티가 있다고 보자. User와 Article는 일대다의 관계를 가진다. User 하나에 여러 개의 Article가 있는 셈이다. 여기서 만약 User를 삭제한다면 삭제한 User에 연결된 Article에서는 에러가 발생하는 것이다. 다시 말해 연관관계가 끊어졌다고 할 수 있다. 이러한 상황에서 User와 연관관계가 끊어진 Article를 고아 객체라고 한다. 그렇기에 부모 엔티티를 삭제할 때는 연관된 자식 엔티티를 모두 삭제한 후에 부모 엔티티.. 2022. 7. 12.
(CI/CD) Codedeploy 배포 GitAction 에 GitIgnore 파일 적용하는법 GitHub 작업에서 application.properties 같은 데이터 베이스 개인정보가 포함된 부분은 .gitignore 처리를해서 정보가 깃으로 노출되지않게 처리하게된다 문제는 GitAction 을 사용하는 CiCd 배포중에 . Gitignore 로 지정된 파일은 로드 하지 못한다는 문제점이있다. 이럴때 workflow / ~~.yml 파일에 shell : bash 를 적용해놓고 Git Repository 의 setting 시크릿 부분에 시크릿 변수를 지정해줘서 다음과 같은 부분을 처리해주면 된다 key 값은 위와 같을 경우에는 PROPERTIES 로 지정 value 값은 properties 의 코드 내용을 그대로 넣어주면된다 이렇게 해두면 gitignore 내용을 넣지 않고 해당 코드를 같이 빌.. 2022. 7. 12.
SQL 관계 데이터 베이스 삭제 시 참조키 관련 주의 사항 데이터 테이블에 다음과 같이 pk 값을 참조하고 있는 참조 키들이 다음 엔티티 처럼 엮여있을때 여기서 DB에 저장된Post 객체를 삭제하게 되면 해당 Post 객체의 참조키를 가지고있는 Hashtag 테이블, image 테이블, Comment 테이블 이 참조할 Pk 값이 없어지게된다. 해당 SQL 명령어가 실행됬을때 에러가 뜨면서 작동이 되지않게된다 해결방안으로 다음과 같이 Post를 참조하고있는 hashtag 와 image 를 먼저 지워준 모습이다. (comment 는 아직 적용하지 않아서 추가하지않았다.. 차후 적용할예정) 2022. 7. 12.
Entity table 에 @setter 쓰지않기 + 대처방안 이전 까지 게시글 수정 @PATCH 로직을 수행하기위해 이런식으로 set으로 변경값을 넣어주기 위해서 위 사진처럼 Entity 에 @Setter 를 넣어 수정 로직을 만들었었다 하지만 엔티티에 @setter 를 금지하는 원칙이있는것을 알게되었다 몇가지의 이유가있는데 첫번쨰, 객체의 일관성을 유지하기 힘들다 두번쨰, setter는 그 코드로 그 의도를 알기 힘들다 그래서 위사진 처럼 change엔티티 라는 메서드를 생성해주어서 위 사진처럼 수정할 엔티티 객체를 불러낸다음 change 매서드를 사용하여 다시 저장 해주면 @Setter 를 엔티티에 쓰지않고도 값을 수정할수있다! 2022. 7. 12.
Exception 처리 Exceptionhandler 사용법 일단 ErrorCode enum 클래스에 상태 코드를 적용시켜주고 private final int status를 넣어줍니다 ErrorResponse 클래스에 생성자를 만들고 방금만든 ErrorCode를 파라미터 값에 넣어줍니다 ErrorCode enum 클래스에 해당되는 같은이름으로 클래스를 지어주고 extends 로 에러 종류를 골라줍니다 여기서는 웹 로직 실행중에 일어날수있는 에러를 처리하는 부분이라서 Runtime Exception으로 처리하였습니다! 그다음 GlobalExceptionHandler 에 어노테이션 @ExceptionHandler 를 넣고 에러처리 {클래스이름} .class 값을 넣어줍니다! 여기서 리턴타입과 메서드는 저희가 ResponseEntity를 사용했기 때문에 이렇게 반환을 .. 2022. 7. 7.
ERD 구조와 데이터 처리를 위한 Arraylist 활용 - 마켓컬리 클론코딩 이번주에 마켓컬리 클론코딩을 할때 설계한 ERD 구조이다 기존에 작업했던 프로젝트들보다 코드가 복잡한느낌이있었지만 데이터 설계적 측면에서 다양한 값이 나올수있는부분은 따로 테이블을 만든다는점 ! 에서 좋은참고가되었다! 이런식의 구조로 product 에 따라오는 productdetail 테이블 을 따로 만들어주어 기능적으로 메인페이지나 상품목록조회에서 필요한 사진, 가격, 상품이름들을 빠로 빼두고 세부 페이지에서 필요한 냉장방법, 배송 기간들의 데이터를 따로 관리하게 된다. ============================================================================================ 서비스부분 생성자에 ArrayList를 사용하여 연관디비 내용 추가하.. 2022. 6. 27.
IT 지식 독서 요약 72, 73 월드 와이드 웹은 무료다/ URL의 의미 인터넷 통신망 과 통신망을 연동해 놓은 망의 집합을 의미하는 인터네트워크(Internetwork)의 약어인 internet과 구별하기 위해 Internet 또는 INTERNET과 같이 고유명사로 표기. 랜(LAN) 등 의 소규모 통신망을 상호 접속하는 형태에서 점차 발전하여 현재는 전세계를 망라하는 거대한 통신망의 집합체 Wed browesr의 종류 5종류의 Wde browser 현재 실생활에서 많이 사용하는 웹브라우저는 여섯 가지로 분류할 수 있습니다. 사파리, 인터넷 익스플로러, 크롬, 오페라, 파이어폭스 가있습니다. 정말 다양한 Wed browser들이 존재를 하는데요. 최근 MS에서 운영체제 윈도 10에서 인터넷 익스플로러를 쓰지 않고 엣지(Edge)를 제공하고 있습니다. 인터넷 익스플로러(Int.. 2022. 6. 22.
항해 주특기 미니프로젝트 회고록 https://github.com/SeungchanKKK/pokemonbackend/tree/main/minipro GitHub - SeungchanKKK/pokemonbackend Contribute to SeungchanKKK/pokemonbackend development by creating an account on GitHub. github.com 프로젝트 깃허브 주소 개요 포켓몬이라는 주제로 댓글과 좋아요 기능이있는 도감 웹사이트에 도전하였습니다. 프레임 워크 기반으로 첫 협업 작업이었기에 너무 복잡한 기능은 도전하지않고 1주일이내에 구현할수있는 기능들에 집중하였습니다 작업내용 데이터 베이스 도감에 필요한 DB자료들은 원래 포켓몬 open API 를 제공받아 사용하려고했으나 조회에 필요한 DB.. 2022. 6. 19.
미니프로젝트 에러해결 @NoArgsConstructor arc를 통해 검색 기능을 만들때 다음과같은 에러가떴다 json parse 이때 @NoArgsConstructor 를 사용하여 해결하였다 생성자를 자동생성하는 어노테이션이다 파라미터가 없는 생성자를 만들어준다 2022. 6. 13.