일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- NamedEntityGraph
- java jdbc utf8mb4 연결 오류
- yml
- fractional seconds
- Protecle
- spring boot
- mysql =
- AuditingEntityListener
- RootGraph
- MSSQL
- 운동해서 광명찾자
- 버전 문자열 비교
- mysql8업그레이드
- mysql equal null
- createEntityGraph
- 티스토리챌린지
- mysql not equal null
- sendFractionalSeconds
- +9:00
- getEntityGraph
- https
- jdbc utf8mb4
- MYSQL
- getDateCellValue
- load order
- 운영체제별 차이
- 1*1000
- 오블완
- apatch poi
- jdbc characterencoding utf8mb4
- Today
- Total
목록java (22)
Hello
MySQL 5.x 버전의 지원 종료로 8버전으로 업그레이드를 진행하게 되었습니다.기존에 JDBC characterEncoding 옵션을 utf8로 사용하고 있었으나, 관련 문서에서 utf8mb4를 사용해야 한다는 내용을 확인하고, 이를 변경한 후 발생한 에러를 해결하기 위한 과정에서 characterEncoding 옵션과 관련한 내용을 정리합니다. 1. JDBC 연결 문자열 옵션 변경 (utf8 → utf8mb4) 기존 : ?useUnicode=true&characterEncoding=utf8변경 : ?useUnicode=true&characterEncoding=utf8mb42. 런타임 에러 발생utf8mb4를 지원하지 않는다는 에러 발생Caused by: com.mysql.cj.exceptions.Wr..
데이터를 그룹핑 해 그룹핑된 값으로 정렬한 후 다른 컬럼으로 정렬하는 방법 정리 ex) 학생 객체를 Grade별로 그룹화하고 정렬한 후 나이 기준으로 정렬하기 처음 작성한 코드Comparator.comparing((Person y) -> y.getGrade().getCode()).reversed()처럼 Grade로 정렬하려는 시도는, groupingBy에서 반환되는 Map 자체를 정렬하는 방법에 맞지 않습니다.groupingBy는 Map을 반환하므로 내부 요소들을 정렬하는 데 TreeMap을 활용해야 하는데 아래 코드는 그룹화 된 요소들을 정렬하는 것으로 의도대로 동작하지 않는 코드였습니다.list.stream().collect(Collectors.groupingBy(Person::getGrade, ..
구분자가 0이거나 0이 아니거나를 구분자로 사용해야하는 경우 @DiscriminatorValue(“not null”)를 사용해 처리한 내용을 작성하려고 합니다.상속 매핑(Inheritance Mapping)은 상속 구조를 데이터베이스 테이블에 매핑하는 방법을 제공합니다.@DiscriminatorValue(“not null”) 는 null이 아니면서 지원되지 않는 판별자 값의 경우, 명시적으로 매핑되지 않은 모든 값을 처리 경우 이 주석이 있는 클래스에 매핑됩니다.예시)@Entity@Inheritance(strategy = InheritanceType.SINGLE_TABLE)@DiscriminatorColumn(name = "targetCount")public abstract class Event { ..
ORM을 사용하면서 Subquery를 사용할 일이 있을까 생각했는데 필요한 경우가 생겨 Subquery 적용했던 내용을 정리 하려고 합니다. Subquery가 필요했던 이유는 집합 값이 필요했기 때문입니다. queryDsl에서 Subquery를 사용하는 방법은 간단합니다. JPAExpressions를 통해 결과 값 하나를 반환하는 쿼리를 작성합니다. 그리고 select 또는 where 중 필요한 구문에서 적용해 사용할 수 있습니다. SelectJPQLQuery questMaxSubquery = JPAExpressions .select(qQuest.complete.max()) .from(qQuest) .where(qQuest.id.eq(qUserQUest.quest.i..
문득 instanceof 할때 null 체크를 하고 비교해야하는지 궁금해서 알아보았습니다. java11 오라클 문서에서 확인할 수 있습니다.연산자의 RelationalExpression 피연산자 유형은 instanceof참조 유형이거나 null 유형이어야 합니다. 그렇지 않으면 컴파일 시간 오류가 발생합니다. null instanceof Class 비교 시 결과는 false입니다. instanceof 연산자를 사용할 때 null 확인 필요하지 않습니다. 참고 : https://stackoverflow.com/questions/2950319/is-null-check-needed-before-calling-instanceofhttps://docs.oracle.com/javase/specs/jls/se11..

Keytool를 사용해 Keysotre 생성 참고 Protecle를 사용해 Keystore 생성 다운로드 경로 : https://sourceforge.net/projects/portecle/ 설치 후 protecle.jar 실행 File -> New Keystore... Generate Key Pare 미리 선택된 Algorithm : RSA, Key Size : 2048 사용 Common Name에 도메인을 입력 후 OK Key Pair Entry Alias 팝업에 개인 키에 대해 선택한 별칭을 지정 별칭은 SSL 인증서를 이 키 저장소로 다시 가져올 때 사용됩니다. 비밀번호 입력 후 OK 키 생성 완료 저장 하기! java 테스트 생성한 keysotre(jjin-keystore) 프로젝트 resour..
밀리초 시간 단위를 변환할 때 아래처럼 작성했었다. private final long TIMEOUT_LIMIT = 60 * 1000 * 30L; //30분 자바에서 명시적으로 표현가능한 TimeUnit을 공유 받게 되어 사용해 보았다. private final long TIMEOUT_LIMIT = TimeUnit.MINUTES.toMillis(30); 위 두 코드는 동일한 값을 가진다. TimeUnit 는 시간 단위 간에 변환하고 이러한 단위에서 타이밍 및 지연 작업을 수행하는 유틸리티 메서드를 제공합니다. 다양한 시간 표현을 명시적으로 작성할 수 있다. TimeUnit.MINUTES.toSeconds(30); TimeUnit.HOURS.toMinutes(3); ...

기준시간을 UTC로 사용하고 사용자가 설정한 타임존에 맞춰 시간을 표시하고 처리가 필요했다. ZonedDateTime, moment-timezone js 를 사용해 서버-클라이언트 처리한 내용을 간단하게 정리하려고 함. ZonedDateTime은 날짜-시간과 시간대 값을 가진 객체이다. ex) 2021-08-01T00:00+09:00[Asia/Seoul] 타임존 서버 : UTC 클라이언트 : 개별 타임존 시간 포맷은 'YYYY-MM-DDTHH:mm:ssZ' 사용. 클라이언트 -> 서버 클라이언트 클라이언트가 로드 될 때 설정한 타임존을 moment default timezone 설정 선택한 날짜-시간 값을 moment-timezone을 사용해 타임존 적용 format() 함수 사용 시 패턴을 입력하지 않..

아래구조와 동일한 객체 조회 시 lazy 로 동작해 n+1이 발생했다. 특정 쿼리문에서만 join을 사용해 관련된 테이블을 모두 조회해야할 필요가 있어, EntityGraph를 사용해 해결한 방법을 정리하고자 글을 작성합니다. 어떤 게임에서 건축물을 지을 때 해당 건축물은 여러 옵션을 갖고 있다. 건축물은 옵션을 가지며, 옵션은 실제 효과를 여러개 가질 수 있다. 옵션과 효과 객체를 n:m 매핑 테이블을 만들어 사용이 필요하다. Building 조회시 Option, OptionEffect, Effect를 가진 join 쿼리 적용 방법 @NamedEntityGraph 정의 @Entity @Table(name = "tb_building") @NamedEntityGraph(name = "building.opt..

유니크 컬럼에 중복값을 넣으려고 할 때, DataIntegrityViolationException이 발생해 db호출이 일어나는 메소드에서 Exception을 잡아 IllegalArgumentException으로 감싸 넘기려고 했는데 캐치 되지 않고 해당 에러가 리턴되었다. @Transactional public void addMemberPhone(MemberPhoneRequest memberPhone) { MemberPhone memberPhone = new MemberPhone(); ... try{ memberPhoneRepo.save(memberPhone); }catch (DataIntegrityViolationException e){ throw new IllegalArgumentException("..