En general, ¿es una buena práctica tener clases de POJO Java simples que implementen java.io.Serializable?¿Es la implementación de java.io.Serializable incluso en las clases de POJO Java una práctica recomendada?
Respuesta
Generalmente no. Joshua Bloch dice al implement Serializable judiciously. Un resumen de los inconvenientes que se describen:
- disminuye la flexibilidad de cambiar implementación de la clase después - la forma serializada es parte de la API de la clase
- hace algunos errores y agujeros de seguridad más probable - un atacante puede acceder a partes internas de clase dentro el flujo de bytes serializados
- aumenta la carga de la prueba: ¡ahora debe probar la serialización!
- cargas autores de subclases - tienen que hacer sus subclases Serializable demasiado
Por supuesto, a veces se necesita un POJO para implementar Serializable, digamos por RMI, pero si la necesidad no está allí, el código ser más simple y más seguro sin eso.
Solo si necesita poder serializarlos. Es not worth the effort lo contrario.
Depende más de las necesidades. En el contexto de las aplicaciones web, algunos servidores web (por ejemplo, Tomcat 6) incluso obligan a serializar las clases cuyos objetos almacenamos en sesiones.
Una cosa que he hecho para abordar el hecho de que el formulario serializado no es retrocompatible (digamos cuando recargo dinámicamente una clase en un sistema en ejecución), carga los campos que quiero guardar en un hashmap y luego serializa eso . De esta forma, siempre puedo deserializar los datos, incluso si faltan campos. Es posible que deba proporcionar los valores predeterminados para las claves que faltan, pero es mejor que desordenar el orden de los campos.
- 1. ¿Es una práctica recomendada de REEMPLAZO?
- 2. Práctica recomendada para Java IPC
- 3. Práctica recomendada de Java for-loop
- 4. Práctica recomendada de implementación de cadenas de conexión ASP.NET
- 5. Implementación de ViewModel en ASP.NET MVC: ¿es este código una práctica recomendada?
- 6. Burlarse de los objetos en las pruebas JUnit: ¿práctica recomendada?
- 7. Práctica recomendada: Aplicación de licencia para la aplicación Java Desktop
- 8. ¿Es una mala práctica usar las clases de Java propietarias de Sun?
- 9. Práctica recomendada para documentar las dependencias de la biblioteca javascript
- 10. ¿Por qué arrojar una EJBException es una práctica "recomendada"?
- 11. ¿Es una buena práctica que los nombres de las clases Java sean plurales?
- 12. Práctica recomendada con Math.Pow
- 13. ¿Práctica recomendada para instalar dependencias?
- 14. Práctica recomendada para usar indicadores en el método Java
- 15. Práctica recomendada: variables estáticas no finales de Java
- 16. Transformación de XML en HTML: ¿práctica recomendada?
- 17. ¿Cuál es la implementación recomendada de Bcrypt C?
- 18. ¿Cuál es la implementación recomendada para hashing OLE variantes?
- 19. Práctica recomendada para nombrar subclases
- 20. ¿Qué es POJO & DOJO en JAVA?
- 21. Inicializando en constructores, ¿práctica recomendada?
- 22. Práctica recomendada para dependencias de bibliotecas estáticas
- 23. Práctica recomendada de diseño de formulario PHP
- 24. Partición de tuplas en Python: ¿práctica recomendada?
- 25. Práctica recomendada para configurar las propiedades de Log4j Ruta
- 26. Práctica recomendada para una aplicación con GUI
- 27. ¿Cuál es el significado de la clase java.io.Serializable?
- 28. Práctica recomendada para usar window.onload
- 29. Práctica recomendada para rutas de PHP
- 30. Práctica recomendada para recordarme característica