(JPA) 비밀번호 암호화에 Converter 적용해보기

bagt13·2022년 9월 26일
0

JPA

목록 보기
13/13

모든 서비스는 회원의 비밀번호를 DB에 저장할 때 암호화하여 저장한다.

비밀번호를 암호화하여 저장하는 방법 중 하나로 JPA가 지원하는 @Converter를 실험적으로 사용해보았다.


Converter란?

객체에 저장할 값과 DB에 저장할 값을 다르게 지정하고 싶을 경우 편리하게 관리할 수 있도록 jpa에서 지원해주는 기능이다.

사실 Converter는 비밀번호 암호화 뿐만 아니라 DB insert 시 다른 타입 또는 데이터로 변경하여 저장하고 싶을 경우 유용하게 사용된다.

예를 들어, boolean 타입이 DB에 저장될 때 0 또는 1인 숫자로 저장되는 경우가 있다.(DB마다 다르다)

이때, 숫자 대신 Y 또는 N으로 저장하고 싶을 경우 Converter가 유용하게 사용될 수 있다.


사용 방법

먼저 Converter 기능을 적용하고 싶은 엔티티 필드에 @Convert 어노테이션과 해당 기능을 수행하는 로직을 담고있는 Converter를 지정한다.

이때, 필드 혹은 클래스에 적용하는 두 가지 방식이 있다.

  • 필드에 적용
  • 클래스에 적용

Converter 작성

데이터 변환 로직을 수행하는 Converter 클래스를 작성한다.

Converter는 AttributeConverter를 구현해야 하며, AttributeConverter의 두 메서드를 override 하면 된다.

각각 엔티티 필드에서 DB로, DB에서 엔티티로 변환하는 메서드이다.


password 암호화



Converter 적용 확인

비밀번호 입력 시 암호화되어 저장되는 것을 확인할 수 있다.

기존에 비밀번호를 암호화하는 로직을 포함해야 했던 것 보다 편리하게 구현할 수 있으며, 코드도 깔끔해졌다.

profile
주니어 백엔드 개발자입니다😄

0개의 댓글