Tuesday, May 31, 2016

NetBeans Java EE Tip #9: Create JSF Application from Database

Do you need to create an database front-end very quickly?  The NetBeans IDE allows one to develop a JSF application front end for a set of database tables very quickly, and with very little coding.  Now this tutorial is an oldie, but a goodie...and it is worth mentioning again for those who are not aware of it.

First, create your application.  In this case, I create a Maven Web Application by choosing "New Project"->"Maven"->"Web Application" (Figure 1).

Figure 1:  Maven Web Application

Next, I provide the web application name of JsfCustomers since I'll be making use of the CUSTOMERS sample database tables.  Once the application project is created, create a new Java package to hold the entity classes for the database.  In this case, I right-click on the project's "Source Packages" and select "New"->"Java Package...", and then name it org.jsf.jsfcustomers.entity  (Figure 2).

Figure 2:  New Java Package

After the package is created, right-click on it and select "New"->"Entity Classes from Database", which I've covered in a previous posting.  This wizard allows me to select a set of database tables from one of my connections...here I choose my sample database and select the CUSTOMER table.  After doing so, all related database tables are automatically added to the "Selected Tables" list...click next (Figure 3).
Figure 3:  Create Entity Classes from Database

The next wizard page (Figure 4) allows me to select various options for generating my entity classes...I'll leave the defaults and click "Finish".
Figure 4:  Entity Class Options

After doing so, the entity classes for my database have been generated.  Now it is time to put the icing on the cake.  Since the database entity classes are now available, I can generate the entire JavaServer Faces infrastructure with just a few clicks.  Right click on the project's "Web Pages" folder and select "New"->"JavaServer Pages"->"JSF Pages from Entity Classes" (Figure 5).

Figure 5:  Create JSF Pages from Entity Classes

Next, select all of the entity classes that have been created, and click "Next" (Figure 6).

Figure 6:  Select Entity Classes

Lastly, specify options for creating your JSF classes and pages.  First, I specify a good name for my EJB session bean and JSF Controller packages.  The EJBs and controllers will be automatically generated into these locations.  Next, select the web folder where the JSF pages should be generated...leave blank for the root.  Lastly, I chose to utilize the PrimeFaces pages template to make use of PrimeFaces components.  Click next and choose the JSF configuration that has been previously registered with the IDE (Figure 7).  Lastly...click "Finish" and see the magic...the web application and all of the JavaServer Faces infrastructure is generated automatically (Figure 8).

Figure 7:  JavaServer Faces Configuration

Figure 8:  Completed JSF Application

Note that you may need to right-click on your project "Dependencies" module and add PrimeFaces (Figure 9).

Figure 9:  Add Maven Dependency

Now build and run your application...and it is ready to use!

Thursday, May 12, 2016

Working with Mojarra Maven Builds

Some great updates have been made to the Mojarra repository in the past couple of months.  The JSF 2.3 Milestone 5 release has been available to download since March, and the Milestone 6 release is actively in progress.  Arjan Tijms and Bauke Scholtz have been actively contributing to the effort and moving things forward, which is helping Mojarra to maintain a healthy milestone cycle.

One of the biggest efforts that have been made was to complete the transition to Maven builds, rather than ANT.  The ANT build had become rather difficult to maintain over the years, and rather than going through the effort to repair it, the process has been changed over to a Maven build.  Manfred Riem, co-spec lead for JSF 2.3, had originally started this conversion to Maven and had nearly completed the effort, but never made it 100% of the way.  Arjan stepped in and finished the task so that it works with the latest milestones.

To begin working with the actively progressing 2.3 Milestone 6 along with the new Maven build, do the following:

Create a new clone of the Mojarra GitHub repository, or update an existing local repository from remote.

git clone https://github.com/jsf-spec/mojarra.git

Once the clone is complete, execute the following commands within the terminal.  As you can see, you first move into the jsf-tools directory and build/install the artifacts using the mvn clean install command.  Next, move into the impl directory and issue the same command.

cd mojarra

cd jsf-tools

mvn clean install

cd ..

cd impl

mvn clean install

Doing so will create a Milestone SNAPSHOT JAR file in the <repository>/impl/target directory.  You can then start to test against the latest Mojarra sources and check out the newest features.

NetBeans Java EE Tip #8: Persistence Units

