programming/프로젝트11 Wrapper class 동등(==)연산 프로젝트 코드 리뷰 도중 wrapper class를 동등연산한 것을 보았습니다. id == selectedCategoryByName.getId() // 둘 다 Integer 입니다 wrapper 클래스는 primitive 값이 아닌데 동등 연산을 해도 되나? 라는 생각이 들었고 혹시 될 수도 있으니까 직접 테스트 해보았습니다. Integer i1 = 1; Integer i2 = 1; Sout(i1 == i2); // true 어 되네;; 되는구나... 싶다가도 그래도 객체니까 equals로 하는 것이 좋지 않을까? 라는 피드백을 하려다 그래도 혹시 모르니 좀 더 찾아봤습니다. 어 안되네;; 그럼 왜 위의 i1 == i2 는 true가 나왔을까 궁금하여 찾아봤습니다. wrapper 클래스는 기본값을 wra.. 2022. 9. 5. [Error] NullPointerException NPEㅋㅋㅋㅋㅋ 갑자기 운영중인 KOIN에서 NPE가 터졌습니다. nginx 로그 까보니까 누군가가 개발용 swagger 에서 적절하지 않은 값으로 직접 요청 보냈던데, 누군지는 모르겠습니다. 분명히 동아리 부원일텐데 나오래도 안나오네요 코드 보니까 null 체크 이상하게 해놨던데, hotfix 브렌치 따서 수정해서 merge 했습니다. 워낙 레거시라 좀 이상한게 많아요 그리고 뭔 에러는 전부 새벽에 나오는지 모르겠어요ㅋㅋ 저번에도 이번에도ㅋㅋㅋㅋ 그래도 server down은 아니라 다행이고 잘 해결됐습니다 2022. 8. 25. Mybatis 상속 관계 매핑 Koin 개선 작업을 하며 기존에는 회원이 학생밖에 없었으나, 이제는 사장님이 추가되게 되었습니다. 이전 프로젝트에서 했던 것처럼 슈퍼-서브 타입으로 모델링하고 조인 전략을 사용했습니다. 이전 프로젝트에서는 부모 타입으로 조회 시, 우선 DB에 접근하여 dtype을 통해 어떤 타입인지 확인 후 다시 DB에 접근하여 데이터를 조회하는 방법을 사용했습니다. DB에 접근을 두 번 하게 됩니다 하지만 면접 때 DB에 접근을 한 번만 하여 조회할 수 있는 방법이 없을까요? 라는 질문을 받았고 결국 대답은 못했지만, 면접 후 찾아보니 다 방법이 있었습니다(생각해보면 JPA 에서도 제공하는 기능을 Mybatis 가 없을 리가 없겠죠) 바로 Mybatis의 discriminator 입니다 이런 방식으로 resultMa.. 2022. 8. 22. [Error] Spring3 에서 bean 생성자 주입 문제 KOIN 리뉴얼을 진행하는데 스프링 빈 주입방식이 모두 필드 주입이길래 생성자 주입으로 변경했습니다. 그러고 실행을 시켰더니 Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments were given 이라는 에러가 터졌습니다. 찾아보니 spring3 이하에서는 AOP 처리를 할 때 하나 이상의 인터페이스를 구현한 객체가 아니면 jdk dynamic proxy 가 아닌 CGLIB를 사용한다고 하네요. 그리고 CGLIB는 기본.. 2022. 8. 21. 이전 1 2 3 다음