Domain Portal

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Thursday, 14 February 2008

ADF Business Components: Complex Insert in Easy Way

Posted on 01:53 by Unknown
In this post I continue series of my posts related to DML (Data Manipulation Language) in ADF Business Components, those posts are among of most popular on my blog. I'm writing this post and have developed sample application based on comment i received from one blog reader of Create, Edit and Delete operations in Master-Detail af:table components post. Reader was asking me about how during Insert operation to insert data into second table, table that is not referenced through binding in View layer. Yes, it's possible to put custom method in application module and do insert from Java code, however this will broke declarative approach for Create action in main table.

You can download sample application - ComplexInsert.zip, this application implements declarative approach to Insert new row into Locations table and triggers Insert into Departments table. To run this sample you need to have Oracle XE database installed with HR schema. Application is developed with JDeveloper 10.1.3.3 production release.

First let's look into Model part. Application is based on two Entity objects and one View object. LocationsView is exposed to View layer where new row is created in declarative way.


New Location is created with CreateInsert action defined in mainPageDef.xml Page Definition file:


And let's say we have requirement to create default Department for newly created Location. How to achieve this and not to broke declarative approach we have already implemented for Locations? My answer - with ADF BC you can do this in easy way, simply you can use doDML(...) method in Entity object.

In order to be able to use doDML(...) method, with Entity Object Editor generate Entity Object Class and select Data Manipulation Methods option as well:


Entity Object Class is generated and can be accessed from Structure window:


In generated doDML(...) method I have implemented custom code to insert new row into Departments entity with some default data. This code is executed only during Insert DML operation. This allow to insert data programmatically into separate table based on executed declarative Create action:


To make it even more clear, I will show how it works. User creates new Location from Web UI and press Save button - new row is inserted into LOCATIONS table in database:


Based on this insert, default department for newly created location should be generated. We can check this in database. Oracle SQLDeveloper shows that new row is inserted into LOCATIONS table:


That correct, but what about DEPARTMENTS table? We can check it, and here we have new row inserted for newly created Location:


When running sample application, don't forget to add adf-faces-impl.jar and jsf-impl.jar to application's WEB-INF\lib directory.
Email ThisBlogThis!Share to XShare to Facebook
Posted in ADF | No comments
Newer Post Older Post Home

0 comments:

Post a Comment

Subscribe to: Post Comments (Atom)

Popular Posts

  • Groovy - Multiple LOV's per Attribute in JDeveloper 11g
    I was blogging previously about multiple LOV's per attribute functionality. I was using RowImpl class for View object in order to calcu...
  • External Transaction Service in Oracle TopLink
    I have developed sample application, in order to demonstrate how to use External Transaction Service (ETS), when Oracle TopLink is used in M...
  • Workaround for Null Value Bug in ADF List Of Values 11g
    Those of you, who are using List Of Values (LOV) component in ADF 11g, most probably already have noticed bug related to Null value. Simple ...
  • Trip to US
    I'm in US this week, Connecticut. Here is the same weather as in Lithuania, it's winter with about -5 degrees in Celsius.
  • Oracle ADF - between 4GL and J2EE is only one step
    According to ADF architecture described in Oracle JDeveloper 10g (10.1.3) Developer's Guide Section 1.1.1 - Framework Architecture and S...
  • Creating new row using CreateInsert operation
    Sample application - CreateInsert.zip , demonstrates how to create editable table with 'create new row' functionality in ADF BC. We ...
  • Show Buttons based on Disclosed Tab
    In 11g it becomes quite common use case to structure application page with tabbed panels. If you develop your pages based on templates, most...
  • Multilanguage in fixed af:selectOneChoice ADF Faces component
    If someone will face a problem how to enable multilanguage support in fixed af:selectOneChoice component, or simply how to bind fixed af:sel...
  • JDeveloper 11g on Mac OS X Leopard
    I'm using Apple Mac Book Pro for about half of a year, but shame for me all this time I was running Windows OS using Apple Boot Camp so...
  • Why I'm here?
    Oracle for me is more then technology, it is a way how I think. So, I'm creating this blog in order to express my knowledge in Oracle Fu...

Categories

  • ADF
  • Apex
  • Apple
  • BPEL
  • Events
  • Forms
  • Groovy
  • JDeveloper 11g
  • Nomination
  • ODTUG Kaleidoscope
  • OFUG
  • Oracle Magazine
  • Oracle OpenWorld
  • Security
  • SOA
  • Spatial
  • TopLink
  • Traveling
  • Uncategorized
  • Vgo Software
  • Web Services
  • WebCenter
  • WebLogic
  • Workarounds

Blog Archive

  • ▼  2008 (72)
    • ►  December (2)
    • ►  November (3)
    • ►  October (9)
    • ►  September (4)
    • ►  August (9)
    • ►  July (6)
    • ►  June (10)
    • ►  May (4)
    • ►  April (5)
    • ►  March (7)
    • ▼  February (5)
      • Oracle SOA Suite 11g Technology Preview - Configur...
      • Oracle Maps in JDeveloper 11g - Even More Simple
      • ADF Business Components: Complex Insert in Easy Way
      • List-Of-Values Component in Search and Edit Form
      • ODTUG Kaleidoscope '08 - Abstracts Posted
    • ►  January (8)
  • ►  2007 (65)
    • ►  December (6)
    • ►  November (7)
    • ►  October (6)
    • ►  September (4)
    • ►  August (3)
    • ►  July (4)
    • ►  June (6)
    • ►  May (5)
    • ►  April (6)
    • ►  March (4)
    • ►  February (5)
    • ►  January (9)
  • ►  2006 (9)
    • ►  December (9)
Powered by Blogger.

About Me

Unknown
View my complete profile