TIL

250115 수 TIL

파란배개 2025. 1. 15. 17:49

MySQL 트랜잭션 롤백과 Auto Commit

  • 트랜잭션 롤백을 사용하려면 MySQL의 Auto Commit0으로 설정해야 한다.
    • 기본적으로 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 사용 시 주의점

  1. LIKE와 CONCAT 사용
    • LIKE에서 와일드카드(%)와 변수(?)를 함께 사용할 때는 **CONCAT**을 사용하는 것이 필수적이다.

잘못된 예:

.append("WHERE content LIKE '%?%'", kw);
-- 결과: WHERE content LIKE '%'?'%' (오류 발생)

올바른 예:

.append("WHERE content LIKE CONCAT('%', ?, '%')", kw);
-- 결과: WHERE content LIKE CONCAT('%', 'kw', '%')
  1. 왜 CONCAT을 써야 할까?
    • MySQL은 단순 문자열 연결이 아닌 변수 바인딩을 통해 처리하므로, 와일드카드를 포함한 문자열 연결은 CONCAT으로 처리해야 정확한 결과를 얻을 수 있다.

정리

  1. MySQL 트랜잭션: 롤백을 위해 Auto Commit을 꺼야 한다.
  2. Java Thread: Thread.currentThread()getName()으로 현재 스레드 정보를 가져올 수 있다.
  3. MySQL LIKE: 와일드카드와 변수는 반드시 CONCAT을 사용해 연결해야 한다.

실제 구현 시에는 트랜잭션 관리와 스레드 동기화, SQL 작성 시의 정확한 구문을 신경 쓰는 것이 중요하다.