Framework for Package-Based ADF BC, My ODTUG Schedule, and More

Like the poltergeists, I’m baaack. I’m back to my usual health, and while I’m still pretty horribly snowed under, I think that enough of the worst of it is over that I can generally commit to my “Updates Mondays” schedule again. This has been a *long* hiatus (over 6 motnths), and I’m very glad to be back among the lang of the living. I’ve missed this blog and the ADF community generally.

Although I plan to get back to the ADF BC Tuning series soon, I want to use this post to announce two things: The first piece of software I’m releasing on this site and my public (that is, not just as an audience member) at ODTUG Kaleidoscope, which will be next week in Monterey, CA.

First, the software. This is actually related to one of the talks I’ll be giving at ODTUG, and tangentially related to another. But even if you aren’t going to the conference, I hope you’ll find it useful. It’s an extension of the ADF BC framework that allows you to create the following 100% declaratively:

  • Entity object definitions (including support for optimistic or pessimistic locking and Refresh After… settings) that use Package APIs instead of DML
  • View object definitions (whether entity-based or not, and including support for query parameters) that use Package APIs instead of SELECT statements
  • Associations and view link definitions involving the above

You can get the framework here.

At ODTUG, I’ll  be participating in the following:

Hope to see you there!

ADF BC Tuning IV: View Objects, Part 2

Continuing on from the last post, we’re looking at ways to tune ADF view objects for optimal performance and resource management.

Forward-Only Mode

In most applications, the user needs to be able to scroll through data both forwards and backwards–to return to a previous row in addition to simply being able to scroll forward, or to find rows an earlier view row after finding a later one. Because of this, by default, once rows from a view object’s query result are read into the view cache, they stay there. If your JDBC fetch size is 18, then initially, only 18 rows will be in the view cache, but when request rows outside the first 18, that number goes up to 36, then 54, then 72, and so on.

Continue reading ADF BC Tuning IV: View Objects, Part 2

ADF BC Tuning III: View Objects, Part 1

Now that we’ve looked at tuning entity objects and associations, we’ll turn to talking about tuning your ADF view objects for good performance and memory management. There’s a lot to say about tuning view objects (more than for any other business component, in my opinion), so I’m going to break this topic up over two posts. This week, we’ll discover the reasons for and against basing read-only view objects on entity objects, learn how to control how much data is fetched into the middle tier at one time (and how to optimize this for your particular case), and talk about what passivation of view objects is and how to control whether and how much of it happens. Next week, we’ll talk about query-level range paging, forward-only mode, and the spill-to-disk feature for handling very large caches.

Continue reading ADF BC Tuning III: View Objects, Part 1

ADF BC Tuning II: Associations

Last week, I talked about tuning your ADF entity objects for maximum performance. This week, I’m going to talk about ADF associations.

Custom Association Views

One of the concepts I covered last week was an entity object’s default query, the all-columns query that would be created in a default view object for that entity object. I also talked about one place where the default query is used, even if you don’t create a default view object: entity object fault-in.

But there’s another place that this possibly inefficient query gets used, at least by default: Whenever your business logic traverses an association accessor.

Continue reading ADF BC Tuning II: Associations

ADF BC Tuning I: Entity Objects

This week’s post will be the first of a five-week series about an important but little-discussed topic: Tuning your business components for maximum performance. A lot of projects put very little effort towards business components tuning (usually nothing more than improving the SQL of expert-mode VOs), and because of this, a lot of developers new to the framework come away with the (false) impression that business components perform poorly. Business components actually perform quite well, so long as they’re properly tuned.

This week, I’m going to talk about tuning entity objects. Over the next weeks, I’ll cover associations, view objects, view links, and application modules.

Continue reading ADF BC Tuning I: Entity Objects