일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- <?xml version="1.0" encoding="utf-8"?> <!doctype mapper public "-//mybatis.org//dtd mapper 3.0//en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- 객체 절차
- mybatis 상단 태그
- group_concat concat
- mybatis 태그
- mysql concat
- leetcode 1484
- 뷰 사용하는 이유
- 스프링부트
- MySQL
- 리액트
- <!doctype mapper public "-//mybatis.org//dtd mapper 3.0//en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- 뷰 테이블
- 자바
- SQL
- mybatis 매퍼
- jar war
- java 객체지향
- SpringBoot
- mybatis dtd
- 알고리즘
- sql 가상 테이블
- <?xml version="1.0" encoding="utf-8"?>
- 협업툴
- cupucharm
- mysql 문자열 연결
- 자바 참조형
- mybatis
- mysql 날짜
- Java
- Today
- Total
목록dev (7)
glog : cupucharm
API 키 이슈로 백엔드에서 호출해야지🔥 Open API 호출Open API를 사용할 때, 프론트엔드와 백엔드 중 어디에서 호출할지를 고민해 보았다.예를 들어, 도서 정보를 가져오기 위해 네이버, 카카오, 알라딘 등의 도서 api를 사용한다고 가정해 보자.프론트엔드에서 검색어와 같은 입력 값을 도서 API에 직접 전달하여 데이터를 받아와서 보여주는 방식은 간단하게 느껴진다. 그러나, Open API를 사용할 때 인증 키 같은 정보들을 제공받은 것으로 문득 생각이 나는데, 이러한 보안적인 측면을 고려할 때, 또 데이터 가공 등의 프로세스를 생각해 보면, 백엔드에서 해당 API를 호출하는 것이 맞지 않나 하는 생각이 들었다.그래서 각각의 장단점을 간단하게 정리해 보았다 !✅ 프론트엔드에서 API 호출장점빠..

🐢 슬로우 쿼리DBMS 가 클라이언트로부터 요청받은 쿼리를 수행할 때 일정 시간 이상 수행되지 못한 쿼리를 의미한다.길어야 1-2초 걸리는 DB 쿼리가 예상보다 오래 걸리는 경우를 말한다.🌪️ 슬로우쿼리 개선 필요성운영서버에서 특정 쿼리 실행 시 5.7초, 8.1초 소요되는 현상 발생하고 있었다. 따라서, 해당 쿼리 개선이 필요했다.특정 사용자와 관련된 문서 데이터는 95,244건이 존재했고, 해당 사용자(5.7초) 기준으로 쿼리를 분석했다.🧐 실행 계획 분석📉 기존 쿼리1) #5의 경우, 불필요하게 임시테이블을 만들어 사용하고 있어 제거 필요2) #7, #8, #9를 보면 UNION을 사용하고 있음 → UNION ALL 사용으로 변경중복 제거 과정 생략UNION은 결과 집합에서 중복된 행을 제거..
OptimisticLockExceptionJPA(Java Persistence API)에서 낙관적 락 관련 동시성 제어 문제를 처리할 때 사용되는 예외 OptimisticLockException은 동시에 여러 트랜잭션이 동일한 데이터를 수정하려고 할 때 발생하는 예외로, 낙관적 락(Optimistic Locking) 메커니즘을 사용할 때 주로 나타난다. 이 예외는 데이터 일관성을 유지하고 충돌을 방지하는 역할을 한다. 구체적으로, 낙관적 락은 트랜잭션이 데이터를 읽고 수정하는 동안 다른 트랜잭션이 해당 데이터를 변경하지 않았는지 확인하기 위해 버전 번호나 타임스탬프와 같은 메타데이터를 사용한다. 트랜잭션이 커밋될 때, 데이터의 버전 번호나 타임스탬프가 예상했던 것과 다르다면 OptimisticLockEx..
Mybatis에서 ${}와 #{}는 SQL 쿼리에서 파라미터를 다루는 방식의 차이다. Mybatis ${}와 #{} 차이${}: 파라미터를 문자열로 직접 치환. 주로 구조적 요소를 동적으로 설정 시 사용. SQL 인젝션에 취약.#{}: 파라미터를 바인딩 변수로 사용. 주로 조건절, 값 설정 등에 사용. SQL 인젝션에 안전.따라서, 가능하면 #{}를 사용하여 파라미터를 바인딩하는 것이 안전한 SQL 쿼리를 작성하는 데 도움이 된다. ${}특징문자열 대체파라미터를 그대로 문자열로 치환SQL문이 생성될 때, 해당 위치에 파라미터 값이 그대로 삽입SQL injection에 매우 취약용도동적 SQL 생성:SQL 쿼리의 특정 부분을 동적으로 변경해야 할 때 사용주로 테이블 이름, 컬럼 이름, ORDER BY 절 ..

HTTPS에서 HTTP 요청 블락HTTPS 연결을 사용하는 웹사이트에서 HTTP(비암호화) 요청을 차단하는 것보안이 더 낮은 사이트로의 접속을 막기 위한 목적개발자 콘솔에 "This request has been blocked; the content must be served over HTTPS."브라우저 단에서 이미 HTTP 요청을 차단하기 때문에, 웹 서버에서의 리다이렉트 설정 무의미 인쇄 이슈작성한 문서를 출력하기 위해 문서 상세 보기 팝업 상단에서 제공하는 '인쇄' 버튼을 클릭할 경우문서 미리 보기 팝업(문서의 전체 내용, 본문 등 선택 영역 미리 보기 팝업)과 함께 인쇄 미리 보기 창이 오픈된다. 그런데 특정 문서에서 인쇄 버튼 클릭 시인쇄 미리 보기 창도 뜨기 전에, 문서 미리 보기 팝업이 생..