게시판 만들기 프로젝트 과제가 있어서 프로젝트의 기본 뼈대(?) (spring boot 프로젝트 생성, dependencies 설정, mariadb 연결, controller 페이지 연결 등) 을 설정한 후 프로젝트를 실행시키는데 다음과 같은 에러가 발생했다. 아직 아무것도 안했는데 에러가 발생한다고? 물론 컴파일에러니까 당연히 발생할 수 있지만 어디서 잘못된 것일까,, 지금 바로 알아보도록 하자. 에러 메세지가 짧아 해결하기 어려울 것 같았는데 생각보다 해결방법은 단순하다. 우선 이 에러가 발생하는 이유는 https://start.spring.io/ 사이트로 접속하면 다음과 같이 스프링 프로젝트를 생성할 수 있는데 여기서 프로젝트를 생성하고 generate를 눌러 압축 해제 후 인텔리제이에서 프로젝트를..
캡스톤 개발 도중 다음과 같은 에러를 발견했다. 😣 에러메세지 어떤 에러이며 왜 발생하는지 알아보자. 🤔 이 에러는 영속성 때문에 발생하는 에러로, 필자의 테이블 관계에서 보면 다음과 같은 테이블 관계에서 consultig이 @manyToOne으로 member 객체를 참조하는데 member(fk) 값이 없어서 생기는 에러이다. 결국 join하는 쪽에 cascade 옵션을 걸어줘야 한다. 다음과 같이 cascade 옵션을 걸어주고 다시 실행해보면 잘 작동하는 것을 확인할 수 있다. 결과 확인 😆 오늘도 하나의 에러를 해결했다! 공부를 하면 할수록 '내가 아직 정말 부족하구나,,' 라는 생각이 든다. 더욱더 열심히 공부하자. 🔥
캡스톤 개발 중에 연관관계에서의 @ToString()과 exclude 속성에 대해 학습한 내용을 정리한다. @ToString은 언제 사용하며 exclude 속성은 무엇인지 같이 알아보도록 하자. 🤔 엔티티 간에 연관관계를 지정하는 경우에는 항상 @ToString()을 주의해야 한다. @ToString()은 해당 클래스의 모든 멤버 변수를 출력한다. 예를 들어 다음과 같은 경우에서 Consulting 객체의 @ToString()을 하면 memer 객체 역시 출력된다. 이때 Member를 출력하기 위해서는 Member 객체의 toString()이 호출되어야 하고 이때 데이터베이스 연결이 필요하다. 이런 문제로 인해 연관관계가 있는 엔티티 클래스의 경우 @ToString()을 할 때 exclude 속성을 사용..
캡스톤 프로젝트 도중 lazy 지연 로딩에 대해 학습하다 다음과 같은 에러를 발견했다. 어떤 에러였으며 어떻게 해결했는지 같이 확인해보자. data에 연관관계 설정 시 기존에는 다음과 같이 즉시로딩(Eager loading)으로 연관관계를 지정했다. 우선 즉시로딩의 장단점은 장점 : 한 번에 연관관계가 있는 모든 엔티티를 가져온다. 단점 : 여러 연관관계를 맺고 있거나 연관관계가 복잡할수록 조인으로 인한 성능 저하를 피할 수 없다. JPA에서 연관관계의 데이터를 어떻게 가져올 것인가를 fetch(패치)라고 하는데 연관관계의 어노테이션의 속성으로 'fetch'모드를 정할 수 있다. 지연로딩 설정은 다음과 같이 할 수 있다. 결국 lazy loading 설정을 마치고 findById를 통해 read 기능을 ..
캡스톤 개발 도중 insert문 Test Case를 작성하다 다음과 같은 에러를 마주했다. 어떤 에러이며 어떻게 해결했는지 바로 확인해보자. 😊 참조 무결성 제약 조건에 위배된 것 같은데 (cast 어쩌고저쩌고 하는거 보니 형변환도 안되는것 같았고,, 대충 디비 연관관계에 문제가 있구나,, 생각했다.) 어디가 어떻게 위배된 건지, 뭐가 문제인건지 전혀 감을 잡지 못했다. 인터넷에 검색해보니 연관관계 매핑이 잘 되어있는지 다시 보라고 해서 확인했고 이상없었다. 혹시나 하고 코드를 다시 보니 문득 에러는 이 부분 아니면 날 수가 없다.. 는 생각이 들었다! 바로 이 부분 ❗❗❗ 참조 무결성 어쩌고 저쩌고 에러가 난다는 것은 테이블 연관관계에서 문제가 있다는 것인데 Member member = Member.b..
캡스톤 프로젝트 도중 매핑 테이블의 삭제 문제와 트랜잭션 처리에 대해 학습한 내용을 정리하고 포스팅하려고 한다. M:N(다대다) 관계를 별도의 매핑 테이블을 구성하고 이를 엔티티로 처리하는 경우에는 주의해야 한다. '명사'에 해당하는 데이터를 삭제하는 경우에 중간 매핑 테이블에서도 삭제를 해야하기 때문이다! 예를 들어 다음과 같은 경우에서 특정 회원(Member)을 삭제하는 경우 회원이 등록한 모든 디자인 댓글(Reply) 역시 삭제되어야 한다. member 테이블에서 특정 회원을 삭제하려면 우선 reply 테이블에서 먼저 삭제하고, member 테이블을 삭제해야 한다. 이 2개의 작업은 하나의 트랜잭션으로 관리해야한다. 이제 코드로 들어가 확인해보자. ReplyRepository에서 다음과 같이 del..
캡스톤 프로젝트를 하는 도중 다음과 같은 에러 메세지가 발생했다. 왜 발생하며 어떻게 해결하는지 같이 알아보도록 하자. 우선 이 에러의 경우 test 케이스에서 발생한 에러이다. 우선 필자가 현재 이용하고 있는 테이블 구조는 다음과 같다. n:m 연관관계 매핑에서 Reply라는 매핑 테이블이 생성되고 특정 디자인의 댓글을 찾아오는 메서드를 실행하고 있다. 실행하면 다음과 같은 에러가 발생한다. 우선 이 에러가 발생하는 이유는 다음과 같다. 🤔 Reply 클래스의 Member에 대한 Fetch 방식이 LAZY이기 때문에 한 번에 Reply 객체와 Member 객체를 조회할 수 없기 때문에 발생한다. 👉 해결방법은 두 가지이다. 1. @Query를 이용해서 조인 처리하기 2. @EntityGraph를 이용해..
지난 포스팅에서 querydsl 환경설정을 한 후 검색 기능을 위한 메소드 추가를 하고 서버를 실행해보니 다음과 같은 에러가 발생했다. 어떤 에러이며 어떻게 해결하면 좋을지 바로 확인해보자!! 잘 안 보일 것 같아 에러 메시지 부분만 확대해 추가 첨부한다. 보이다 싶이 온 화면이 뻘겋게 변하는 총체적 난국의 상황이 발생하는데 에러메세지를 읽어보면 'error: cannot find symbol import ReBack.core.data.Design'; 즉 내 프로젝트의 data 패키지를 읽어올 수 없다는 것인데 왜????????? 내 생각에 querydsl을 설정하면서 import가 제대로 인식되지 않는 것 같았다. 해결방법을 보자. 1. file-setting에 들어간다. 2. gradle-Gradle..
이전 포스팅(글자클릭시 이동)에서 querydsl이란 무엇이며 왜 사용하는지에 대해 포스팅했으므로 이전 포스팅을 꼭 참고하기를 바란다. 캡스톤 프로젝트 중 '검색 기능' 을 위해 동적 쿼리를 사용하게 되었고 Querydsl을 설정하는 포스팅을 작성해볼까 한다. 바로 들어가보자. 😊 (queryDslVersion 5.0.0이후부터는 설정이 조금 달라졌다고 하는데 이 포스팅은 queryDslVersion 5.0.에 해당한다.) 1. build.gradle 파일에 다음과 같은 코드를 추가한다. 코드를 추가하고 실행시키면 build>generated>querydsl[main]에 Q로 시작하는 도메인들이 생긴다. Q로 시작하는 도메인들이 보인다면 제대로 한 것이다!! 😊 보이는 것과 같이 Q로 시작하는 도메인이 ..
오늘은 querydsl이란 무엇이며 왜 사용하는지에 대해 알아보자. JPA에는 쿼리 메서드의 기능과 @Query를 통해 많은 기능을 만들 수 있지만, 고정된 형태의 값을 가진다는 단점이 있다. 즉, 단순한 검색 조건을 만들어야 하는 상황에서는 충분히 사용가능하지만, 복잡한 조합을 이용하는 경우의 수가 많은 상황에서는 동적으로 쿼리를 생성해서 처리할 수 있는 기능이 필요하다. 📌 이때 Querydsl을 사용한다!! querydsl을 사용하면 복잡한 검색조건이나 조인, 서브 쿼리 등의 기능도 구현이 가능하다! Querydsl 공식 사이트
- Total
- Today
- Yesterday
- BAEKJOON
- 22 정보처리산업기사
- 개발자
- LinkedList
- queue
- 해커랭크 자바 챌린지
- 해커랭크 챌린지
- challenges
- stack
- 정보처리 산업기사
- hackerrank
- 풀이
- 챌린지
- Java
- ORM
- 정보처리산업기사
- 자바
- 소스코드
- 해커랭크
- hackerrank challenges
- 22 정보처리 산업기사
- JPA
- 해커랭크 자바
- 백준
- 강의
- 자바의 정석
- 디버깅
- 코드
- 정보처리산업기사 공부법
- 그리디
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |