본문 바로가기

DB24

[MyBatis] selectKey로 다중 컬럼 값 가져오기 들어가기 전에 JPA에서는 save() 메소드를 호출하면 생성된 객체를 반환해 주는데 MyBatis는 그런 기능이 따로 없다. 그러면 어떻게 구현하면 insert문이 실행되고 저장된 객체 정보를 가져올 수 있을까 고민하다가 selectKey를 사용하게 됐다. 프로젝트에서 어떻게 적용했는지 남겨보고자 한다. selectKey insert문이 실행되기 전, 후에 원하는 컬럼 값을 가지고 올 수 있는 태그이다. 아래처럼 insert 태그 내부에 원하는 속성들을 지정해서 가져오고 싶은 값을 가져온다. -- 출처 : https://mybatis.org/mybatis-3/sqlmap-xml.html select CAST(RANDOM()*1000000 as INTEGER) a from SYSIBM.SYSDUMMY1 .. 2023. 5. 30.
[MyBatis] BindingException 해결 (feat. IntelliJ Gradle 설정) Step 0. 상황 평소와 같이 Postman으로 간단한 테스트를 하기 위해 로그인 API로 요청을 보냈다. 로그인 API에 웬 401이지 하면서 콘솔 창을 보니 BindingException이 발생하고 있었다. Step 1. 원인 @Param 없이도 이때까지 잘 작동하고 있었는데 왜 갑자기 BindingException이 발생하는 걸까 생각하며 열심히 구글링을 했는데 다행히도 바로 원인을 찾을 수 있었다. 갑자기 IntelliJ 속도가 너무 느려져서 설정 값을 건드리다가 예전에 아래 박스 내에 있는 값을 Gradle 대신 IntelliJ IDEA로 선택하면 속도가 빨라진다는 이야기를 들었어서 변경했었는데 이게 문제였다. Gradle을 사용하면 자동으로 Binding을 해주는데 IntelliJ IDEA를.. 2023. 5. 29.
[MySQL] com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure Step 0. 상황 아래와 같이 데이터베이스 정보를 설정했는데 jdbc communication 예외가 발생했다. spring: datasource: driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy url: jdbc:log4jdbc:mysql://[HOST]:[PORT]/[데이터베이스명] username: [USERNAME] password: [PASSWORD] com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver.. 2023. 3. 31.
[MySQL] SQL state [HY000]; error code [1366]; Incorrect string value Step 0. 상황 회원 가입 기능을 구현하기 위해서 필요한 정보들을 입력하고 요청을 전송했는데 아래와 같은 에러가 발생했다. SQL state [HY000]; error code [1366]; Incorrect string value: '\xEA\xB9\x80\xEC\xBD\x94' ... Step 1. 원인 테이블을 생성할 때 인코딩 설정을 해주지 않아서 발생한 문제였다. 데이터베이스 인코딩 확인 SELECT default_character_set_name, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE schema_name = '[데이터베이스명]'; 테이블 인코딩 확인 SELECT TABLE_COLLATION FROM INFORMATI.. 2023. 3. 31.
[MyBatis] MyBatis 설정과 log4jdbc-log4j2 적용기 들어가기 전에 이번에 프로젝트를 본격적으로 시작하면서 MyBatis 설정을 끝냈는데 혹시나 다음 번에 설정해야 할 일이 있을 때 내가 정리한 문서를 참고하기 위해서 기록해 보기로 했다. log4jdbc-log4j2도 처음 알게 된 라이브러리인데 도움이 될 것 같아서 같이 정리하려고 한다. log4jdbc-log4j2 Log4jdbc-log4j2 This project was imported from https://code.google.com/archive/p/log4jdbc-log4j2/ Original License: Apache License 2.0 log4jdbc-log4j2 is a modification of log4jdbc to natively use Log4j 2 (or SLF4J as us.. 2023. 3. 31.
[DB] JOIN 알고리즘과 성능에 대하여 들어가기 전에 우리는 결합의 결과를 도출해 내기 위해 간단히 JOIN 연산을 사용했다. 그렇다면 DBMS 내부에서는 어떻게 이 JOIN 연산을 처리하게 되는 것일까? JOIN 연산을 수행할 때 내부적으로 선택되는 알고리즘에 대해 알아보자. Nested Loops Join Hash Join Sort Merge Join 위의 세 가지 알고리즘은 옵티마이저가 선택 가능한 알고리즘들인데 모든 DBMS가 지원하는 것은 아니다. MySQL의 경우에는 8.0.18 버전 이전에는 Nested Loops와 이를 변형한 알고리즘들만을 지원했는데 8.0.18 버전 이후부터는 Hash Join을 지원하기 시작했다. Prior to MySQL 8.0.18, this algorithm was applied for equi-joi.. 2023. 3. 15.