SmartGWT Enterprise Edition (EE) is a set of GWT API's, Java server libraries, servlets and tools that provide the key server-side components needed to build a complete application in a modern web architecture.
The SmartGWT Server framework can be integrated into any pre-existing Java application, and is designed to rapidly connect SmartGWT visual components to pre-existing Java business logic or persistence engines. SmartGWT's Ajax request processing facilities can be easily integrated into Struts Actions, Spring controllers, or custom servlets and JSPs.
Alternatively, the SmartGWT EE Server provides a complete SQL and Hibernate-based persistence engine for new applications, with out-of-the-box servlets for processing Ajax data requests.
SmartGWT EE is optional, and SmartGWT (LGPL)'s client-side Ajax engine can be integrated with any server that provides HTTP access, using XML, JSON, SOAP or proprietary data protocols. However any server in a modern web application will be required to provide most or all of the features of the SmartGWT EE Server (described below), and the SmartGWT EE Server represents a best-of-breed implementation of these facilities with a long history of high-volume production deployments.
SmartGWT EE provides pre-built data connectors for common persistence strategies, as well as the ability to add your own connectors. In both cases, the SmartGWT server framework provides a set of powerful services that apply regardless of your persistence approach, and can make much of your business logic into simple declarations.
Velocity templates give you fine-grained control over SQL generation: specify only the SQL clauses you want to override and leave the rest up to automatic SQL generation. Add joins, aggregation and other operations in portable SQL, while still retaining built-in support for advanced search, data paging and other difficult, non-portable SQL you'd rather not write and maintain. Or, specify entirely custom SQL - even call stored procedures.
Use Java Beans to represent SQL data, or don't, on a case-by-case basis - it's up to you!
SmartGWT EE's SQL engine provides a better blend of object-oriented abstraction and raw SQL power than JPA, Ibatis or other approaches can provide.
Similar to the SQL DataSource, specific custom HQL (Hibernate Query Language) or custom SQL queries right in your DataSource XML file.
Wizards allow you to generate starter DataSource XML files from Java Beans, XML Schema and other sources of object metadata. A single attribute ("serverConstructor") specifies that your custom connector should be used. From there, you can add simple XML declarations that control features common to all DataSources, such as declarative server-side validation and access control.
Your DataSource XML declaration specifies the fields that the client-side components will be using, and can automatically extract just the relevant data from EJBs and other server-side-only objects, without the need to write redundant DTOs ("Data Transfer Objects"). Support for automatically populating complex Java structures from request data makes it easy to persist data with any ORM system.
Or, use DMI with any other type of DataSource to call custom Java logic before or after the default persistence logic runs. Modify requests to enforce business rules, or take additional actions after persistence.
All of these approaches are demonstrated in examples in this showcase and all of them can be used in tandem. For example: