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 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

The Power of Properties II: The View Object

Hey, did you know that, even if you create a “Programmatic View Object” (rows populated programmatically, not based on a query), you can set “bind variables” for it? Neither did I until very recently. You can’t do it in the Create View Object wizard (because the Query page never appears), but once you’ve got that VO, you can indeed add bind variables in the editor.

“Why on earth would you want to do that?” you ask (or, at least, I imagine you asking). “Bind variables are meant to allow the application or user to specify bind parameters for a query, and a programmatic VO doesn’t have a query.” Indeed, that’s what bind variables are usually for, but here, I’m going to show you, at least in outline, how to use this feature to make the ultimate 100% declaratively customizable framework classes (one view object class, one view definition class) for view object definitions based on REF cursors (i.e., whose instances will call a package function to retrieve their row set, rather than execute a query).

Continue reading The Power of Properties II: The View Object