consulta sobre persistencia y singleton

Hola buenos dias. Soy novato en cuanto a java (soy analista de sistemas y simpre he visto pascal, visual fox, visual basic; he leido sobre POO, etc y he estado siguiendo tutoriales y videotutoriales y demas con netbeans 6 y 7).

Mi consulta viene a que estoy empezando hacer una aplicacion de escritorio (la tipica clientes, proveedores, stock algo sencillo para empezar) persistencia con eclipselink
Tengo la persistecia.xml y creo la clase Clientes (desde Nuevo---Persistencia---entity classes from database) y el clientesJpaController
(desde Nuevo---Persistencia---jpa controller classes from entity classes) pero mi consulta es que dentro del JDialog (formulario cliente) leyendo bastante por ahi, que no es bueno crear el
factory=Persistence.createEntityManagerFactory("pruebaPU");
porque crearia varios factory cada vez que abre el jdialog (la cual el create,edit etc del ClientesJpaController al llamarlo desde el JDialog funciona bien)
y si es necesario implentar singleton (patrón o anti-patrón según opiniones) para que cree una sola vez esta clase y pueda usarse en toda la aplicación o como es la correcta forma de hacerlo y trabajar bien con persistencia; algún ejemplo de como podria ser me vendria bien.

Disculpen si escribi demasiado es para explicar bien mi problema...
Espero que alguien me pueda ayudar ya que me intereza mucho avanzar e ir aprendiedo java.
Saludos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Ejemplo

Tal vez si pusieras un ejemplo con código, sería mucho más digerible (entre tags de <code> y </code> por favor).

consulta sobre persistencia y singleton

Hola.
De ante mano gracias por contestar y por tus molestias
Te comento el codigo de la clase "clientes" y el "clientesJpaController" es el generico que me crea el mismo netbeans con el asistente como decia anteriormente (agregar------nuevo-----persistencia-----etc) sin modificar nada; para informarte la base es en mysql se llama prueba; la tabla se llama clientes y solo tiene unos campos de prueba como CodigoCliente (integer de longitud 4 y es clave primaria), ApellidoyNombre, Direccion, Ciudad, y Telefono (todos estos son varchar de longitug 20)
Obviamente aca no existe nada de MVC porque es solamente de prueba con persistencia para luego empezar a trabajar correctamente con MVC
y aca te muestro parte del codigo de el jdialog
Saludos

 

consulta sobre persistencia y singleton

Alguien que me pueda dar una mano o una idea...
Gracias y saludos

sobre jpa

te recomiendo uses una sola intancia del entity manager y lo hagas accecible para todo tu programa. No tengo mucha experiencia en aplicaciones de escritorio, pero en web los entity manager pueden ser inyectados en direfentes contextos.
Otra variante seria desplegar tu logica de negocio en un servidor de aplicaciones y hagas acceso a los componentes remotamente (claro que esto depende del contexto y ambito de tu app)
saludos

Imagen de CuicaJavier

De esta forma trabajo yo con Netbeans Platform

 

Imagen de CuicaJavier

Estos son sus metodos

 

Imagen de neko069

Observaciones

Empecemos por el  , éste debería de ser un singleton, ¿porqué? bueno, según la documentación de JPA(que la verdad me da flojera buscar el apartado) el   es un objeto que consume muchos recursos al momento de crearlo, porque su construcción conlleva también la construcción de caché, pool de objetos   y otras cosas que no recuerdo bien... el punto es que debería haber sólo un objeto de   en la aplicación.

En cambio, el   gestiona a los  , los cuales ya puedes crear/cerrar al momento que los uses, puedes crear un DAO padre genérico el cual obtenga una referencia estática a tu Singleton, o igual en tu singleton tener un método que obtenga un objeto  , y ya sólo te preocupas por jalarlo en tus métodos.

Por último, ya tus clases que sean front-end sólo te preocupas por usar los métodos que declares en tus DAOs.

Ejemplo erizo, úsalo sólo de guía, SOLO DE GUIA.
 
Obviamente el código que te digo tiene N+1 fallas, huecos, cosas que puedes/deberías mejorar antes de usarlo, peeeeeero ilustra el punto que te digo, el   debe ser un singleton, y ya de ahí ése objeto se encarga de proporcionar los   que sean necesarios para que tus métodos funcionen, ya de ahí podrías usar ésos DAOs en algunas clases de servicio (capa de control) y que ésos servicios sean los que usan tus clases de front-end.

Frameworks como seam-persistence, o el módulo spring JPA template te podrían ayudar a simplificar el uso del   si es que puedes usar frameworks; o ya de menos alguna biblioteca para usar aspectos, podrían hacer menos doloroso el implementar éste tipo de cosas.

Espero no haber contribuido a hacer más grandes tus dudas.

consulta sobre persistencia y singleton

Hola como andas? gracias por constestar. Te comento que aun no tengo conocimientos aplicando esa tecnica. Por lo que lei qué seria con EJB? disculpa si dije una tontera aun no estoy familiariazado con java y netbeans.
Gracias nuevamente por tus molestias
Saludos

consulta sobre persistencia y singleton

Hola como andas? gracias por constestar CuicaJavier.
Vos en tu caso que estas declarando en un principio del sistema por unica vez y de forma publica al EntityManager y al EntityManagerFactory y de esta forma lo accedes desde todo el sistema, o estoy errandole???
Gracias nuevamente por tus molestias
Saludos

Imagen de CuicaJavier

Estas en lo cierto

 

Imagen de CuicaJavier

Mi WindowComponent o en todo caso Jframe

 

consulta sobre persistencia y singleton

Gracias por responder tan rapido CuicaJavier.
Voy a empezar seguramente a trbajarlo de esta manera definiendolo en un principio y publico y tratare de ir viendo y aprendiendo a aplicar correctamente singleton para luego ver si lo puedo adaptar.
Desde ya muchas gracias, ya que he buscado por muchos lados y no se ve ejemplos especificos entre jpa y aplicaciones de escritorio, y fue el unico lugar donde me han respondido.
Nuevamente gracias y saludos

consulta sobre persistencia y singleton

Hola neko069 como andas? gracias por responder, te comento que por lo que he visto mi idea es poder hacerlo con un singleton, seguramente arranque trabajando declarandolo al inicio del sistema como unico y publico.. pero la idea es buscar aprender a aplicar bien el singleton y acoplar el sistema de esta forma correctamente
Desde ya muchas gracias, ya que he buscado por muchos lados y no se ve ejemplos especificos entre jpa y aplicaciones de escritorio, y fue el unico lugar donde me han respondido.
Nuevamente gracias y
Saludos

Imagen de neko069

Entonces, sí nos vamos

Entonces, sí nos vamos entendiendo.
No es necesario que arranques el singleton al inicio del sistema, cuando se necesite que entre en acción, se creará una vez, las veces subsecuentes, se reutilizará el mismo objeto (en teoría así funciona el singleton).
Con los ejemplos que ya tienes, puedes iniciar a armar un prototipo. Suerte!

Gracias

Gracias nueamente a los tres por molestarse en responder; no se si es necesario ponerle algo a la consulta como que me han respondido o como trabaja este sitio en si.
A travez de sus consejos seguire profundizando sobre el tema y tratar de hacer este programita para ir tomando ideas...

Saludos

Imagen de CuicaJavier

Estamos para ayudarnos

En la noche te paso los libros que tengo :)

Buenisimo

Hola como andas?

Te comento yo he leido "Piensa en Java" de Bruce Eckel la segunda edición (baje en estos dias varios más en la cual esta la cuarta y teno que mirarlo), "Aprenda java como si estuviera en primero" deTecnum, "Java 2 Curso de Programación" de Javier Ceballos, "Programacion Orientada Objeto PHP5" de Enrique Place,"Scrum Manager-En busca de la excelencia del Código" de Raúl Herranz
Varios manuales y tutoriales como "Manual Avanzado de JPA" de Carmelo Navarro Serna,
Videotutoriales como el de Jesús Conde "Curso de Java para Principiantes (40 videos)" y mirando el de JavaEE (también de él) y mirando muchos videos de youtube y leyendo muchos foros también

Aunque hay dos libros que me gustaria conseguir que escuche que es son muy buenos uno es el "Libro Desktop Java Live by Scott Delap" lo tengo pero esta en ingles y no se tanto como leer un libro completo en inglés y no lo puedo traducir ya que es un pdf pero de imagen y el otro que me gustaria "Introduction to Programming Using Java by David J. Eck" (este podria traducirlo pero el google no lo hace), no se si vos los has leido estos o tenes algo parecido
Obviamente lo que se repetia de libro en libro lo fui saltando y muchas cosas ya las tenia vista de antes.

....Hace rato que quiero empezar de a realizar programas con java aunque cuando estudie analista en sistema me hicieron odiar la programación ya que vimos todo pascal pero de tal forma que al final.... yo se que muchas cosas que vi es aplicable a todos los lenguajes pero te digo que fue tan tedioso que no quise saber más nada, luego de mucho tiempo perdido con cual es el lenguaje mas adecuado, con otros lenguajes y demas, hasta que di con java aunque fue muy dificil al principio entender a netbeans por si sólo (ya que vivo en un pueblo y por estos lados no hay profesores que te expliquen java, ni que decir del tiempo xq tengo dos trabajos y bue) con netbeans y de apoco voy agarrando viaje...

Pero si vos tenes algún libro o manual que me ayude a cuanto realizar una correcta técnica de diseño y programación con java y netbeans para hacer un sistema más efictivo y eficiente te lo agradeceria, por eso busco esos dos libros escuche que podria servir para esto. O si me recomendas un traductor pdf que no sea el de google ya que no me lo traduce.

Bueno dejo de escribir ya que seguro se aburrieron..jaja

Saludos

Imagen de CuicaJavier

Te paso mis repositorios de trabajo