N° 01 — 목록
'transaction' (2)
-
Backend Development/SpringSpring - 09. transaction
@Transactional이 rollback하지 않는 예외 — 트랜잭션 관리의 함정@Servicepublic class TransferService { @Transactional public void transfer(Long from, Long to, long amount) { accountRepository.withdraw(from, amount); try { externalService.notify(to); // 외부 API 호출 실패 } catch (Exception e) { log.warn("알림 실패", e); // 예외를 잡아서 처리함 } accountRepositor..
-
Backend Development/JavaJava - 21. jdbc
Statement와 PreparedStatement의 차이가 SQL Injection을 막는 이유 — JDBC 기초// Java 25 — 위험: SQL Injection 취약Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery( "SELECT * FROM users WHERE name = '" + userInput + "'");// userInput = "'; DROP TABLE users; --" → 테이블 삭제!이 코드를 작성한 개발자는 악의가 없었다. 그냥 문자열을 연결했을 뿐이다. 하지만 공격자가 '; DROP TABLE users; --를 입력하면 SQL 문이 두 개로 나뉘어 실행된다. PreparedStateme..