@ Anotación transitoria, @ org.springframework.data.annotation. Anotación transitoria, almacenamiento transitorio de palabras clave y contraseñas
Actualmente estoy aprendiendo el marco de Spring, centrándome principalmente en su módulo de seguridad. He visto algunas guías relacionadas con el registro y el inicio de sesión. Vi este uso común detransitorio palabra clave o@Transitorio anotación en el campo de contraseña en elUsuario clase.
Mi aplicación ficticia está usando Spring Boot + Spring MVC + Spring Security + MySQL.
Yo sé eso
De Javatransitorio La palabra clave se utiliza para indicar que un campo no se debe serializar.
JPA's@ Anotación transitoria...
... especifica que la propiedad oel campo no es persistente. Se utiliza para anotar una propiedad o campo de una clase de entidad, superclase asignada o clase incorporable.
y los org.springframework.data.annotation's@ Anotación transitoria ...
Marca un campo como transitorio para el marco de mapeo. Por lo tanto, lala propiedad no será persistente y no más inspeccionado por el marco de mapeo.
En mi base de datos MySQL tengo mi esquema spring_demo que tiene 3 tablas:
+-----------------------+
| Tables_in_spring_demo |
+-----------------------+
| role |
| user |
| user_role |
+-----------------------+
Cuando estoy usando eltransitorio palabra clave en el campo de contraseña en la clase Usuario, no se almacenaría en la base de datos MySQL. (ejemplo: test01)
mysql> select * from user;
+----+--------+------------------+----------+
| id | active | email | username |
+----+--------+------------------+----------+
| 1 | 1 | [email protected] | test01 |
+----+--------+------------------+----------+
1 row in set (0,00 sec)
Cuando estoy usando eljavax.persistence @Transient Anotación en el campo de contraseña en la clase Usuario, tampoco se almacenaría en la base de datos MySQL. (ejemplo: test02)
Pero ... cuando estoy usando elorg.springframework.data.annotation @Transient anotación en el campo de contraseña en la clase de usuario que almacena en la base de datos MySQL. (ejemplo: test03)¿Porqué es eso?
mysql> select * from user;
+----+--------+------------------+----------+--------------------------------------------------------------+
| id | active | email | username | password |
+----+--------+------------------+----------+--------------------------------------------------------------+
| 1 | 1 | [email protected] | test02 | |
| 2 | 1 | [email protected] | test03 | $2atransitorioUbvmdhfcKxSNr/I4CjOLtOkKGX/j4/xQfFrv3FizxwEVk6D9sAoO |
+----+--------+------------------+----------+--------------------------------------------------------------+
2 rows in set (0,00 sec)
Mis preguntas principales son, cuando uso la anotación @Transient basada en spring.data, el campo de contraseña ha persistido. ¿Por qué? ¿Y por qué debería usar cualquier anotación @Transient en un campo de contraseña?
¡Gracias por su orientación y ayuda por adelantado!