JPA Area, next releases
Disclaimer: The content of this NetBeans development wiki page is intended for pre-planning purposes ONLY. The development, release, and timing of any feature or functionality described here should not be treated as final, and is subject to change at any time at the sole discretion of Oracle. For information about NetBeans software releases please visit the NetBeans Roadmap or the NetBeans Release Planning wiki.
1. Entities-db visual designer and viewer, it's both persistence and db task, it's quite big and challenging task and may require extra resources.
- represent existing entities on a diagram
- create relationship diagram
- generate entities from rel diagram, with smart merge for existing entities.
- generate sql script and or db tables from rel. diagram (next step)
- it may be easier to have only designer at first release with the feature (i.e. design and allow entities generation and nothing else)
2. Smart update
- support more types of entities update
- support some kind of dialog to handle cases like "removed" columns, suppose renamed columns, suppose match for columns with changed type
3. Work with jpa providers
- better libraries support, may be multiple libraries for single provider, allow to choose which one to add with ui or switch from provider-oriented behavior to library oriented?
- better jpa versioning, most providers should allow version selection and just do not add library if there is no one available for selected version(should handle server dependent issues)
- ?may plugins and projects use PersistenceProviderResolver to detect providers present in environment?
4. ?closer integration with eclipselink(or toplink jpa2.0)? - investigate if it's possible to use for entities model creation, entities verification etc for internal nb usage.
5. Better end user experience
- like out of the box jdbc driver addition
- support persistence unit from archives (jars, wars, ears etc)
- mark entities and entities relations/columns in project tree with own icon (add relationships as separate group?)
- refactoring (extract embedded id, more?)
6, jsf from entities (may be jsf area task)
- jsf from entities - support navigation by fk if several pages are generated
- support in place edition for values (instead of Edit page), in place addition etc
- add jsf from db wizard?
- support entities callback/listeners. may be add some validation in callback, may be allow to generate stub so user will be able to add verification or any code himself. It may one of "insert code" items.
- support generation of MappedSuperCLass instead of entities
- either online(with hint) or by action(as online may be slow) scan for entities which may extend each other or mapped superclasses and suggest actions
- any need in separate JPA Structure/JPA view as in Dali/Eclipse?
- support entities from db generation with derived ids when appropriate
- support entities customization during creation (fields, orm.xml vs annotations, access type etc)
- support case sensitive database
- ?add jars list as it is for classes list?
- Show persistence.xml hierarchy in the Projects window (The hierarchy should be persistence.xml -> PUs -> entity classes. The Run JPQL Query can be launched from the PU nodes and entity class nodes. The entity class node context menu can list some predefined JPQL queries, such as, the NamedQueries.)
- support hints(validation) in xml view, like existence of table, obsolete properties etc.
- hints for entities defined in orm.xml (like missed primary key etc. as it's done in entities annotated with annotations)
10. JPQL editor (can eclipselink be used? like hibernate for hql queries), see HQL Editor implementation for hibernate, jpql should be almost the same
- Syntax coloring
- Support ui to replace parameters with values
- Support query in native sql
- Evaluate possibility to use compile&save results and do not require project building then
- Switch to use more standard editor (see SQL editor, i.e. toolbar, line numbers, find-replace may be more actions useful for 'big' queries),?? priority?? as should we may support only 1 command in the editor.
11. NOSQL support based on eclipselink (may be more providers later), see http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/NoSQL.
- basic support to add properties with values to persistence.xml editor/completion
- wizards, more?
- entities from nosql datasource
- ?entities from db source with nosql target? (@Column->@Field, @Table->dataType etc.)
12. JPA 2.1 support
- new reserved words
- update bundled eclipselink to 2.5
- update to latest hermes parser to support changes in jpql
- update internal nb model to separate 2.1 and 2.0 and recognize 2.1 vs 2.0
- update supported providers list in ant/maven, j2se/web/ejb jar projects.
- update server plugins ("isToolSupported")
- new common jpa properties?
- new candidates for main panel in persistence.xml visual designer
- affected secondary classes:
j2ee.specs.support/src/org/netbeans/modules/j2ee/specs/support/bridge/BridgingJpaSupportImpl.java and fallow calls to isTool..
org.netbeans.modules.glassfish.javaee.Hk2JavaEEPlatformImpl - glassfish plugin
org.netbeans.modules.j2ee.weblogic9.j2ee.WLJ2eePlatformFactory - weblogic plugin
org.netbeans.modules.j2ee.jboss4.ide.JBJ2eePlatformFactory - jboss
org.netbeans.modules.j2ee.sun.ide.j2ee.PlatformImpl - ?platform, required?
MavenPersistenceProviderSupplier use similar to bridge structues and may need special update
org.netbeans.modules.javaee.specs.support.api,JPAProvider require version accessor, otherwise it's im;possible to distinguish in org.netbeans.modules.web.project.WebPersistenceProviderSupplier which one is default as class name is the same for default and not default. There are one issue, even if default(and bundled) is eclipselink 2.5 it still may be possible to avoid class specification in pu for ealier versions, but it's minor issue as if specified it will broke nothing.
Other side approach
1. Functionality extending - include new features for existent technology and extending different technologies support, like jpa versions, jpa parts (call back listeners from above etc)
2. Usability improvement - do the same easier, do more with the same efforts
Features [pre]selected for Next
1. JPA 2.1 support (as subtask, track http://www.eclipse.org/eclipselink/downloads/milestones.php for new milestones)
3. Derived ids support (in general we have number of issues with jsf from entities, validation etc).
4. bundled hibernate update(hibernate+jpa support) - should be done for nb8 already (15.02.2013)
5. jpa hints (new api, support disabling etc)
6. number of issues/enhancements risky to fix late (in bug fix phase) (case sensitive support etc)
7. new from JPA2.1: sql script from entities (Persistence.generateSchema(puName, map))? (new file wizard item in Persistence category)
8. new from JPA2.1: @Index(columnList = "") - completion of column names inside with ASC/DESC keyword (initial realization since 15.02.2013)
1. out of the box jdbc driver addition (do not block awt and may be wizards also?), issue link.
2. refactoring (extract embedded id, extract mapped superclass etc?), issue link.
3. better libraries support, may be multiple libraries for single provider, allow to choose which one to add with ui or switch from provider-oriented behavior to library oriented?, issue link.
4. support generation of MappedSuperCLass instead of entities generation (from db, and 'new wizard')(should be easy, almost same as entities wizard), issue link.
Compare to Dali:
6. nice is some orm.xml support: add entity to orm/some validation (required time vs benefits, too much code relies on annotations and no other way to specify entities)
7. nice is more structured custom properties in persistence.xml editor (with more tabs/sections) - not a priority in my opinion
8. nice to have JPA Details and JPA Structure views (should last be added as view to navigator window?)
9. Check/implement more validation comparing to JPA/Errors/Warnings preferences from Dali