2009-04-02 17 views

Respuesta

2

Supongo que no quiere decir framework web ya que GWT es en sí mismo un framework. Usaría JSF para manejar el lado de la aplicación/lógica de negocios. Hace que sea fácil de almacenar y alcance frijoles, y acceder a la base de datos. Para leer el DB, cualquier sabor JPA que te guste. He tenido una buena experiencia con Eclipselink, pero ahora todos implementan las mismas interfaces. También es posible que desee ver los EJB para juntar todo e inyectar el JPA que necesitará.

+0

¿por qué jsf? ¿Está pasando JSON al frente o se están utilizando llamadas de servicio directo? De cualquier manera, JSF no es necesario. – user37468

+0

principalmente para crear y administrar correctamente los beans administrados en una instancia por sesión/solicitud/aplicación – GBa

8

El resorte es el obvio que deberías estar utilizando. GWT tiene su propio marco de control RPC, por lo que realmente no puedo pensar en lo que necesitaría para un marco de aplicaciones web (como JSF).

JPA es una opción razonable en varios frentes, pero también tiene problemas.

Por un lado, es potencialmente un problema al enviar objetos JPA al cliente. GWT (hasta 1.5 al menos) impone una estructura de directorios bastante estricta, por lo que tendría que colocar sus entidades bajo el árbol de fuentes de GWT. Aparte de eso, serializar (JSON generalmente) entidades JPA hacia y desde el cliente es potencialmente problemático.

Las entidades JPA son objetos bastante rígidos que mapean casi uno a uno a sus tablas. Sin embargo, esa no es la forma en que usas los datos en una capa de presentación. SQL directo le permitirá elegir y elegir qué datos desea y no desea, diseñados específicamente para esa página. Por lo tanto, las entidades JPA suelen tener muchos campos en los que no está interesado y no debe serializar (en particular colecciones de relaciones de uno a muchos).

Ahora ese aspecto de SQL - adaptarlo a la página - a menudo se cita como una ventaja de las entidades: su código no termina lleno de objetos de valor de un solo uso. La cosa es que todavía terminas con lo mismo en gWT + JPA, pero en lugar de estar en la capa de persistencia o en la capa de negocios, terminas con ellos en la capa de presentación. Ahora puede llamar a eso una ventaja. Lo llamo seis de uno, media docena del otro.

De hecho, creo que Ibatis se ajusta mucho mejor al modelo de aplicación GWT que JPA porque está utilizando SQL directo, objetos diseñados a su medida y esos objetos pueden utilizarse desde la base de datos hasta el cliente . Ahora bien, este concepto puede horrorizar a los fanáticos de la estratificación que son bastante comunes en la tierra de Java, pero recuerda que la estratificación es un medio para un fin, no un fin en sí mismo. Úselo si lo ayuda. No, si no es así.

Pero la primavera es la necesidad absoluta en esta pila.

También lo referiré a Why isn’t Google Web Toolkit more popular? y Using an ORM or plain SQL?.

+0

No tiene que poner sus POJO JPA bajo el árbol fuente GWT, los importa como lo hace con cualquier otra clase externa y asegúrese de tener la fuente de las anotaciones JPA en la ruta de clases del compilador. – rustyshelf

+0

Cletus, la pregunta que vinculó sobre la popularidad de GWT se ha ido. He encontrado uno similar aquí: http://stackoverflow.com/questions/654587/why-havent-gwt-and-script-style-frameworks-become-dominant –

5

Si está desarrollando más aplicaciones como sitios en lugar de sitios basados ​​en páginas, le recomiendo echar un vistazo al marco de código abierto Vaadin. Este es un marco impulsado por el servidor que utiliza GWT en el lado del cliente para renderizar el frontend, pero también maneja automáticamente y mantiene la lógica de negocios sensible en el lado del servidor. Esto agrega algo de seguridad y no tiene que preocuparse por el cliente < -> tráfico del servidor (si no lo desea), pero puede enfocarse en implementar la lógica del servidor de la manera que prefiera. Lo más grande es que realmente no tiene que codificar nada más que Java. También es bastante fácil implementar nuevos componentes de GWT en el marco.

Descargo de responsabilidad: Sí, trabajo para IT Mill desarrollando Vaadin, pero echar un vistazo no ha hecho daño a nadie todavía, ¿o sí?

2

Ow estas respuestas me están lastimando los ojos. JSF si eres un masoquista o Spring si estás clínicamente loco;)

Si utilizas el RPC GWT integrado, entonces no necesitas un framework web, simplemente usas el mecanismo RPC para hablar con tu servidor. Para la base de datos de back-end y la lógica de negocios, solo utiliza Fri Session POANS y POJO estándar. Es una pila extremadamente ligera, fácil de usar y compatible sin dolores de cabeza. Si vas a hacer formularios fuera de GWT, asegúrate de hacerte un favor y echa un vistazo a Stripes también.

En ASCII Graphix:

base de datos


Beans de sesión de la APP & POJOs


nivel Web para manejar el enrutamiento entre GWT y EJB capa


GWT se ejecuta como JavaScript en el navegador, haciendo uso de todos los POJO que definió en la capa EJB

+0

Rusty, ¿puedes señalar cualquier muestra que esté usando? esta pila He visto muchísimos códigos escritos que hacen que GWT hable con Spring e hibernate (escribí algunos por mi cuenta) pero no usé JPA Session Beans. –

+0

No tengo ninguna muestra que pueda compartir. Pero implementamos aproximadamente 5 aplicaciones empresariales usando ese marco. – rustyshelf

3

Ahora estoy usando GWT + Struts + Primavera + Hibernate
Es mejor utilizar el intercambio de datos JSON en vez de usar GWT servicio web.
Para eso podemos separar la lógica y la presentación.

1

Uso GWT principalmente para sistemas internos, pero encuentro que todo lo que necesito es una base de código bien organizada, un patrón PAC e Hibernate. Hace lo que necesito muy bien.

Empecé tratando de usar herramientas como dozer para serializar beans en el cliente-servidor, pero rápidamente lo encontré innecesario. Si necesita una colección de barras en foo, entonces despliegue la lista también conocida como getBars (foo). Necesitas guardar foo - RPC arriba para guardar(). Manténgalo simple, obtenga lo que necesita, publique lo que necesita, no más. Mantener el estado en el cliente y todo se cuelga muy bien.

Lo importante para mí fue entender que GWT no se trata de construir una aplicación web. Se trata de construir una aplicación en la web. Algo muy diferente.

GurffT

EDIT: Se olvidó de decir, tengo una capa de lógica de interactuar con objetos DAO lado del servidor - pero son bastante simple y justo con una instancia nueva!

0

Si quieres diversión, ¿por qué no utilizar playframework.org con GWT? Esto te pone a la velocidad muy rápido y tiene todo lo que necesitas en el servidor (por ejemplo, jpa via hibernate) :)

0

En mi opinión, la mejor pila sería GWT/GIN/Guice en la interfaz, y luego Guice para su inyección de back-end con JPA + algún proveedor para la base de datos.

La primavera es pesada y hace mucho más de lo que probablemente necesite. Guice es muy liviano y está diseñado exclusivamente para inyección de dependencia. Gin es básicamente como Guice solo en el contexto de GWT/Javascript.

También creo que hay mucho valor, especialmente cuando se está en las primeras etapas de uso de una nueva tecnología, para tener una pila liviana desde un punto de vista conceptual. Spring traerá el 90% de los frascos hechos desde el principio de los tiempos, lo que hace conceptualmente más difícil captar qué hace qué. la pila de arriba traerá las piezas de Gin/Guice/GWT, JPA y cualquier proveedor (Hibernate, Toplink, etc.), el núcleo de la web de Java (tiempo de ejecución del servidor para las bibliotecas de servlet api) y eso es todo, así que revisando tus jarras es más fácil de entender lo que tienes y por qué. Creo que la primavera traerá más de 15 jarras, y para mí eso siempre hace más difícil tener en mis manos lo que está pasando y por qué. No soy alguien que odie la primavera, en realidad, mvc de primavera fue mi favorito, la primavera es muy grande, y si recién estás comenzando habrá suficientes cosas nuevas para que te sientas cómodo. No es necesario agregar la complejidad de un marco más grande que el requerido para enturbiar las aguas, en mi opinión, eso solo aumentará la curva de aprendizaje.

Cuestiones relacionadas