반응형

JAVA 159

[Spring] lombok의 @Builder와 JpaRepository를 도입해보았다

저번에 만든 회원 CRUD 프로젝트에 새로운 기능들을 추가하고 테스트코드를 돌려보았다. 기능들을 추가하면서 현재까지 내가 배운 것들을 포스팅해보겠다. @Builder, 왜 쓰는걸까? Getter, Setter를 쓰는 이유가 바로 필드변수를 함부로 수정하는 것을 방지하기 위해서인데, @Builder를 쓰는 이유 또한 그렇다. 우리는 흔히 lombok을 사용할 때, Entity 위에 @Getter를 사용하는 것은 많이 볼 수 있지만, @Setter를 사용하는 경우는 거의 보지 못했다. 나는 얼마전까지만 해도 @Setter를 사용하는 것이 테스트 코드 등 여러모로 편해서 자주 사용해왔었는데, 이 때 문제점이 발생한다. Setter 메소드를 사용하면, (lombok에서 아무런 설정을 하지 않는 이상) 다른 데서..

[JPA] CascadeType.ALL 상태에서의 SQL ERROR: 23503

SQL Error: 23503 에러가 발생했다. 이 에러는 무엇인지 모르겠어서 현재 QNA에 글을 남겨둔 상태이다. https://www.inflearn.com/questions/213911 [SQL Error: 23503] Cascade 설정 후 Parent remove할 때 질문입니다. - 인프런 | 질문 & 답변 안녕하세요! 이전 질문에서 영한님 답변을 받고 원인을 해결하여 다른 경우 또한 테스트해보고 있는데 SQL Error: 23503 에러가 발생했고, 구글링 결과 참조 키 제약조건 위배될 때 발생하는 에러라 www.inflearn.com (21.05.17 추가) CascadeType.ALL, orphanRemoval=false 로 설정해두다보니, parent의 자식 목록에서 child1은 지웠..

[JPA] 실전예제 5_ 영속성 전이(Cascade), 고아 객체(orphanRemoval=true) 적용

실전예제 5 는 연관관계를 관리하는 방법에 대해 배운 내용을 적용하는 예제이다. 그 방법에는 아래와 같은 내용이 있다. 프록시(Proxy)를 이용하는 지연로딩(fetch = FetchType.LAZY) 적용 영속성 전이(cascade=CascadeType.ALL)와 고아객체 (orphanRemoval) 적용 (이번 포스팅) 첫번째인 지연로딩에 대한 포스팅은 아래 글에서 볼 수 있다. https://kth990303.tistory.com/53 [JPA] 실전예제 5_지연로딩(FetchType.lazy) 적용 오랜만에 올리는 JPA 포스팅이다. 지연로딩과 Cascade에 관한 내용을 자꾸 까먹어 나중에 복습용으로 보기 위해 포스팅으로 올린다. 인프런 김영한님의 강의를 듣고 스스로 요약 및 복습용으로 기 kt..

[JPA] 실전예제 5_지연로딩(FetchType.lazy) 적용

오랜만에 올리는 JPA 포스팅이다. 지연로딩과 Cascade에 관한 내용을 자꾸 까먹어 나중에 복습용으로 보기 위해 포스팅으로 올린다. 인프런 김영한님의 강의를 듣고 스스로 요약 및 복습용으로 기록한 포스팅입니다. 틀린 내용은 댓글로 피드백 부탁드립니다 :) 실전예제 5 는 연관관계를 관리하는 방법에 대해 배운 내용을 적용하는 예제이다. 그 방법에는 아래와 같은 내용이 있다. 프록시(Proxy)를 이용하는 지연로딩(fetch = FetchType.LAZY) 적용 (이번 포스팅) 영속성 전이(cascade=CascadeType.ALL) 적용 이번에는 그 중 첫번째인 지연로딩에 대해 공부해보려 한다. 프록시에 대한 내용은 아래 블로그에서 볼 수 있다. (기본 내용으로 보기 좋은 포스팅) https://ict..

[Spring] CRUD 기능 실습 중 @DeleteMapping 관련 에러

저번에 포스팅한 CRUD 실습을 이어하던 중, @DeleteMapping으로 삭제하려던 중 아래 사진과 같은 에러가 발생하였다. This application has no explicit mapping for /error, so you are seeing this as a fallback. 1. 패키지 관계? 만약 스프링부트를 처음 실행했을 때 이 에러가 발생한다면 (또는 컨트롤러 메소드가 아무것도 실행이 안된다면) 위 에러는 보통 스프링부트 메인 클래스가 Controller, Service 등 스프링 빈들이 위치하고 있는 패키지의 상위 패키지에 없을 때 발생하는 에러라고 한다. 그러나 나는 @GetMapping은 실행이 잘되는 상황이기도 하고, 패키지 구조관계도 멀쩡했기 때문에 위와 같은 이유는 아니었..

