[React] 업데이트 될때만 useEffect 실행
2023. 4. 25. 20:04
프로그래밍/React
component 업데이트 시에만 useEffect 작동 클래스형에서 사용하던 componentDidUpdate를 사용하고 싶다면 어떻게 해야할까? useEffect는 componentDidMount와 componentDidMount+componentDidUpdate 기능을 제공함 여기서 componentDidUpdate만 사용하고 싶다면 조건을 걸어 update 시에만 useEffect가 작동하도록 하면 됨 간단한 예시 const mounted = useRef(false); useEffect(() => { if(!mounted.current) { mounted.current = true; } else { // startDate 변경시 작업내용 } }, [startDate]);
[React] crypto-js 암호화 복호화 방법
2023. 4. 24. 20:33
프로그래밍/React
crypto-js 사용 방법 crypto-jo 설치 npm install crypto-js # npm 혹은 yarn을 사용하여 설치 yarn add crypto-js 암호화 복호화하기 암호화 키는 .env로 빼거나 다른 파일에 두고 사용하는 것을 권장 값이 없는 경우 빈 문자열 처리나 에러 로깅을 위한 try~ catch 문은 선택적으로 사용하기 import CryptoJS from 'crypto-js'; import {AES_SALT} from "./constants"; /* Salt 비밀 키 */ const salt = '암호화 키'; /* 암호화 */ export const encrypt = (text) => { // 값이 없을 경우 빈 문자열 반환 if (!text) return ''; retur..
[MySQL Error] warning : Integer display width is deprecated and will be removed in a future release. 해결 방법
2023. 4. 21. 20:30
프로그래밍/SQL
warning : Integer display width is deprecated and will be removed in a future release. MySQL 테이블 생성 시 warning 뜸 원인 내용을 읽어보니 정수 타입 필드에 크기를 지정 발생한 warning임 MySQL 8.0.17 버전부터 도입된 변경 사항으로 추후 릴리스에서 정수 필드의 크기 지정하는 기능이 삭제될 예정이기에 경고 뜸 해결 방법 필드의 크기를 제거하면 해결 create table order ( order_seq int not null auto_increment, is_deleted int(1) default '0', primary key (order_seq) ); 아래와 같이 is_deleted int(1) -> is_..
[JPA] JPQL alias error 해결 방법
2023. 4. 20. 20:13
프로그래밍/JPA
alias error 뜨는 경우 join 건 부분 확인할 것 join 건 쿼리의 select 절 alias 추가해주기 예시 코드 @Query(value ="select * from Order o " + "left join (select orderSeq as orderSeq, name as name from OrderProduct " + ") op on op.orderSeq = o.orderSeq") List getOrderList(OrderCondition condition);
[JPA] JPQL 날짜 조회 시 원치않는 타임존이 붙는다면?
2023. 4. 19. 20:57
프로그래밍/JPA
JPQL 날짜 조회 시 타임존 제거하기 request 를 받을 때 String 타입으로 받는다면 간단하게 해결 가능함 @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate contractDate; 위와 같이 데이터를 받고 있었다면 private String contractDate; 이렇게 받아서 jpql에서 조회하면 타임존이 붙지 않음 다만 jpql 쿼리문에서는 date함수를 사용해 String 타입을 Date 타입으로 변환시켜야 함 예시 코드 👇 @Query(value = "select * from order where contractDate >= DATE(:contractDate)") List getOrderList(String contractDate); 테..
[React] reactToPrint - React Component 프린트 및 PDF 저장
2023. 4. 18. 20:31
프로그래밍/React
react-to-print react component 인쇄와 pdf 저장 기능 제공 설치 방법 # npm install npm i react-to-print # yarn install yarn add react-to-print props props는 다양하지만 내가 사용한 2가지 props만 설명할 것임 사용가능한 props는 npm 공식 문서에서 확인 가능 Name Type 설명 contnet function 구성요소 참조 값을 반환하는 함수 이 참조 값의 내용을 인쇄 documentTitle String 파일로 저장할 때 인쇄할 제목 설정 사용 방법(함수형 컴포넌트) 1. import useReactToPrint 하기 import {useReactToPrint} from 'react-to-print..
[MySQL Error] GROUP BY 에러 해결 방법
2023. 4. 17. 21:40
프로그래밍/SQL
Expression of SELECT list is not in GROUP BY clause and contains nonaggregated column which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 원인 GROUP BY 컬럼 사용 시 SELECT 가능한 컬럼은 GROUP BY에 나열된 컬럼과 집계 함수(SUM, COUNT 등)만 가능 그 외에 컬럼을 SELECT 한 경우 에러 발생 해결 방법 GROUP BY 에 모든 SELECT 컬럼 적어주기
[JPA] JPA setter 사용하지 않는 이유
2023. 4. 14. 20:45
프로그래밍/JPA
JPA에서 setter를 사용하지 않는 이유 간단 정리 객체 무결성(불변성) 보장 불가 Setter 메소드를 생성하면 객체의 상태를 변경할 수 있음 그러나 JPA 엔티티는 일반적으로 불변성을 유지해야 함 이는 객체의 일관성과 무결성을 보장하고 JPA의 영속성 컨텍스트에서 오작동하는 것을 방지함 보안 문제 Setter 메소드를 사용하여 객체의 필드 값을 변경하면 보안 문제가 발생할 수 있음 예를 들어, 비밀번호와 같은 중요한 필드 값을 직접 변경할 수 있는 경우, 보안 위험에 노출될 수 있음