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

Settings -> Git -> Protected brahches 를 변경해 활성할 수 있다. protected branch는 force push가 disabled 되어 있는 이유는 해당 branch를 보호하기 위해서 이다. 예를 들어 마스터 브랜치는 언제나 검증된 코드가 올라가야 한다.이 원칙을 지키기 위해 마스터 브랜치에는 항상 올바른 커밋 혹은 머지가 되어야 할 것이다. force push를 방어하기 위해 protected branch라는 것을 마련 해 두었다.

트랜잭션 어노테이션을 작성하지 않은 메소드에서 DB호출이 있을 때 TransactionInterceptor.invoke가 호출되어 트랜잭션이 동작하는 것 처럼 보여 디버깅 해보았는데 실행되는 이유는 의외로 단순했다. Spring Data JPA(Java Persistence API)는 Spring 에서 제공하는 모듈로 JPA를 편하게 사용할 수 있도록 도와준다. 해당 모듈에서 자주 사용하는 기능을 지원하는 JpaRepository interface 를 제공하고 있다. 우리가 JpaRepository를 상속해서서 편하게 db작업을 처리할 수 있는 이유는 기본 구현체인 SimpleJpaRepository가 JpaRepository를 상속한 JpaRepositoryImplementation를 구현하고 있기 때..

a컬럼의 값이 1 일 때 b컬럼을 다른 테이블과 조인해야 하는 쿼리가 필요해 구글링하다보니 아래 블로그에서 join - on절에 case 문을 작성해 쿼리를 만드는 방법을 보고 오! 해보자! 라는 생각이 들어 테스트 해보았다. 참고 : https://ggmouse.tistory.com/143 테스트 tb_table1 tb_table2 join-on에 case문 사용하는 쿼리 SELECT a.*, b.name FROM tb_table1 a LEFT JOIN tb_table2 b ON a.code_id= case when a.code =1 then b.id END; code 값이 1일 때만 조인하는 것을 확인할 수 있다. 위 쿼리를 실제 적용 하기전에 dba분에게 신기한 쿼리가 있음을 공유하며 성능에 이슈가..

회사 github를 github cloud(GitHub Enterprise Managed User)로 이관을 하면서 기존 로컬 환경에 세팅 변경이 필요하게 되었다. 기존 github 계정은 별도로 가입했던 것으로 기억이 되는데 github cloud 이관 되면서 azure active directory(Single Sign-On)를 사용해 계정관리를 하도록 변경되어 비밀번호 인증이 아닌 authenticator앱 인증을 통해 로그인하는 형태로 변경되었다. 그래서, intellij 에서 github 계정 추가 시 Id/Pwd 형태를 사용 할 수 없게 되었다. github token을 발행해 intellij에 계정 등록 방법을 정리하고자 한다. github token 발행 1.우측 상단에 유저 이미지 클릭 ..

회사에서 DB 모니터링을 진행하고 있어 개선 해야하는 쿼리들을 공유 받았다. 그 중 조회 쿼리 개선을 요청 받은 것이 있어 몰랐던 부분을 알게되어 정리한다. CREATE TABLE `tb_test` ( `seq` INT(11) NOT NULL AUTO_INCREMENT, `string_data1` VARCHAR(50) NOT NULL COLLATE 'utf8_general_ci', `string_data2` VARCHAR(50) NOT NULL COLLATE 'utf8_general_ci', `number_data3` BIGINT(20) NOT NULL, `date` DATETIME NOT NULL, INDEX 'seq' (`seq`) USING BTREE, INDEX `date` (`date`) USI..

프로젝트 진행이 끝날 무렵 테이블 설계가 기존과 다른 부분이 생겨 erd를 수정해야 했는데 Intellij에서 Database Tools and SQL툴을 사용해 Diagram을 만들어 주는 기능이 있어 간단하게 정리하려고 작성한다.나는 MySQL로 테스트를 진행 했다. 1. 먼저 DB에 접속할 수 있도록 플러그인(Database Tools and SQL) 설치가 필요하다. 2. Shift 키를 두 번 누르면 모든 항목을 검색할 수 있는 검색 상자가 열린다. 3. 검색상자에서 Database를 검색하거나 우측 탭에서 Database탭 확인할 수 있다. 4. + 아이콘을 눌러 Data source 에서 본인이 사용하는 디비를 선택한다. 5. Data Sources and Drivers 창이 열리고 db정보..