BCryptPasswordEncoder는 Spring Security 프레임워크에서 제공하는 비밀번호 인코딩 및 해싱을 위한 클래스입니다. 이 클래스는 BCrypt 해시 함수를 사용하여 비밀번호를 안전하게 암호화합니다. BCryptPasswordEncoder를 사용하면 암호화된 비밀번호를 생성할 수 있으며, 생성된 암호화된 비밀번호는 암호 해독이 어렵기 때문에 보안성이 높습니다. 이는 사용자 비밀번호를 저장할 때 보안을 강화하고, 무단 액세스로부터 보호하기 위해 많이 사용됩니다.
2. DelegatingPasswordEncoder 방식
DelegatingPasswordEncoder는 Spring Security에서 제공하는 비밀번호 인코딩 및 해싱을 위한 클래스입니다. 이 클래스는 하나 이상의 PasswordEncoder를 사용하여 비밀번호를 암호화합니다. 주로 여러 가지 비밀번호 해싱 알고리즘을 지원하고자 할 때 사용됩니다.
- 왜 service 계층에서 다시 controller 계층으로 Entity 자체를 넘기는 행위를 지양 해야하는가?
GPT 답변
Lazy Loading 문제: Entity는 연관된 다른 Entity를 가지고 있을 수 있습니다. 이 경우, Controller에서 Entity를 반환하면 JSON으로 직렬화할 때 Lazy Loading 문제가 발생할 수 있습니다. 이는 연관된 객체를 가져오기 위해 추가적인 데이터베이스 쿼리가 발생할 수 있으며, 이는 성능에 부정적인 영향을 줄 수 있습니다.
API 설계의 일관성: Entity는 데이터베이스 스키마를 나타내는데 사용되므로 API 응답의 형태로 적합하지 않을 수 있습니다. 또한 Entity는 비즈니스 로직을 담지 않고 있는 경우가 많으므로 API의 일관성을 유지하기 어려울 수 있습니다.