Migrating to EJB 3 with IntelliJ IDEA is Easy

IntelliJ IDEA has the full-blown support for Enterprise Java Beans (EJB). Supporting EJB specifications from 1.x to 3.0 and leveraging it through all of its productivity-boosting features, from coding assistance to refactoring, IntelliJ IDEA stands for the weapon of choice for developing EJB applications.

Today we’re going to see how easy it is to migrate from earlier EJB versions to the latest 3.0. For the purposes of this demonstration we have a sample project, containing a 2.1 CMP Entity Bean and a Session Bean used to access CMP bean fields.

To migrate these beans to EJB 3.0:

  1. Switch Project View to Java EE: Structure
  2. Expand the EJB Facets node
  3. Right-click EJB (in MigrationTest) and select Apply EJB 3.0 Style from the shortcut menu.

    Invoking the EJB Migration Dialog

First we’re going to change the environment access settings for the beans and resort from using the ejb-jar.xml descriptor and use the annotations instead. For that:

  1. Make sure the settings are selected according to the screenshot

    EJB Migration Dialog

  2. Click Refactor

IntelliJ IDEA automatically upgrades the code. Have a look at the screenshot below and see the difference. Note that code before migration is displayed on the left side.

IntelliJ IDEA also automatically removes descriptors that were replaced with annotations from ejb-jar.xml file.

Now, replace the CMP Entity Bean with JPA Persistence unit. For that:

  1. Invoke the migration dialog as described above
  2. Select the Replace Entity Beans with CMP to Persistence Unit
  3. Click Refactor

IntelliJ IDEA automatically creates the required JPA code and converts the existing Entity Bean. Notice that it has been removed from the project and matching JPA Persistence Unit has been created.

After that we have to manually rewrite the session bean code according to JPA specification so that it would use the Persistence Unit instead of the Entity Bean to complete migration.

Technorati tags: IntelliJ IDEA, IntelliJ, EJB
image description