분류 전체보기
-
== 와 ===JAVA/Java 2022. 2. 25. 08:32
객체 == null검사를 진행할 때, ===와 ==의 정확한 차이점을 알기 위해서 알아보았다. int a = null; int b; //true a==null; //true a===null; //true b==null //false (b는 undefined의 상태이다) b===null 즉, ==는 null과 undefined를 같은 값으로 인식하고 ===는 정확하게 두 값이 일치할 때만 true를 반환한다. ( 참고한 사이트 ) https://hianna.tistory.com/376 [Javascript] '=='와 '==='의 차이 (null, undefined) 지난번에는 '==' 연산자와 '===' 연산자의 기본적인 차이점에 대해서 알아보았습니다. [Javascript] '==' 연산자와 '==='..
-
CacadeType.REMOVE 와 orphanRemoval = true의 차이Spring 2022. 2. 24. 09:15
프로젝트 리팩토링을 진행하면서 연관관계의 데이터(1:N 부모 자식)에 옵션을 넣어줄 때 자식 데이터 삭제시 옵션을 주다가 궁금증이 생겨 찾아보게 되었다. CascadeType.REMOVE(부모 삭제시 자식 삭제) orphanRemoval = true(고아 객체 삭제) 공통점 (parentRepository.delete(parent)) parent의 삭제시 child도 함께 삭제시키는 것은 동일 차이점 (parent.getChild().remove()) 부모 엔티티에서 자식 엔티티 관계 삭제시 관계만 끊어질 뿐 부모 부분이 null로 들어간 자식 엔티티를 삭제하진 않는다. (parent.getChild().remove()) 부모 엔티티가 자식 엔티티의 관계를 삭제할 경우 남은 자식은 고아로 취급되어 그대로..
-
a collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance 발생 시Spring 2022. 2. 16. 21:30
연관관계를 가지고 있는 한 객체를 바꾸려고 할 때 다음과 같은 오류가 발생하였다. a collection with cascade=”all-delete-orphan” was no longer referenced by the owning entity instance 원인 @Entity class Parent { @OneToMany(mappedBy="parent", cascade=CascadeType.ALL, orphanRemoval=true) private List children; public void setChildren(List list){ this.children = list } @Entity class Child { @ManyToOne @JoinColumn(name = "parentid") Pare..
-
java.util.AbstractList.add(Unknown Source) 오류 발생 시JAVA/Java 2022. 2. 16. 21:15
Arrays.asList()를 이용하여 배열을 생성하고 값 추가하거나 삭제하려고 하는 경우에 해당 오류가 발생하였다. java.lang.UnsupportedOperationException at java.util.AbstractList.add(Unknown Source) 원인 Arrays.asList()는 고정된 사이즈 리스트를 반환하며 사이즈를 변경하는 add, set, remove메서드는 지원하지 않는다. (Collections.singletonList(T o)를 반환한다.) 따라서 Arrays.asList를 사용할 때에는 변경불가능한 리스트를 생성하거나 몇몇 변화만 허용하는 리스트를 생성시에 사용한다. 해결 변경을 허용하는 new ArrayList(Arrays.asList())를 사용하도록 하자. ..
-
@ParameterizedTest사용할 때 java.lang.NoSuchMethodException 발생 시Spring 2022. 2. 16. 21:09
@ParameterizedTest를 사용하여 여러가지 경우를 테스트 하려고 할 때 java.lang.NoSuchMethodException 예외가 발생하게 되었다. (cannot invoke non-static-method) 원인 @ParameterizedTest @MethodSource("lottoGame") @DisplayName("추첨 번호를 이용하여 올바를 로또 결과를 반환한다.") void match_counts_with_winning_numbers(LottoGame lottoGame, WinningLotto winningLotto, int actual) { //given //when LottoResult lottoResult = lottoGame.draw(winningLotto); //then..
-
existsBy, countBy (JPA)Spring 2022. 2. 13. 18:52
미션을 진행하다가 넘어온 아이디로 조회한 객체가 존재하지 않을 때 예외를 발생시켜야 하는 부분에서 실제 객체를 찾고 null객체인지 확인하는 방법으로 체크를 하였는데 이 부분을 existsBy로 하여 JPA를 활용하도록 피드백을 받게 되었다. null 객체 확인 방법 ( 기존에 하던 방법 ) public ReviewDTO update(ReviewCreateDTO reviewCreateDTO) { if (reviewRepository.findById(reviewCreateDTO.getId()) == null) { throw new ReviewNotFoundException(); } } 하려고 하는 의도가 어떤 것인지 명확하지 않고 불필요한 부분이 존재한다. existsBy public ReviewDTO u..
-
IllegalStateException VS IllegalArgumentExceptionJAVA/Java 2022. 2. 13. 18:39
예외 처리를 부분을 작성하면서 IllegalStateException과 IllelgalArgumentException의 차이는 무엇인지, 어떤 상황에서 사용해야하는 지 궁금해졌다. IllegalStateException Signals that a method has been invoked at an illegal or inappropriate time. In other words, the Java environment or Java application is not in an appropriate state for the requested operation. 자바 정규 문서를 보면 적절하지 않거나 유효하지 않은 시간대에 메소드가 불러졌을 때 발생하는 예외로 정의되어있다. 즉, 죽은 쓰레드로 부터 불려지는..
-
인수테스트 (Acceptance Test) ① 환경 구축 및 작성Spring 2022. 2. 8. 20:10
지난 주, 미션 진행으로 인수테스트 코드를 작성하는 방법을 배웠다. 인수테스트에 대해서 알아보고 미션 수행 후 작성한 코드를 통해서 작성 방법을 정리한다. 인수테스트란 시스템이 예상대로(요구사항대로) 동작하는지 확인할 수 있는 테스트로 개발자 - 테스터 - 고객간의 협업을 기반으로 이루어진다. 인수테스트가 통과되면 우리가 원한대로 기능이 구현되었다는 것을 알 수 있다. 테스트 종류에 따른 의미 테스트 의도 단위 테스트 소프트웨어 설계의 최소 단위(모듈, 컴포넌트)에 맞춰 작성된 테스트 인수 테스트 소프트웨어가 사용자 요구사항을 만족하는지에 맞춰 작성된 테스트 (자동화된 인수테스트는 비용이 저렴) (BLACK BOX) 통합 테스트 단위테스트가 완료된 모듈들을 결합하여 하나의 시스템을 완성하는 과정에 맞춰 ..