일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- jdbc utf8mb4
- MSSQL
- 버전 문자열 비교
- jdbc characterencoding utf8mb4
- getDateCellValue
- mysql8업그레이드
- apatch poi
- 운동해서 광명찾자
- AuditingEntityListener
- NamedEntityGraph
- https
- load order
- RootGraph
- getEntityGraph
- yml
- java jdbc utf8mb4 연결 오류
- MYSQL
- mysql =
- fractional seconds
- createEntityGraph
- 1*1000
- +9:00
- mysql equal null
- sendFractionalSeconds
- mysql not equal null
- 오블완
- spring boot
- 운영체제별 차이
- 티스토리챌린지
- Protecle
- Today
- Total
목록전체 글 (118)
Hello

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); ...

master, slave 환경의 DB를 사용하고 있어 RoutingDataSource를 구현해 readOnly일 때 slave를 바라볼 수 있도록 사용하고 있습니다. 아래처럼 otherService가 호출 되었을 때, 각각의 트랜잭션으로 동작할 것을 기대했으나 SQL Error: "1290," SQLState: HY000 에러를 만나게 되었습니다. getOne에서 열린 트랜잭션에 포함되어 save메소드가 동작해 에러가 발생한 것입니다. @Transactional은 AOP 프록시를 생성합니다. 같은 빈에서 @Transactional이 붙은 메소드를 여러개 호출 시 최초 호출 되는 메소드의 옵션으로 프록시가 생성됩니다. 아래를 코드는 readOnly 옵션으로 트랜잭션이 활성 된 후 해당 트랜잭션에 save ..

기준시간을 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() 함수 사용 시 패턴을 입력하지 않..

어떤 이벤트가 생겼을 때 client ui를 업데이트가 필요했습니다. SSE(Server-Sent-Event)라는 것을 알게 되어 이를 공부한 내용을 간략하게 작성합니다. SSE는 단방향 통신으로 서버에서 전송한 데이터를 클라이언트는 받기만 할 수 있습니다. HTTP/2(100개)를 사용하지 않으면 SSE 는 열려 있는 최대 연결 수에 대한 제한이 있습니다. HTTP를 사용할 때 브라우저당 6개로 설정 되어 있습니다. 구독 //동일 도메인 구독 const eventSource = new EventSource('/api/subscribe/sse'); //다른 도메인의 이벤트 구독, URI와 옵션 지정 const eventSource = new EventSource('//example.com/api/subs..

아래구조와 동일한 객체 조회 시 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("..

@ManyToOne 관계 매핑 시 연관 테이블의 PK가 아닌 컬럼으로 관계 매핑 설정 시 ClassCastException이 발생하게 됩니다. 에러 내용을 보면 해결 방법이 나와 있어 문제 해결 하는 방법은 간단 합니다. 연관된 엔티티 객체가 Serializable를 구현하는 것 입니다. java.lang.ClassCastException: com.example.demo.ServerInfoEntity cannot be cast to java.io.Serializable 예시 테이블을 사용해 방법과 이유에 대해 간략히 설명합니다. FK 컬럼 조인 방법 @JoinColumn 조인할 컬럼명 referencedColumnName 명시 연관 엔티티 객체가 Serializable 구현 @Entity @Table(n..

, != 같이 안음 연산자 사용 시 Null 값은 제외하고 조회 하는 것을 알게되어 간단하게 정리하려고 합니다. ,!= 같지 않음 연산자 아래 테이블을 예시로 내용을 정리해보려고합니다. 예) 2000이 아닌 레코드 조회 : 4개의 레코드가 조회 될 것을 기대했으나, id 5만 조회가 되었습니다. 방법 1 null 값에 대한 조건을 포함 조회될 수 있도록 해야합니다. 논리 연산자 우선 순위에 따라 결과값이 달라질 수 있어 ()로 조건을 묶어주는 것이 좋습니다. SELECT * FROM tb_null_test WHERE (CODE IS NULL OR CODE 2000); 방법 2 NOT, 연산자를 사용해 비교하는 방법 null-safe 동일 성비교 연산자와 not 연산자를 사용해 2000이 아닌 값(null..

Spring Data JPA @Query를 사용해 write 쿼리 작성하는 방법을 정리합니다. 짧게 이야기하면 @Query 사용해 write 쿼리를 작성 할 때 @Modifing 어노테이션이 필요합니다. @Modifying docs를 보면 @Query 어노테이션을 사용해 정의된 메서드 쿼리에서 INSERT, UPDATE, DELETE, DDL 작성 시 필요하다고 설명되어 있습니다. 아래처럼 delete 쿼리 작성 후 호출 하게 되면 '해당 쿼리는 DML 작업을 지원되지 않는 에러가 발생합니다. @Query("delete from Test1 t where t.test3 is not null") void deleteByTest3IsNotNull(); ERROR JAVA 8 org.hibernate.hql.i..