MVCSoft has shipped release 1.2 of its EJB 2.0 CMP engine for JBoss, Jonas, WebLogic, WebSphere, JRun, Orion, HPAS, and OC4J. MVCSoft solves the problems of EJB 2.0 with lightweight entities, dynamic queries, query subsets, portability of CMP mappings and more. The cost is $199/developer including source (and no runtime fees).
- Posted by: Daniel OConnor
- Posted on: September 20 2002 12:06 EDT
Lightweight entities are MVCSoft's answer to the overhead involved in providing J2EE services. Even calls on an EJB local interface are still intercepted by the container to provide services such as declarative transactions and security. But often, session bean facades provide these services, and the only service you want from entity beans is persistence. Use MVCSoft's lightweight interfaces in these situations and bypass your EJB container's interceptor stack.
Dynamic queries are a common requirement for real world applications, but they are not part of the EJB 2.0 specification. MVCSoft provides these as an extension--without sacrificing the ability to pass type-safe parameters to your query. And your dynamic queries are portable between EJB containers using the MVCSoft runtime. MVCSoft provides other EJB-QL extensions, such as aggregate values, sorting, testing parameters for null, upper and lower case operators in the where clause, parameters for like operators, and more.
Another real-world requirement is to efficiently get a subset of query results, e.g. for display in a scrollable or pageable user interface. Instantiating collections of tens of thousands of entities--or more--just to return a few dozen to the client is completely unacceptable, of course. A common approach is to abandon entity beans and use JDBC and SQL directly. The MVCSoft solution is to allow you to retrieve a subset of the query's records, using one of several mechanisms depending on the target database and JDBC driver (e.g. limit/offset SQL syntax, scrollable result sets, or just iteration through a record set before instantiating entities).
A common limitation of many containers's CMP implementation is to disallow not-null foreign keys, or foreign keys in the primary key. MVCSoft solves this problem by dynamically reordering database i/o to avoid violating database constraints.
The MVCSoft runtime provides read-only and read-mostly caches. These data caches allow you to have your cake and eat it too: get the reduced database accesses of commit option "A" and still avoid deadlocks and maintain the ability to scale.
The "n+1" problem is one of the biggest potential performance disadvantages of entity persistence. For a BMP entity, a finder method will return only primary keys, and each entity instance that needs to access its state will require a subsequent database access. A container can get around this problem for CMP beans by "eagerly loading" their state, so that there is only 1 database access. Any good CMP container will do this--but then related data might still need to be loaded with additional data accesses, so the "n+1" problem was just deferred, not solved. With the MVCSoft PM, it is possible to configure the eager loading of related state data too--to any nesting depth--potentially reducing the number of database accesses by hundreds or thousands for a single transaction.
The Persistence Manager's intuitive Swing configuration GUI--with online JavaHelp--, its XDoclet support, its Ant tasks for code generation, verification, and DDL, its command line interface, and its 285 page PDF product manual help you to maximize productivity. Download the documentation, see screenshots of the product, and see customer feedback at www.mvcsoft.com.
- MVCSoft Releases Persistence Manager Version 1.2 by Paul Danckaert on September 20 2002 12:55 EDT
- MVCSoft Releases Persistence Manager Version 1.2 by Sreeni Janapati on September 20 2002 14:04 EDT
- MVCSoft Releases Persistence Manager Version 1.2 by Darren P on September 20 2002 14:18 EDT
- MVCSoft Releases Persistence Manager Version 1.2 by Amit P on September 24 2002 15:13 EDT
I have used version 1.0 and 1.1 of the persistence manager, and found them to be great products. The author is very responsive and personally steps in to help solve problems that you may have, and the code works very well.
I used this to add effective CMP beans to Orion, but its range of options and features make it attractive even for containers that support EJB 2.0.
Definately worth a look if you use EJB.
How is the performance of the persistence enjine? I want to go for it if performance is very good.
This is really good news for us. This tool is giving good features for EJBs and worth buying it.
In fact customer service is great.
This tool is amazing. It allows you to code to standard EJB 2.0 CMP spec and gain incredible performance advantages as well. We have been using it on development of a large scale matching/trading system. The new additional features of 1.2 which are available solve real world performance problems and do not constrain you to a specific app server. For $199 per developer, you cant go wrong here. If you are using EJB and had reservations about CMP, this tool basically solves most all (that we came up with) the problems and issues which come with CMP. The documentation is incredible and the support is better than any other commercial vendor we have ever worked with.
Hey, congrats with all of the nice feedback on MVCSoft. <plug>Could I suggest you take a look at Middlegen and see if a MVC extension of the CMP stuff would be interesting?</plug>
"<plug>Could I suggest you take a look at Middlegen and see if a MVC extension of the CMP stuff would be interesting?</plug>"
Hi Aslak, I think Middlegen is filling a key need for open source tools (much like XDoclet did in its space) and providing MVCSoft support is already on my list of things to do.
As an avid user of both Middlegen (awesome) and MVC 1.2 (brilliant) I look forward to the combination of the two. I've already hacked Middlegen's template for my own specific MVC use and the combination is VERY powerful.
Adding MVC support to Middlegen is not trivial, though. There would be a lot of work to do (mostly UI), though because MVC provides so many diabolically tricky CMP enhancements.
I'd like to thank both Daniel and Aslak for their yeoman work. My job is made much easier by their efforts.
Does MVCSoft generate BMPs also ?
Is there a tool which generates EJB1.1 BMP's ..creating DAOs and a easy framework for persistence
which can also be outside the EJB container in an standalone
Java app ?
The LowRoad does BMP's, but not from CMP specs. You have to use my own XML spec - but I have an oracle schema ripper now, so thats easy.
No DAO, just simple BMP code, and also a mimic version - you can code your client code to the EJB spec, but not use an app server.
If you buy a license and ask for the source then you can have it. I know developers who have used it as a learning tool as well - there are some simple examples showing Entity/session/struts integration.
It costs £20 per developer.
JonathanTall Software Ltd.
How well does MVCSoft integrate with Tangosol Coherence?