목록분류 전체보기 (424)
코딩항해기
페이지가 로드되지 않는데에는 다양한 이유와 원인이 있지만 EL식이 원인이 되는 경우가 있다. EL식이 범인인지 확인하기매우 간단하게 확인할 수 있다. EL식이 들어간 부분을 전부 주석처리했을 때 페이지 요소가 로드 된다면 EL식이 범인이다. 잘못된 데이터 호출controller에서 data라는 이름으로 데이터를 줄 때 EL식으로 datas를 호출하는 것은 페이지 로딩 자체에는 영향을 주지 않는 것으로 보이나 (단순 데이터 없음) data라는 데이터가 DTO일 때 data에서 추출하는 필드명이 틀리는 것은 페이지 로딩에 에러를 주어 페이지 로딩을 막을 수 있다. 만약 controller와 통합하기 위해 EL식의 데이터명을 수정했는데 페이지가 갑자기 로딩되지 않는 문제가 발생한다면 EL식에서 없는 필드 값을..
종단으로 가게 검색 기능이 정상작동할 수 있게 연결하던 중 특정 검색어 검색 시 페이지가 로드되지 않으며 브라우저 콘솔에 인코딩 에러만 뜨는 문제가 발생했다.Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCODING 콘솔창을 확인했을 때 데이터가 정상적으로 전달되고 있어 문제를 파악하기 어려웠다. 에러 발생 원인 특정먼저 문제를 파악하기 위해 여러 검색을 시도하며 문제가 되는 상황을 정확하게 특정하고자 했다.인코딩 에러가 발생하기 때문에 데이터를 의심했고, 데이터 자체가 인코딩이 불가능하거나 양이 많아 에러가 발생하는 경우일 가능성을 두고 검색을 시도했다. 1. 데이터가 2개 있는 '달' 검색 => 정상 검색2. 데이터가 1개 있는 '행복' 검색 =>..
HikariCPHikariCP는 오버헤드 제로의 프로덕션 지원 JDBC 연결 풀(커넥션 풀 관리 프레임워크)이다. 데이터 베이스 연결(Connection)을 관리해주는 라이브러리로 커넥션 풀에 설정된 커넥션 사이즈만큼 연결을 허용해 요청에 대해 순차적으로 DB 커넥션을 처리해준다. HikariCP는 DBCP(Database Connection Pool)를 관리하며, 여러 라이브러리가 있지만 가볍고 빠르게 처리할 수 있다는 장점을 가지고 있어 Spring Boot 2.0 이후 부터는 기본 옵션으로 채택하고 있다.(Spring Boot 2.0 이전에는 tomcat-jdbc를 사용했다.) JDBC (Java Database Connectivity)데이터 베이스에 접속할 수 있도록 하는 JAVA API로 자료..
해당 에러는 Mapper에서 없는 컬럼을 호출할 때 발생한다. 콘솔 내용을 볼 때 STORE 오타로 인해 발생한 것임을 알 수 있다. 정확히는 SQL syntax 규칙을 위반했다는 예외로 대부분의 원인은 오탈자로 인해 발생한다고 한다. SQL 관련 Exception 시리즈예외설명발생 예시SQLSyntaxErrorExceptionSQL 문법 오류- 테이블명 오타- WHERE 절 구문 오류- 예약어 사용 실수SQLNonTransientException일시적이지 않은 오류(코드 수정 필요)- 테이블/컬럼 없음- 권한 없음SQLTransientException일시적인 오류(재시도 가능)- 데드락- 타임아웃- 일시적 연결 끊김SQLInvalidAuthorizationException인증 관련 오류- 잘못된 비밀번..
콘솔창을 살펴보니 TransientDataAccessResourceException: PreparedStatementCallback; 예외가 발생하고 있다. 해당 예외가 발생하며 null값이 반환되어 500 페이지가 호출된 것으로 보인다. 해당 예외는 파라미터의 개수와 바인딩된 파라미터의 개수가 다를 때 발생하는 예외이다. 즉 플레이스 홀더(물음표 ?)와 플레이스 홀더에 넣는 값의 개수가 다르다는 이야기이다. 이렇게 되면 어떤 플레이스 홀더에 해당 값을 넣어야할지 알 수 없기 때문에 예외가 발생한다.
NullPointerException: Cannot read the array length because "" is null Null인 배열을 향상된 for문 (for-each문)에 사용해 발생한 문제이다. (일반 for문도 length를 추출할 때 메서드의 주체가 되므로 NPE가 발생한다)빈 배열이 아니라 null임을 인지해서 null체크를 했어야했는데 해당 검증이 빠져 발생한 오류이다. //메뉴 검색 세팅 if(storeMenu != null){//NPE 방지 for(String menu : storeMenu){ log.info("log: loadListStore - add menu condition : [{}]", menu); ..
IllegalStateException: Optional int parameter 'page' is present but cannot be translated into a null value due to being declared as a primitive type. 대상 객체의 상태가 호출된 메서드를 수행하기에 적절하지 않을 때 발생하는 예외이다.부정 또는 부적절한 때에 메서드가 불려 간 것으로 Java 환경 또는 Java 어플리케이션은 요구된 오퍼레이션에 적절한 상태가 아닐 때 발생하는 비체크 예외이다. (RuntimeException 상속) 해당 요청을 수행하는 Controller가 파라미터로 int page를 받고 있는데 page 데이터가 없을 때 null 정보로 전달되고, int에는 null이 ..
UncategorizedSQLExceptionSpring JDBC에서 특정 카테고리로 분류할 수 없는 SQL 예외가 발생했을 때 던져지는 예외이다.권한 문제, View 관련 문제(테이블, 컬럼 없음, 생성권한 없음 등), Trigger 관련 문제, 함수/프로시저 관련 문제, 데이터 타입 불일치, 트랜잭션, 인코딩 문제 등으로 발생하게 된다. 500에러가 발생해서 콘솔을 확인했다. org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [ SELECT ROW_NUMBER() OVER (ORDER BY STORE_NUM) AS ROWNUM, STORE_NUM,..
https://www.tistory.com/event/write-challenge-2024 작심삼주 오블완 챌린지오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.www.tistory.com
[Spring] 템플릿 패턴 : JDBCTemplate 적용 (DAO 고도화)템플릿 패턴복잡한 로직, 반복되는 로직을 캡슐화하는 패턴으로 중복되는 코드를 줄이고 유지보수를 편리하게 할 수 있다. GoF 디자인패턴 : 템플릿 패턴알고리즘의 구조를 메서드에 정의하고, minibcake.tistory.com KeyHolder가 필요한 이유가게 정보를 가진 Store 테이블과 해당 Store의 영업 정보를 가지고 있는 StoreWork 테이블이 있다. 이 테이블은 부모자식관계로 StoreWork가 Store의 PK를 FK로 갖는 구조다. 가게를 새롭게 만들때 가게 정보와 가게 영업 정보를 모두 입력받아 두 테이블에 데이터를 넣게되는데, 이때 Store에 데이터를 넣는 것까지는 문제가 없지만 StoreWork 데..