본문 바로가기

db6

[React + SpringSecurity + DB] 로그인 구현하기 (frontend) 리엑트와 스프링을 연결할 때 리엑트 설정을 하셨을 겁니다. axiosInstance.jsx를 만들었다던가, App.jsx를 수정했다던가 저는 둘다 수정했기 때문에 전부 있는 상황에서 구현하겠습니다. App.jsx function App() { useEffect(() => { // 서버에서 렌더링된 HTML 문서에서 CSRF 토큰을 가져오는 로직 const csrfTokenMeta = document.querySelector("meta[name='_csrf']"); // CSRF 토큰이 존재하는지 확인 후 요청 헤더에 추가 if (csrfTokenMeta) { const csrfToken = csrfTokenMeta.content; axios.defaults.headers.common["X-XSRF-TOK.. 2024. 1. 18.
[ORACLE/오라클] EXISTS, NOT EXISTS, 조건절 서브쿼리 성능(속도) 개선 개선 전: 4n초 개선 후: 1.n초 로 약 40초가량 성능이 개선된 경험을 토대로 글을 작성합니다. EXISTS 개선 개선 전 코드입니다AND EXISTS (SELECT 1 FROM TBL1 A WHERE 1=1 AND A.COL = (SELECT MIN(B.COL B) FROM TBL2 B WHERE 1=1 AND #{ROW} IS NOT NULL AND B.ROW = #{ROW} ) AND ~~ AND ~~ ) 위 코드 중AND A.COL = (SELECT MIN(B.COL B) FROM TBL2 B WHERE 1=1 AND #{ROW} IS NOT NULL AND B.ROW = #{ROW} )가 원인이 되었습니다. 서브쿼리에 조건을 걸어둬서 빠를 것이라고 예상했지만 처리순서가 후순위 처리가 되어 .. 2023. 6. 14.
[ORACLE, DB] OWNER, TABLE명, COLUMN명, TABLE COMMENT, COLUMN COMMENT 조회하기(오너명, 테이블명, 컬럼명, 테이블주석, 컬럼주석 조회) OWNER명은 ALL_OBJECTS 테이블에서 조회 TABLE명은 USER_TABLES 테이블에서 조회 TABLE COMMENT는 USER_TAB_COMMENTS 테이블에서 조회 COLUMN, COLUMN COMMENT는 ALL_COL_COMMENTS 테이블에서 조회 이걸 이용해서 쿼리문을 만들면 SELECT O.OWNER -- 오너명 , T.TABLE_NAME -- 테이블 명 , TC.COMMENTS AS TABLE_COMMENT -- 테이블 코맨트(주석) , CC.COLUMN_NAME -- 컬럼 명 , CC.COMMENTS AS COLUMN_COMMENTS -- 컬럼 코맨트(주석) FROM ALL_OBJECTS O , USER_TABLES T , USER_TAB_COMMENTS TC , ALL_COL.. 2023. 4. 25.
[DB, ORACLE] 오라클의 데이터타입(Datatype) 바이트(byte)와 자바의 byte 차이 (자바에서 디비로 문자열데이터 넘길때 바이트 차이) Oracle, MySQL 등 DB의 데이터 유형을 VARCHAR이나 VARCHAR2(10BYTE) 로 줬다고 가정합니다 실제 디비 쿼리문으로 작성을 해보면 UPDATE table SET 컬럼명 = 일이삼사오 WHERE 컬럼명 = '*' AND 컬럼명2 = '*' ; 라고 했을 때를 가정해봅시다 자바에서 데이터를 넘기면 오라클 기준 ORA-12899: ~~~ 열에 대한 값이 너무 큼(실제:15, 최대값:10) 이라는 에러가 발생할 것입니다. 이유는 자바에서 한글 데이터를 넘겼을 때 DB의 'CHARACTER SET'이 'UTF-8'로 설정되어 있으면 한글의 문자크기를 3BYTE로 들고가기 떄문에 에러가 발생하는 겁니다. 따라서 자바에서 받는 한글 문자열은 3byte로 생각하고 table내 데이터타입(크기).. 2023. 1. 25.