TIL
250115 수 TIL
파란배개
2025. 1. 15. 17:49
MySQL 트랜잭션 롤백과 Auto Commit
- 트랜잭션 롤백을 사용하려면 MySQL의 Auto Commit을 0으로 설정해야 한다.
- 기본적으로 MySQL은 Auto Commit이 활성화되어 있으므로, 트랜잭션 관리를 위해 명시적으로 끄는 것이 필요하다.
SET autocommit = 0;
Java Thread 관련 개념
- Thread.currentThread(): 현재 실행 중인 스레드 객체를 반환한다.
- Thread.currentThread().getName(): 현재 스레드 객체의 이름을 문자열로 반환한다.
- **스레드(Thread)**란?
- 프로그램 내에서 실행되는 독립적인 실행 흐름.
- 동시에 여러 작업을 수행할 때 사용된다.
- Java의 Thread 클래스는 스레드를 생성하고 관리하기 위한 기능을 제공한다.
예시 코드:
String currentThreadName = Thread.currentThread().getName();
System.out.println("현재 스레드 이름: " + currentThreadName);
MySQL LIKE 사용 시 주의점
- LIKE와 CONCAT 사용
- LIKE에서 와일드카드(%)와 변수(?)를 함께 사용할 때는 **CONCAT**을 사용하는 것이 필수적이다.
잘못된 예:
.append("WHERE content LIKE '%?%'", kw);
-- 결과: WHERE content LIKE '%'?'%' (오류 발생)
올바른 예:
.append("WHERE content LIKE CONCAT('%', ?, '%')", kw);
-- 결과: WHERE content LIKE CONCAT('%', 'kw', '%')
- 왜 CONCAT을 써야 할까?
- MySQL은 단순 문자열 연결이 아닌 변수 바인딩을 통해 처리하므로, 와일드카드를 포함한 문자열 연결은 CONCAT으로 처리해야 정확한 결과를 얻을 수 있다.
정리
- MySQL 트랜잭션: 롤백을 위해 Auto Commit을 꺼야 한다.
- Java Thread: Thread.currentThread()와 getName()으로 현재 스레드 정보를 가져올 수 있다.
- MySQL LIKE: 와일드카드와 변수는 반드시 CONCAT을 사용해 연결해야 한다.
실제 구현 시에는 트랜잭션 관리와 스레드 동기화, SQL 작성 시의 정확한 구문을 신경 쓰는 것이 중요하다.