Selecting an object persistence tool vs EJB2.0 CMP


EJB design: Selecting an object persistence tool vs EJB2.0 CMP

  1. I'm in the process of selecting an object persistence (OP) tool (and next an app server) for my company and I'm finding an increasing dilemma with regard to the the EJB2.0 spec and it's CMP funcationality.

    I was responsible for the object persistence at my last company and I believe that object persistence is a monster that is greatly simplified through the use of a tool designed for that task. Therefore, I'm looking at a number of OP tools including, but not limited to, Castor, Java Blend, Cocobase and, of course, TopLink. Because I'm going to be selecting an app server very soon, I've begun to look into them because OP is directly tied into the app server. In going about my research and construction of a very small prototype, I've found two products that provide EJB2.0 support - MVCSoft Persistence Manager and ePersistJ. These two products claim to offer some advanced object persistence. Because of all of this I got to thinking about the potential cost for an OP tool (TopLink costs - YIKES!) on top of the potential cost for an app server (unless I go with JBoss or Orion).

    Even though the EJB2.0 spec is not yet final, things could still change, I've got this question that creeped up. My question comes down to whether I should continue considering an OP tool or should I be looking more closely at the EJB2.0 products and the specific OP features that each one provides?

  2. If this is a mission critical sys, stick with O/R tools, EJB 2.0 has yet to proove itself, may be CMP is an attractive feature for this platform, but there will be shortcomings... which might not suite you...
  3. I think you should probably look into the EJB 2 specs and upcoming implementations, although EJB 2.0 yet has to prove itself.
    The reasons I think so are:
    *) EJB 1.1 CMP was quite fast (nearly always faster than BMP)
    *) EJB CMP is (of course) easier to use
    *) Because the appserver "knows" more things than the OR tool it can more accurately tell when to save the bean (although this is not quite what the specification says)
    *) You'll get it for free ;-)

    Just have a look at CMP, I think it is not as bad as many people say.


  4. In addition to Mernhard, I would like to add that EJB 2.0 CMP must be even faster, than 1.1 and with CMR and Local interfaces you could develop really speedy solutions. The main issue of O/R tools was pure 1.1 relations, 2.0 defines CMR, so the problem is in the past.

  5. ObjectFrontier ( has a suite of tools, FrontierSuite, that meets your needs. FrontierSuite is a platform for designing, developing and deploying Java 2 enterprise (J2EE) applications. Built on industry standards, FrontierSuite provides a sophisticated and flexible development and deployment environment, and a powerful, highly configurable and scalable runtime environment. Applications built using FrontierSuite are portable and can run on any J2EE application server. FrontierSuite can save up to 70% of the design, development and deployment effort and greatly increase the performance of an application with our distributed object caching.

    FrontierSuite includes the following tools:

    Frontier Modeler is a UML 1.3 based object modeling tool for entity beans, dependent objects and dependent value objects along with one-to-one, one-to-many and many-to-many relationships. Frontier Modeler can import object models from Rational Rose, TogetherJ or Paradigm+, so developers can work with familiar tools if desired and still take advantage of our powerful O/R mapping technology.

    Frontier Fusion is our sophisticated O/R mapping tool. Built on J2EE Connector Architecture (JCA), Frontier Fusion allows you to map the beans and dependent objects to a relational database, legacy applications and Enterprise Resource Planning (ERP), Customer Resource Management (CRM) or Supply Chain Management (SCM) systems. This allows you to leverage existing systems.

    Frontier Builder provides portable EJB2.0 abstract schema code generation for the object model defined along with customizable Home and Remote interfaces. This code can be exported to your favorite IDE and imported back into Frontier Builder. This code is kept separate from any automatically generated code from the object model, allowing you to iteratively develop the object model or business logic code without fear of one overwriting the other. Frontier Builder also facilitates generating portable deployment descriptors along with application server specific configuration descriptors. It writes and validates EJB-QL for ejbSelect and ejbSelectInEntity abstract methods defined for business rules.

    Frontier Deployer can configure the environment properties, security roles, transaction properties and JNDI reference names for the beans. It generates portable deployment descriptors for your application. You can then select the specific J2EE compliant application server of your choice and Frontier Deployer generates the application specific descriptors and creates the JAR file. You can build your application once and deploy it on different application servers.

    FrontierSuite Runtime, ePersistJ, is an EJB 2.0 public draft 2 compliant Unified Bean Persistence Server, configurable for both Container Managed Persistence (CMP) and Bean Managed Persistence (BMP) EJB applications. Built on JCA architecture, ePersistJ is capable of persisting in relational databases, ERP, SCM and CRM systems as well as legacy applications. It provides complete support for Java Transaction API (JTA). EPersistJ provides XML extraction of an object graph using customizable encoders.

    EPersistJ also provides client level and process level distributed object caching as well as providing a read only cache for static items such as lists and catalogs, etc. The distributed object cache uses Java Message Service (JMS) to keep caches in sync across different application servers. It can be configured to run synchronously or asynchronously as desired.

    Frontier Safari is an Object Query Language based navigation and query tool. Using Frontier Safari's object/relation editors, users will be able to browse, create and manipulate enterprise entities visually. The OQL can be predefined and parameterized for end-users for day-to-day reports. Advanced users can also manipulate objects through the use of ad hoc OQL.

    FrontierSuite is built on open standards in Java. There is no proprietary ObjectFrontier code generated by any of our tools. You are free to plug and play with other tools and not have to rely on us. This greatly lowers your risk and allows you to truly use best of breed tools or tools that you are familiar with. If you have any questions, you can contact me at sborte at objectfrontier dot com.

  6. Have you looked at Hibernate[ Go to top ]

    Try Hibernate ( It's an O/R mapping tool from JBoss, but it runs without that container.

    It's pretty easy to use. You write up an XML for each of the objects/data tables that you envision. Then the Hibernate parser creates your Java classes for you. The Hibernate engine then handles persistence and all object dependencies for you. It even has HQL - Hibernate Query Language - to get data back without using SQL.

    I haven't performance tested it yet though.

    Hibernate A Developer's Notebook (ISBN 0596006969) is a nice introduction.