일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- fractional seconds
- deserializer
- 운동해서 광명찾자
- EmbeddedId
- createEntityGraph
- @EntityListeners
- 버전 문자열 비교
- MYSQL
- +9:00
- getDateCellValue
- load order
- mysql =
- spring boot
- Protecle
- yml
- RootGraph
- pooled-lo
- https
- 오블완
- MSSQL
- @CreateDate
- getEntityGraph
- sendFractionalSeconds
- 1*1000
- mysql equal null
- AuditingEntityListener
- NamedEntityGraph
- 티스토리챌린지
- apatch poi
- mysql not equal null
- Today
- Total
목록분류 전체보기 (95)
Hello
이전글에 properties 와 yaml을 비교하는 글을 작성했는데 그중 yaml 파일에 여러개 profile 을 하나의 파일에 작성가능한 기능이 있어 이를 테스트 해보고 적용하려고 합니다. .yml spring: datasource: driver-class-name: com.mysql.jdbc.Driver username: 4ones url: jdbc:mysql://127.0.0.1:3306/test_db password: qwerasdfzxcv server: name: a_server port: '9090' --- spring: config: activate: on-profile: test logging: level: org: hibernate: debug name: test-YAML abc: cli..
Spring Boot는 설정을 application.properties 또는 application.yml 파일을 통해 작성합니다. Intellij에서 Spring Initializr project를 만들면 application.properties가 기본 생성됩니다. 설정 관련 검색을 하면서 yml을 사용한 내용이 많이 보였습니다. 최근에 많은 사람이 yml을 사용하며 편리하다는 의견이 많아 인기있는 이유와 이 둘의 차이를 정리 해보려고 합니다. .yml 예제 spring: datasource: driver-class-name: com.mysql.jdbc.Driver username: test url: jdbc:mysql://127.0.0.1:3306/test_db password: test1234 log..
예전에 다중 서버 환경 스케쥴 처리 시 spring schedule를 사용해 중복실행되지 않도록 처리했습니다. 오늘 schedule에서 SQLException이 발생해 확인 요청을 받아 서버에 파일로그를 확인했는데 에러가 없어 try{}catch()문으로 포장해 에러를 남기도록 했는데도 따로 에러 로그는 확인되지 않았습니다. Azure Insight 에서 확인된 에러라 Insight를 보니 아래 이미지 정보를 제공했습니다. 1 ) 아래 이미지에서 응답을 보면 200으로 호출이 성공한 것을 알 수 있습니다. 2 ) 실행 요청 내에서 일어나는 db 호출에 대한 로깅을 다 남겨주는 것을 알 수 있습니다. 3 ) 첫번째 db 호출이 EXCEPTION이 빨간색으로 표시되어 이슈가 있음을 알 수 있습니다. -- 오..
TABLE 전략 사용 테스트 기술 스택 java 8 hibernate 5 이 방법을 사용해본적이 없어서 위 과정을 알아보다 어떻게 동작하는지 궁금해져서 테스트해보았습니다. table을 생성해 sequence처럼 동작한다고 설명되어 있어 시작 값 : 1, 증가 값 : 50 을 가질 때, A server : db update 50 using value [1~50] B server : db update 100 using value [51-100] 처럼 동작할 것으로 기대 했는데 예상과 다르게 동작 했다. test case 1) A 호출 -> B 호출 -> A 호출 -> B호출 pk 관리 테이블 데이터 테이블 - date_end를 보면 3번이 7보다 늦게 생성되었다. - a서버가 1-5을 b서버가 6-10을 사..
GenerationType.enum JPA는 기본키 생성 전략의 타입을 정의한 enum을 제공합니다. AUTO(default) JPA 제공자가 DB에 대해 적절한 전략을 선택 IDENTITY 데이터베이스 auto-increment 의존 JPA는 insert를 수행한 후 또는 트랜잭션 커밋 시 기본 키 값을 할당 MySQL, SQL Server, PostgreSQL, DB2, Derby, Sybase 지원 SEQUENCE 데이터베이스 SEQUENCE 를 사용해 기본키 생성 트랜잭션 커밋 되고 EntityManager.persist() 호출 후에 기본키를 생성 Oracle, PostgreSQL, DB2 지원 TABLE 키 생성 관리 테이블을 만들어서 SEQUENCE처럼 사용 EntityManager.pers..
MySql 에서 소수초를 사용하지 않는 시간 데이터 타입의 경우 LocalTime.MAX 시간으로 데이터 생성 시 다음날 00:00:00 로 저장되는 이슈가 있었고 초 단위 이하 값을 다루지 않는 데이터였기에 23:59:59 로 저장하도록 수정 대응한적이 있습니다. ex ) 2023-09-05 23:59:59.999... -> 2023-09-06 00:00:00 또한, LocalDateTime.now()를 사용하는 경우 현재 날짜 시간을 생성하기 때문에 소수초가 반올림 될 수도 있습니다. ex) 2023-09-05 13:13:45.584668789 -> 아래 이미지 소수 초를 쓰는 데이터 타입의 경우 값에 따라 소수 초단위 or 초단위로 반올림 될 수 있고, 소수 초를 쓰지 않는 데이터 타입의 경우 초 ..
어플리케이션에서 db 연결을 위해 datasource 작성 시 jdbc driver를 선택합니다. MySql의 경우 com.mysql.cj.jdbc.Driver, com.mysql.jdbc.Driver 둘 중 하나를 사용합니다. 이 둘의 차이는 사용하는 MySql connector의 버전입니다. Connector/J 5.x : com.mysql.jdbc.Driver Connector/J 8.x : com.mysql.cj.jdbc.Driver 아래 공식 문서를 확인하면 버전이 변경되며 클래스 및 인터페이스 명칭 변경 된 것을 확인할 수 있습니다. 참고 : https://dev.mysql.com/doc/connector-j/8.1/en/connector-j-api-changes.html
회사에서 동료분이 MySql datetime 처리 시 소수점 시간이 반올림된다는 내용을 공유해주셨습니다. 그래서 공식문서를 보며 테이블을 만들고 테스트한 내용을 기록하고자 글을 작성합니다. 공식문서를 보면 Mysql은 6자리의 소수 초(microSecond)를 time, datetime,timestamp 데이터 타입 사용시 지원한다고 명시되어있습니다. 아래 작성 부터는 소수초를 ms라고 칭하겠습니다. ms 설정은 0~6 범위 내의 값이어야하고, 0은 ms 없음을 의미하고, 생략하면 ms는 0입니다. 아래 쿼리에서 date_start는 ms 사용 X, date_end는 ms 6자리를 사용하도록 작성했습니다. CREATE TABLE `tb_test` ( `date_start` DATETIME NOT NULL..
간단한 검색이 필요한 API를 만들어야했는데, 쿼리 메서드를 사용해 작성하게 되면 서비스 코드에 if의 향연이 펼쳐 질 것 제외 했다. 그리고 프로젝트 규모가 너무 작아 Querydsl 사용하기 보다는 Srping Data JPA의 Specification을 사용해 보았습니다. Specification은 JPA Criteria를 활용해 조회 쿼리를 작성 하도록 지원합니다. Specification 사용 방법 public interface NoticeRepo extends JpaRepository, JpaSpecificationExecutor { } 기존에 사용하던 Repository에 JpaSpecificationExecutor 를 상속합니다. JpaSpecificationExecutor 는 조회 기능만..
Intellij에서 gradle 빌드 및 테스트 코드 실행 실패가 발생했다. - 테스트 코드 실패 에러 에러내용을 확인해보면 ClassNotFoundException이 발생한 것으로 확인되어 머리가 복잡했다. 분명 해당 테스트 클래스의 테스트를 실행했는데 class를 찾을 수 없다니 이해가 안되었다. 프로젝트를 실행해보면 프로젝트는 정상 작동했다. 테스트만 안되는 것이었다. - gradle 빌드 실패 에러 아래 이미지에 html에서 실패 이유를 확인 할 수 있도록해 해당 html에서 확인을 해보니 TestSuiteExecutionException 발생한 것을 알 수 있었다. 해결 방법 settings -> gradle을 확인해보니, Build and Run 부분이 Gradle로 셋팅된 것을 확인할 수 있..