[Spring] MySQL+JPA+Spring+Gradle 회원조회 Read 실습

환경세팅하는 부분은 이 포스팅에서 볼 수 있다. kth990303.tistory.com/46 [Spring] MySQL+JPA+Spring+Gradle 환경설정 및 실습 그동안 백준 풀면서 스프링 공부를 소홀히 한 게 느껴져서 오랜만에 스프링 공부도 할 겸, 간단한 회원조회 실습을 해보기로 했다. 말그대로 기초적인 간단한 실습을 복습 겸 하는거라, Domain에 M kth990303.tistory.com 아직 이 코드들은 github에 올리지는 않았다. github에 올리게 된다면 포스팅 수정 후 추가하겠다. MVC 디자인패턴을 최대한 준수하기 위해 위와 같이 Domain, Repository, Controller, Service로 나누어서 코드를 짰다. 회원 엔티티에 있어야 할 정보들을 살펴보기 위해 ..

[Spring] Spring boot Test 코드 작성해보기 (TDD 연습)

스프링 강의를 들으면서, 그리고 주변 개발자들이 포스팅한 것을 보면서 tdd의 중요성을 조금씩 느끼곤 있었지만, 에러가 뜰까봐 두려움 때문에, 그리고 직접 스프링 실행해서 db를 직접 cmd창으로 확인해보면 된다는 합리화때문에 test폴더에서 test 코드를 작성한 적이 없었다. kth990303.tistory.com/46 [Spring] MySQL+JPA+Spring+Gradle 환경설정 및 실습 그동안 백준 풀면서 스프링 공부를 소홀히 한 게 느껴져서 오랜만에 스프링 공부도 할 겸, 간단한 회원조회 실습을 해보기로 했다. 말그대로 기초적인 간단한 실습을 복습 겸 하는거라, Domain에 M kth990303.tistory.com 그러나, 오늘 위 포스팅의 다음버전을 마저 하기 위해 crud 기능이 제..

[Spring] MySQL+JPA+Spring+Gradle 환경설정 및 실습

그동안 백준 풀면서 스프링 공부를 소홀히 한 게 느껴져서 오랜만에 스프링 공부도 할 겸, 간단한 회원조회 실습을 해보기로 했다. 말그대로 기초적인 간단한 실습을 복습 겸 하는거라, Domain에 Member(회원)밖에 없으며, CRUD 중 R(Read) 기능만 잘 되게 만들어보았다. 하다가 막히는 부분은 아래 내 깃헙에 있는 crud 간단하게 만들어봤던 코드를 참고하면서 하였다. github.com/kth990303/RoastChickenSoup kth990303/RoastChickenSoup 회원조회 및 게시판. Contribute to kth990303/RoastChickenSoup development by creating an account on GitHub. github.com 환경세팅 일단 s..

[JPA] 1:N 연관관계 매핑, N:1 연관관계 매핑

한동안 나태해져있는 상태여서 스프링 공부를 미루고 백준만 찔끔찔끔 풀면서 지내왔다. 오늘만큼은 무조건 스프링 공부를 함으로써 감각을 유지해야겠다 싶어서 스타벅스에 와서 JPA 기본편 강좌를 듣고 포스팅하는 중이다. 인프런 김영한의 자바 ORM 표준 JPA 프로그래밍 기본편 강좌를 듣고 복습 및 요약한 내용입니다. 틀린 점 및 추가할 점은 댓글로 피드백 부탁드립니다 :) N:1 연관관계 매핑 다대일 연관관계 매핑에 대해 공부해보자. 일대다가 좋을까 다대일이 좋을까? 강의에서는 웬만해선 다대일(N:1) 연관관계 매핑을 사용할 것을 강조하고 있다. 그리고 웬만해선 단방향 매핑으로만 해결하되, 양방향 매핑이 필요할 경우에만 양방향을 사용할 것을 권장하고 있다. 일단 관계형 데이터베이스 제1정규화 규칙으로 무결성..

[JPA] 실전예제1_요구사항 분석과 기본매핑까지 수강했다

오늘 심심해서 프로그래머스에서 이것저것 볼 거 없나 구경하다가 이런 글을 발견했다. programmers.co.kr/job_positions/4500 비바리퍼블리카(토스) - [토스뱅크(가칭)] Server Developer (Product) | 프로그래머스 개발자 커리어 플랫폼 프로그래머스에서 비바리퍼블리카(토스)의 채용공고를 확인하세요. 합격하면 사이닝보너스 50만원을 드립니다. programmers.co.kr 네카라쿠배당토직야... 등등의 대기업에 해당되는 토스의 채용공고였다. 여기서 가장 눈에 들어오는 것은 아래 사진 부분이었다. 실제로 내가 지금 공부하고 있는 부분이 Gradle을 이용한 Spring Framework, MySQL에 ORM을 JPA로 사용하고 있는 상황이었어서 (이번 JPA 포스..

반응형