The foundational goals of any good IDE are to simply and organize one's code and development workflow.  NetBeans does a superb job of achieving these goals, and sometimes we take the basics for granted.  For instance, if your eyes have ever glossed over from trying to read XML in a plain text editor, you may have had issues configuring and working with Persistence Units in the past.  In case you aren't familiar with Persistence Units, they are XML configuration files that are used by a Java EE project to configure database connections and options.  NetBeans has a very easy-to-use persistence unit wizard, which will be showcased in this post.

For starters, NetBeans provides a wizard for generating a Persistence Unit for a project.  Simply right-click on a project, choose "New" from the context menu, and then choose the "Persistence"->"Persistence Unit" option.

Next, supply a name for your Persistence Unit, along with a Persistence Provider using the drop-down menu of selections.  You can then choose from an available Data Source, and choose a table generation strategy.

Once created, the Persistence Unit can be found within the "Configuration Files" folder of a NetBeans project.

Selecting and double-clicking the file will open the Persistence Unit editor.  NetBeans provides an easy to modify configuration screen for the Persistence Unit that allows changes to be made without working directly with XML.

For instance, one may wish to add an entity class for use with the Persistence Unit.  To do so, simply click the "Add Class" button and choose the desired class(es).

If you'd rather work directly with the XML of a Persistence Unit, choose the "Source" button at the top of the editor.  Rather than seeing drab XML, you will be presented with color-coded and an auto-completing XML document.

Working with history is a breeze with the Persistence Unit configuration within NetBeans.  Choose the "History" button at the top of the editor to see a listing of all changes made to the unit, and it also provides diffs so you can easily see the changes that have been made, and/or apply or revert code, as needed.

NetBeans provides and easy way to work with Persistence Units.  Forget about dealing with XML within a text editor...you'll never want to do that again.

Tuesday, May 03, 2016

NetBeans SQL Profiler - Take it for a Spin!

The upcoming release of NetBeans, currently in active development and testing, boasts plenty of new features.  A few of them include EMCAScript 6 Support, Docker Support, JavaShell Support, and SQL Profiling.  In the latest nightly builds, the SQL Profiler is now available for use, so I took it for a test spin.  In this post, I'll run through just a few of the options available with the upcoming NetBeans SQL Profiler...I think you will be quite pleased.

The SQL Profiler allows one to instantly see which queries are causing the most contention within an application, and enables easy comparison via total running time and invocations against each of the queries that have been executed.  The tool also allows one to perform heap dump, garbage collection in the profiled process, and many other useful features.

To get started with the SQL Profiler, download the latest nightly build of NetBeans, which can be done at the following URL:


Next, install and run the IDE, then import or select a project that utilizes a database.  Just like the other NetBeans profilers, a JVM must be calibrated for profiling before the SQL Profiler can be ran against a project that utilizes that JVM.  To perform calibration, select the project and then choose "Profile Project" from the "Profile" menu.  After a JVM has been calibrated, any project using that JVM can be profiled.  Simply select the project, and start the profiler of your choice by selecting the profiler option within the drop-down list.  In this case, I'll choose the SQL Queries option.

Figure 1:  Configuration Page

Figure 2:  NetBeans Profiler Selection Menu

Once the profiler has been started, the application will launch and the most current SQL queries will be displayed in a chart.  In this case, I am profiling a Maven based Web application project running Java EE 7 and JPA.  When the profiler is started, the web application launches and the SQL Profiler screen is displayed.

Figure 3:  NetBeans SQL Profiler Screen

The NetBeans SQL Profiler makes it easy to see which queries have been invoked, how many times they have been initiated, and how long they took to run.  As I run my cursor over the SQL queries, the query that is under my cursor is highlighted, and I am able to click on it to expand the row and see the method invocation stack.

Figure 4:  NetBeans SQL Profiler Method Invocation Stack for Selected SQL

If I choose, I can right-click on a given query, and view the SQL.

Figure 5:  Right Click on a SQL Row

Figure 6:  View SQL Query

As mentioned at the top of the post, I have the ability to perform a heap or thread dump for a selected query, and I can even perform a garbage collection.

The NetBeans SQL Profiler is going to be a great tool for anyone that develops applications utilizing a database backend.  Not only will it allow one to clearly see which SQL is causing the most contention within an application, but it also allows for easy comparison and provides detailed information on the underlying SQL invocations.

Download the latest build to try it out now...otherwise, it will be available with the public release of NetBeans 8.2.  The bonus is that if you try it now and find issues or have comments, you can help the developers make the Profiler even better.