Saludos, estoy comenzando a escribir una aplicación Swing con JPA. Es mi proyecto de fin de carrera, pero hace 20 años que salí de la universidad (sí, los GoF aún no habían publicado su trabajo sobre patrones de diseño, no os digo más) y no trabajo en IT, de manera que no estoy muy al día de las tecnologías y, sobre todo, no conozco los "glitches" de las soluciones que sí conocen quienes las usan a diario. He preguntado esto mismo en la lista de usuarios de NetBeans, pero creo que el tema se ha dispersado (escribí un mensaje demasiado largo), así que trataré de ser directo y conciso. :-)
1) Quiero intentar no cocinar cosas que ya existen y funcionan, como por ejemplo la sincronización entre la base de datos (uso JPA) y los elementos de la interfaz de usuario, de momento en el diálogo CRUD para tablas básicas. NetBeans ofrece Beans Binding usando el JSR-295, que está cancelado por su grupo de trabajo. Sólo he encontrado dos alternativas: jGoodies binding y cocinar a mano la sincronización con PropertyChangeSupport. Obviamente, lo más cómodo es NetBeans Beans Binding, pero me preocupa que una próxima versión retire la compatibilidad con JSR-295 y me encuentre formularios que no puedo abrir, como ya pasó con JSR-296 (Swing Application Framework). ¿Qué recomendaríais basándoos en vuestra experiencia? Como pregunta de sobremesa y café, ¿por qué algunos JSR que parecen realmente útiles avanzan hasta un 90 % y, por no encontrar un consenso sobre el 10 % restante, se tiran abajo del todo en lugar de prescindir de ese 10 %?
2) El propio uso de NetBeans con Beans Binding me plantea algún problema que parece ser de la herramienta o de insuficiente documentación (he leído [1] y la mayor parte de [2]). ¿Alguien ha usado esa funcionalidad de NetBeans y le suena haber encontrado algo parecido? Específicamente encuentro problemas con un JComboBox que muestra un campo de una tabla que es clave externa de otra tabla. El diálogo Swing muestra un JTable con la tabla de la que se quiere hacer el CRUD, con campos JTextField y un JComboBox que muestran y permiten editar los datos de la fila seleccionada del JTable, cuyo modelo a su vez lee y guarda datos en una tabla de la base de datos.
3) El código JPA que genera NetBeans me desconcierta. :-) Inicia una transacción al abrir el diálogo y la cierra y abre una nueva cada vez que se hacen actualizaciones en la tabla o se refresca el contenido de ésta. No sé si el concepto de transacciones en JPA es radicalmente diferente del de SQL o es que la cosa ha cambiado mucho desde que yo estudié, pero siempre he pensado que las transacciones deberían ser lo más cortas posible y tratar de no involucrar nunca E/S con el usuario para reducir las posibilidades de conflictos con otras instancias que estén accediendo a la base de datos. Vale, esta es una aplicación de escritorio con Derby y, realmente, no tengo pensados accesos concurrentes, pero aun así, ¿no es un poco heterodoxo lo que hace NetBeans?
Saludos, estoy comenzando a escribir una aplicación Swing con JPA. Es mi proyecto de fin de carrera, pero hace 20 años que salí de la universidad (sí, los GoF aún no habían publicado su trabajo sobre patrones de diseño, no os digo más) y no trabajo en IT, de manera que no estoy muy al día de las tecnologías y, sobre todo, no conozco los "glitches" de las soluciones que sí conocen quienes las usan a diario. He preguntado esto mismo en la lista de usuarios de NetBeans, pero creo que el tema se ha dispersado (escribí un mensaje demasiado largo), así que trataré de ser directo y conciso. :-)
1) Quiero intentar no cocinar cosas que ya existen y funcionan, como por ejemplo la sincronización entre la base de datos (uso JPA) y los elementos de la interfaz de usuario, de momento en el diálogo CRUD para tablas básicas. NetBeans ofrece Beans Binding usando el JSR-295, que está cancelado por su grupo de trabajo. Sólo he encontrado dos alternativas: jGoodies binding y cocinar a mano la sincronización con PropertyChangeSupport. Obviamente, lo más cómodo es NetBeans Beans Binding, pero me preocupa que una próxima versión retire la compatibilidad con JSR-295 y me encuentre formularios que no puedo abrir, como ya pasó con JSR-296 (Swing Application Framework). ¿Qué recomendaríais basándoos en vuestra experiencia? Como pregunta de sobremesa y café, ¿por qué algunos JSR que parecen realmente útiles avanzan hasta un 90 % y, por no encontrar un consenso sobre el 10 % restante, se tiran abajo del todo en lugar de prescindir de ese 10 %?
2) El propio uso de NetBeans con Beans Binding me plantea algún problema que parece ser de la herramienta o de insuficiente documentación (he leído [1] y la mayor parte de [2]). ¿Alguien ha usado esa funcionalidad de NetBeans y le suena haber encontrado algo parecido? Específicamente encuentro problemas con un JComboBox que muestra un campo de una tabla que es clave externa de otra tabla. El diálogo Swing muestra un JTable con la tabla de la que se quiere hacer el CRUD, con campos JTextField y un JComboBox que muestran y permiten editar los datos de la fila seleccionada del JTable, cuyo modelo a su vez lee y guarda datos en una tabla de la base de datos.
3) El código JPA que genera NetBeans me desconcierta. :-) Inicia una transacción al abrir el diálogo y la cierra y abre una nueva cada vez que se hacen actualizaciones en la tabla o se refresca el contenido de ésta. No sé si el concepto de transacciones en JPA es radicalmente diferente del de SQL o es que la cosa ha cambiado mucho desde que yo estudié, pero siempre he pensado que las transacciones deberían ser lo más cortas posible y tratar de no involucrar nunca E/S con el usuario para reducir las posibilidades de conflictos con otras instancias que estén accediendo a la base de datos. Vale, esta es una aplicación de escritorio con Derby y, realmente, no tengo pensados accesos concurrentes, pero aun así, ¿no es un poco heterodoxo lo que hace NetBeans?
[1] https://netbeans.org/kb/docs/java/gui-binding.html
[2] http://docs.oracle.com/javase/tutorial/javabeans/index.html