Spring 3

래디스(Redis)

1. Redis는 무엇일까?Redis(Remote Dictionary Server)는 메모리에 데이터를 저장하는 NoSQL 데이터베이스이다.보통 DB라고 하면 디스크에 저장하는 걸 떠올리지만, Redis는 데이터를 RAM(메모리)에 저장하기 때문에 속도가 엄청 빠르다.키(Key)와 값(Value) 형태로 데이터를 저장하는 인메모리 기반의 Key-Value Store다양한 데이터 타입을 지원 -> 단순 캐시 이상으로 활용 가능2. 왜 캐시로 Redis를 많이 쓸까?웹 서비스에서는 DB 요청이 많아지면 속도가 느려지고 서버 부하가 굉장히 심해지기 때문에,이때 자주 조회되지만 자주 바뀌지 않는 데이터를 Redis에 저장해두면,웹 서버는 DB가 아닌 Redis에서 빠르게 데이터를 가져올 수 있어서 속도 향상과 ..

BeanCopy는 편한데 왜 불안할까? 실무에서 setter로 바꾸게 된 이유

BeanCopy, 처음엔 정말 편했는데 ..서비스에서 DTO Entity 변환을 할 때,처음에는 BeanUtils.copyProperties(source, target) 같은 방식이 너무 편하게 느껴졌다.코드도 짧고, 작성도 빠르고, 당장은 문제 없어 보였다.하지만 점점 마음 한구석이 불편해진다?처음엔 편했지만, 시간이 지날 수록 이런 문제가 생기기 시작했다.어떤 값이 복사되는지 명확하지 않다.필드를 추가/삭제해도 에러가 안 나서 눈치 못 채고 버그 발생디버깅할 때 이 값 왜 들어가 있지? 같은 현상도 발생결국 복사되는 흐름이 코드에 드러나지 않다 보니,읽는 나도 헷갈리는데, 나중에 유지보수하는 사람은 더 헷갈리지 않을까? 하는 생각을 하게됐다.그래서 setter 방식으로결국 명시적으로 하나하나 설정하..

[Spring] 트랜잭션

1. Spring에서 트랜잭션 관리Spring 프레임워크에서는 @Transactional 어노테이션을 사용해 간단히 트랜잭션을 관리할 수 있다. 트랜잭션은 보통 서비스 계층에서 사용되며, 데이터베이스의 상태를 변경하는 작업을 안전하게 처리한다.@Servicepublic class ExampleService { @Transactional public void insertDatabase() { // logic }} 위 코드에서 @Transactional 을 메서드에 적용하면, 메서드가 실행되는 동안 트랜잭션이 활성화된다. 만약 메서드 내에서 예외가 발생하면 트랜잭션이 자동으로 롤백된다.2. 전파 레벨(Propagation)Spring의 트랜잭션은 다양한 전파 레벨(Propagat..

Java/Spring 2025.03.16