Title: Professional EJB
ISBN: 1861005083
US Price: $ 59.99
Canadian Price:
C$ 89.95
UK Price: £ 47.99
© Wrox Press Limited, US and UK.

Reviews : Java Books :
Professional EJB : The EJB 2.0 Entity Model

Abstract Methods and Relationships

Relationships are also managed through abstract accessor methods. In the case of a relationship where the multiplicity of the associated object is many, the abstract accessor's parameter or return value type is a collection class representing the relationship. This collection class implements the java.util.Set or java.util.Collection interface. (A future version of the specification may add java.util.Map and java.util.List as return types.) In the case of a relationship where the multiplicity of the collection class is one, the abstract accessor's parameter or return value type is a single instance of the related object.

For example, consider the case where an order is related to one shipment address and multiple line items. The relationship accessors might look like this:

	public abstract Collection getLineItems();
	public abstract void setLineItems(Collection lineItems);

	public abstract AddressLocalEJB getShipAddress();
	public abstract void setShipAddress(AddressLocalEJB shipAddress);

The collection classes used with relationship accessor methods are implemented and instantiated by the EJB container. You can use those collection classes to modify the relationship directly. In the example above, you could use the java.util.Collection object returned from getLineItems() to find, add, or remove line items from the order-line item relationship. You would not need to subsequently call the setLineItems() method. In fact, setter methods for many-valued relationships have special semantics that will be explained in the following chapter.

Just as the container-managed state fields for an EJB 2.0 CMP entity are declared as <cmp-field> elements in the deployment descriptor, relationship state fields are declared in the deployment descriptor as <cmr-field> elements. These <cmr-field> declarations are made in a special section of the deployment descriptor that contains all the relationship information. A <cmr-field> element has a name and a description, just like a <cmp-field>. For the case where the target object relationship has a multiplicity of many, the type of collection object (either java.util.Collection or java.util.Set) must also be specified.

Abstract ejbSelect() Methods

Along with these abstract accessor methods for the object's persistent state and its relationships, there is one other type of abstract method that the programmer may declare: zero or more instances of the ejbSelect() method. These ejbSelect() methods are similar to finder methods in that they use the EJB query language to retrieve information. However, there are two important differences:

  • First, they are never exposed to a client. They are used only in the EJB's implementation.
  • Second, they can return entities and the values of cmp fields, whereas finder methods just return entities.

Here is an example ejbSelect() method whose behavior would be specified by a query in the deployment descriptor:

	public abstract Collection ejbSelectAllLineItems();

Stop by in one week for the next installment!

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.