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

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

gradle 기본 경로 : $USER_HOME \.gradle\caches\modules-2\files-2.1 ├── caches │ ├── 4.8 │ ├── 4.9 │ ├── ⋮ │ ├── jars-3 │ └── modules-2 ... 공식 홈페이지를 보면 modules-2에 공유 캐시( ex: 종속성 아티팩트 )로 구성된다는 내용이 있습니다. gradle 캐시 위치는 GRADLE_USER_HOME 환경 변수 값에 따라 다릅니다. gradle home을 변경해, 변경된 gradle home 기준으로 \.gradle\caches\modules-2\files-2.1에 생성되게 됩니다. + maven 기본 경로 : ~\.m2\repository intellij 수정 방법 1) Override 체크 후 lo..
자바에서 점으로된 문자열 비교해 소팅이 필요한 경우가 생겨 maven-artifact 라이브러리를 사용한 내용을 정리하려고 합니다. maven denpendency org.apache.maven maven-artifact 3.9.6 version compare test code public class VersionCompareTest { @Test void version_compare_test() { List list = new ArrayList(); for (int i = 0; i < 100; i++) { Test1 test1 = new Test1(); test1.setSeq(i + 1000); test1.setName("slot" + i); test1.setVersion((i / 50) + "." +..
Auditing는 '감사하다' 의미를 갖고 있습니다. 엔티티의 시간 데이터가 변경돨 때마다 입력/수정 코드를 구현해야한다. 하지만, JPA Auditing를 사용해 공통으로 처리할 수 있습니다. 1. 표준 JPA를 사용해 구현하는 방법 2. Spring Data JPA를 사용해 구현하는 방법 표준 JPA를 사용 JPA에는 Auditing(감사) API가 명시적으로 포함되어 있지 않지만, 엔터티 수명 주기 이벤트를 사용하여 이 기능을 구현할 수 있습니다. + https://www.baeldung.com/jpa-entity-lifecycle-events @PrePersist, @PreUpdate 등 jpa 엔티티 수명 주기 이벤트를 목적에 맞게 사용할 수 있습니다. 콜백 메서드는 항상 void를 반환해야 하..

모던 자바 인 액션 10장 람다를 이용한 도메인 전용 언어(DSL)에서 Jooq를 알게되어 공부한 내용을 정리해보려고 합니다. DSL(Domain Specific Language) 이란 특정 영역에 특화된 언어를 말합니다. 내부 DSL : DSL 코드와 범용 코드를 동일한 프로그램 파일에 혼합하는 것으로, 예를 들어 자바로 구현한 DSL을 내부 DSL 이라고 할 수 있습니다. ex) QueryDSL, Jooq (자바 SQL DSL) 외부 DSL : 프로젝트에 DSL 추가. DSL 코드와 일반 코드를 별도의 파일에 보관하는 것으로, DSL 코드는 자동 코드 생성기를 통해 프로그래밍 언어 코드로 변환되거나 해당 생성기에 도메인별 코드로 로드되어 실행됩니다. ex) SQL Jooq(Java Object Ori..
예전에 redis pub기능을 사용했는데 오늘 pub / sub 사용하는 방법을 간단히 정리하려고 한다. Redis Publish/Subscribe - 특정 subscribe에게 메시지를 보내는 개념이 아니며 구독자 있는지, 없는지, 누구인지 알지 못한 채 채널로 메시지를 publish 합니다. - 푸시된 메시지를 따로 보관하지 않는다. - 구독자가 메세지를 받는 것을 보장하지 않아, subscribe 대상이 없는 상황에서 메시지를 publish하면 메시지는 publish 되고 보낼 곳이 없어 버려진다. 전송 보장을 하지 않는다. spring-boot-starter-data-redis dependency를 사용해 redis pub/sub 하는 방법 RedisAutoConfigration 에서 자동으로 R..

ajax 통신 할 때 json 구조를 사용하는 경우가 자주 있다 이때, string to enum, string to date, number to boolean 등 데이터 타입 변환이 필요한 경우가 있습니다. 이 때 상황에 따라 개발자는 custon serializer, deserializer를 작성해서 사용할 수 있습니다. pom.xml com.fasterxml.jackson.core jackson-databind 아래 abstract class를 구현해 사용할 수 있습니다. com.fasterxml.jackson.databind.JsonSerializer com.fasterxml.jackson.databind.JsonDeserializer number to boolean 예시 Serializer im..
Java8 기준 MultipartFile을 받아 InputStream으로 문자열로 변환하는 방법을 정리 1. InputStream의 read()를 사용해 문자열로 변환하는 방법 -available() 현재 읽을 수 있는 바이트 수 -read(byte[]) byte[]만큼의 데이터를 읽어서 매개변수에 저장하고 읽은 바이트 수 반환 private String readFileToContents(MultipartFile file) throws IOException { try (InputStream is = file.getInputStream()) { byte[] buf = new byte[is.available()]; int read = is.read(buf); return new String(buf, 0, r..

Blob 작업을 처리한 후 관련해서 업데이트 된 내용이 있는지 확인해 보았는데 Azure SDK V12가 지원되는 것을 알게되었다. V12 업그레이드 된 이유는 링크를 달아 두었으니 확인해 보면 될 것 같다. 나는 V8을 사용하고 있어 V12 내용을 확인하며 기존에 사용하던 방법과 다른 점에 대해서 간단히 정리하려고한다. dependency v8 v12 com.microsoft.azure azure-storage 8.4.0 com.azure azure-storage-blob 12.0.0 package v8 v12 com.microsoft.azure.storage com.azure.storage.blob 변경된 핵심 클래스 기존 동기 클래스가 변경 되었으며, 비동기 클래스가 추가됨. 연결문자열 구성 V8 ..

서킷 브레이커 란 예상치 못한 장애(네크워크 이슈, 서버 다운 등)가 발생해 어떤 원격 서버 하나가 요청에 응답하지 못하는 상태일 때 클라이언트는 Timeout이 될 때 까지 응답을 기다리거나 무의미한 요청을 보내며 자원을 낭비하게 될 것입니다. MSA(Microservice Architecture)에서는 이 클라이언트가 또 다른 누군가의 서버가 될 수도 있는데요. 그렇다면 이 서버의 클라이언트 역시 똑같은 문제를 겪게 될 것입니다. 이렇게 장애가 계속 전파되며 한 원격 서버에서 발생한 장애가 모든 시스템에 큰 영향을 줄 수 있습니다. 이런 문제를 해결하기 위해 등장한 개념이 바로 '서킷 브레이커(circuit breaker)'입니다. 서킷 브레이커 패턴은 Michael Nygard의 저서 Release..