1 / 40

Objectives In this lesson, you will learn to: Describe Container-Managed Relationships (CMR)

Objectives In this lesson, you will learn to: Describe Container-Managed Relationships (CMR) Implement CMR in CMP entity beans Implement EJB Query Language (EJB QL) in CMP entity applications. Pre-assessment Questions Consider the following statements:

baby
Download Presentation

Objectives In this lesson, you will learn to: Describe Container-Managed Relationships (CMR)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Objectives In this lesson, you will learn to: • Describe Container-Managed Relationships (CMR) • Implement CMR in CMP entity beans • Implement EJB Query Language (EJB QL) in CMP entity applications J2EE Server Components

  2. Pre-assessment Questions • Consider the following statements: Statement A: In case of CMP beans, you can make minor modifications and reuse the bean with other database technologies. Statement B: In case of BMP entity bean, you need to hard code the logic to query and define a database and handle persistence. Identify the correct option. • Statement A is true and Statement B is false • Statement A is false and Statement B is true • Both, statements, A and B, are true • Both, statements, A and B, are false J2EE Server Components

  3. Pre-assessment Questions (Contd.) • Which method is called by EJB container for associating a CMP entity bean with an entity context object? • ejbSelect() • setEntityContext() • ejbLoad() • ejbCreate() • Which feature of the CMP entity bean specifies that the deployment tool generates complex data access and management code automatically? • Maintenance • Portability • Implementation • Flexibility J2EE Server Components

  4. Pre-assessment Questions (Contd.) • Which tag of the deployment descriptor specifies the type of the primary key field? • <primkey-field> • <fieldname> • <primkey-class> • <cmp-field> J2EE Server Components

  5. Pre-assessment Questions (Contd.) • Consider the following statements: Statement A: In CMP entity bean, you need to provide the logic to implement referential integrity. Statement B: In BMP entity bean, EJB container provides referential integrity. Identify the correct option. • Statement A is true and Statement B is false • Statement A is false and Statement B is true • Both, statements, A and B, are true • Both, statements, A and B, are false J2EE Server Components

  6. Solutions to Pre-assessment Questions • c. Both, statements, A and B, are true • b. setEntityContext() • a. Maintenance • c. <primkey-class> • d. Both, statements, A and B, are false J2EE Server Components

  7. Container-Managed Relationships (CMR) • Container-Managed Relationship: • Refers to the link between the attributes of two or more entity beans. • Has the following features: • Directionality • Cardinality J2EE Server Components

  8. Container-Managed Relationships (Contd.) • Directionality of Relationships • Directionality stipulates the direction in which you can navigate a relationship. • In a relationship involving two entity beans, A and B, if the direction of the relationship is from A to B then A is known as the source or parent entity bean and B is known as the destination or child entity bean. • Relationships can be: • Unidirectional: Data only navigates in one direction. • Bi-directional: Data can navigate in both directions. • You can specify the directionality of a relationship by declaring the accessor methods for the CMR fields of the relationship in the code of entity beans. J2EE Server Components

  9. Container-Managed Relationships (Contd.) • Cardinality of Relationships • In a relationship, only two entity beans can participate at a time. One entity’s value or values can be related to one or more values in another entity. This characteristic of a relationship is known as cardinality. • Various types of cardinalities in relationships are: • One-to-one • One-to-many • Many-to-one • Many-to-many J2EE Server Components

  10. Container-Managed Relationships (Contd.) • One-to-One Relationship • Exists between any two-entity beans, A and B, in which a single value in A is linked to a single value in B. • Expressed as 1:1. J2EE Server Components

  11. Container-Managed Relationships (Contd.) • One-to-Many Relationship • Exists between any two entity beans, A and B, where a value of the entity bean A is related to multiple values of the entity bean B. • Expressed as 1:* or 1:N. J2EE Server Components

  12. Container-Managed Relationships (Contd.) • Many-to-One Relationship • Exists between any two entity beans, A and B, where multiple values of entity bean, A are related to a single value of entity bean B. • Expressed as *:1 or N:1. J2EE Server Components

  13. Container-Managed Relationships (Contd.) • Many-to-Many Relationship • Exists between any two entity beans, A and B, where multiple values of entity bean A are related to multiple values of entity bean B. • Expressed as *:* or N:N. • The two ways of implementing many-to-many relationships are: A fake many-to-many relationship: Is implemented between two tables by creating an association table in a database. The association table consists of the foreign keys to the other two tables. In true many-to-many relationships: Indicates that two entity beans are directly related to each other, without the aid of additional tables or beans. J2EE Server Components

  14. Container-Managed Relationships (Contd.) • Multiplicity of an Entity in a Relationship • Defines whether a bean participating in a relationship can be related to one or many beans. • multiplicity is a feature of an individual entity in a relationship. • Multiplicity of the entity bean A, with respect to this relationship is, one. • Multiplicity of the entity bean B with respect to this relationship is many. J2EE Server Components

  15. Container-Managed Relationships (Contd.) • Other Types of Relationships • In addition to the directionality and cardinality-based relationships, the other types of relationships are: • Recursive • Circular • Chain J2EE Server Components

  16. Container-Managed Relationships (Contd.) • Recursive Relationship • A relationship is called recursive if an entity bean is associated with itself. • A recursive relationship is also known as a self-relation. • Manager–to-employee self-relation: J2EE Server Components

  17. Container-Managed Relationships (Contd.) • Circular Relationship: • Exists between three or more beans. • Circular relationship between the employee, department, and project beans: J2EE Server Components

  18. Container-Managed Relationships (Contd.) • Chain Relationship: • Exists between the beans, A, B, and C, where A is related to B and B is, in turn, related to C. • Chain relationship between the department, employee, and workstation beans: J2EE Server Components

  19. Container-Managed Relationships (Contd.) • Deployment Descriptor Elements for Specifying CMR • In a deployment descriptor, a relationship between two entity beans is described in two parts, for each entity bean participating in the relationship. • Tags used in the deployment descriptor for describing information about CMRs are: • <relationships>…</relationships>: Specifies the beginning and end of information about CMRs in a deployment descriptor. • <ejb-relation>…</ejb-relation>: Specifies the beginning and the end of a relation. • <ejb-relation-name>…</ejb-relation-name>: Specifies an alias or name of a relationship. J2EE Server Components

  20. Container-Managed Relationships (Contd.) • <multiplicity>…</multiplicity>: Defines the multiplicity of an entity bean participating in a relationship. This tag accepts the values: One or Many. • <relationship-role-source>…</relationship-role-source>: Describes an entity bean participating in a relationship. • <ejb-relation-name>…</ejb-relation-name>: Specifies an alias or name of a relationship. • <cmr-field-name>…<cmr-field-name>: Defines the name of a CMR field. J2EE Server Components

  21. Demonstration-Implementing CMR in CMP Entity Beans • Problem Statement • David and his team are building an online application for a bank where each customer can have multiple accounts. They need to create appropriate objects and represent them using CMP entity beans. J2EE Server Components

  22. Demonstration-Implementing CMR in CMP Entity Beans (Contd.) • Solution • To solve the preceding problem, perform the following tasks: • Create the Account CMP entity bean home interface. • Create the Account CMP entity bean local interface. • Create the Account CMP entity bean class. • Create the Customer CMP entity bean home interface. • Create the Customer CMP entity bean local interface. • Create the Customer CMP entity bean class. J2EE Server Components

  23. Demonstration-Implementing CMR in CMP Entity Beans (Contd.) • Solution (Contd.) • Create the Web client. • Package the CMP entity bean, account. • Package the CMP entity bean, customer. • Setting CMR between the customer and account CMP Entity Beans. • Package the Web client. • Deploy the application. • Test the application. J2EE Server Components

  24. Enterprise JavaBeans Query Language (EJB QL) • EJB QL: • Is used implement queries in entity beans. • Supports traversing relationships between entities and working with collection-based CMR fields. • Syntax of EJB QL • EJB QL is similar to SQL in terms of usage and syntax. • An EJB QL query is framed using statements that are similar to sentences in English. • EJB QL consists of the following clauses: • SELECT • FROM • WHERE [Optional] • ORDER BY [Optional] J2EE Server Components

  25. Enterprise JavaBeans Query Language (Contd.) • The SELECT Clause: • Defines the result, which can be an object or a value that the query returns. • Is defined using the following syntax: SELECT [DISTINCT] { Single-valued-path-expression| OBJECT (identification-variable) } J2EE Server Components

  26. Enterprise JavaBeans Query Language (Contd.) • The FROM Clause: • Defines which entity beans are to be used in the query. • Is defined using the following syntax: FROM abstract_schema [AS] identification_variable • The WHERE Clause: • Has a conditional expression and the values that satisfy the condition in the expression are returned. • Is defined using the following syntax: WHERE conditional-expression J2EE Server Components

  27. Enterprise JavaBeans Query Language (Contd.) • The ORDER BY clause: • Sorts the objects or values returned by a query into a specific order. • Is defined using the following syntax: ORDER BY field_item_1 [ASC | DESC field_item_2 ASC | DESC .. field_item_n ASC | DESC] J2EE Server Components

  28. Enterprise JavaBeans Query Language (Contd.) • The BNF Symbols • The Backus Naur Form (BNF) is a meta language used for denoting the syntax of structured languages, such as DDLs, DMLs, and DQLs. • The BNF symbols defined in EJB QL are: • ::=: Defines the element that is on the left of the symbol. The definition of the element is provided on the right of the symbol. Syntax to implement the ::= symbol is: EJB-QL ::= Select-clause from-clause[where-clause] • *: Specifies that the construct preceding it can be present in the definition for zero or more times. Syntax to implement the * symbol in the IN expression is: in-expression ::= single-valued-path_expression [NOT] IN (string-literal [, string-literal]*) J2EE Server Components

  29. Enterprise JavaBeans Query Language (Contd.) • {..}: Groups multiple constructs, together. Syntax to implement the {..} symbol is: Select-clause::= SELECT [DISTINCT] {Single-valued-path-expression | OBJECT(identification_variable) } • | : Specifies the exclusive OR operation between two constructs. For example, the syntax to implement the | symbol is: comparison-operator ::= = | > | >= | < | <= | <> • BOLDFACE: Is a keyword and it is not case-sensitive. • Whitespace: Represents space, line feed, and horizontal tab. J2EE Server Components

  30. Enterprise JavaBeans Query Language (Contd.) • Literals in EJB QL • A literal is a textual representation of a specific value. • EJB QL supports the following types of literals: • String: In EJB QL, enclosing alphanumeric character within single quotation marks is used for representing a string literal. • Numeric: Represent hard coded numbers. EJB QL has two types of numeric literals: Exact and Approximate. • Boolean: Can be TRUE or FALSE and it is not case-sensitive. J2EE Server Components

  31. Enterprise JavaBeans Query Language (Contd.) • Built-in Functions in EJB-QL • The built-in string functions in EJB QL are: • CONCAT(String1, String2) • SUBSTRING(String, start, length) • LOCATE(String1, String2 [, start]) • LENGTH(String) • The built-in arithmetic functions in EJB QL are: • ABS(number) • SQRT(double) J2EE Server Components

  32. Enterprise JavaBeans Query Language (Contd.) • Precedence of Operators in EJB QL • In the operator precedence list, an operator appearing above another operator has a higher precedence. • The operators according to their decreasing precedence are: • Navigation operator • Arithmetic operator • Comparison operators • Logical operators J2EE Server Components

  33. Enterprise JavaBeans Query Language (Contd.) • Implementing EJB QL Queries • EJB QL statements are defined in the deployment descriptor of a CMP entity bean. • Tags used for implementing EJB QL statements in the deployment descriptor are: : • <query>…</query> • <method-name>…</method-name> • <method-params> …</method-params> • <method-param>…</method-param> • <ejb-ql>…</ejb-ql> J2EE Server Components

  34. Enterprise JavaBeans Query Language (Contd.) • Path Expressions • Define the navigation paths through the relations between the abstract schemas. • Can appear in the SELECT, WHERE, and FROM clauses of an EJB QL query. • Are of following types: • The BETWEEN Expression • The IN Expression • The LIKE Expression • The NULL Expressions • The EMPTY Expression J2EE Server Components

  35. Enterprise JavaBeans Query Language (Contd.) • EJB QL Restrictions • The restrictions in EJB QL are: • You cannot write comments in EJB QL. • EJB QL does not have any support for comparing entity objects of different types as the CMP entity beans do not allow inheritance. • In EJB QL, the value of date and time is in milliseconds and need to use the Java long millisecond value. You can generate a millisecond value by using the class, java.util.Calendar. J2EE Server Components

  36. Demonstration-Implementing EJB QL in a CMP Entity Bean Application • Problem Statement • In the online banking application, registered customers can view account details using their account ids. Each customer can have multiple accounts in the bank. David needs to use EJB-QL to enable customers to view details for a specific account. J2EE Server Components

  37. Demonstration-Implementing EJB QL in a CMP Entity Bean Application (Contd.) • Solution • To solve the problem, perform the following tasks : • Create the CMP entity bean home interface. • Create the CMP entity bean remote interface. • Create the CMP entity bean class. • Create the Web Client. • Package the CMP entity bean. • Package the Web Client. • Deploy the application. • Test the application. J2EE Server Components

  38. Summary In this lesson, you learned: • Container-Managed Relationship (CMR) refers to the link between the attributes of two or more entity beans. In J2EE, EJB container handles the relationships among entity beans. • Relationships can be either bi-directional or unidirectional. Directionality of a relationship stipulates the direction in which you can navigate a relationship. • In unidirectional relationships, also known as one-way relationships, data navigates in one direction only. In bi-directional relationships, also known as two-way relationships, data can navigate in both directions. • One entity's value or values can be related to one or more values in another entity. This characteristic of a relationship is known as cardinality. Various types of cardinalities in relationships are: one-to-one, one-to-many, many-to-one, many-to-many. J2EE Server Components

  39. Summary(Contd.) • One-to-one relationships are rare in relational databases, as both the entities exist in the same table. One-to-one relationships are used mainly in object databases. • There are two ways of implementing many-to-many relationships, as fake relationships or as true relationships. A fake many-to-many relationship is implemented between two tables by creating an association table in a database. The association table consists of the foreign keys to the other two tables. • The term, multiplicity, defines whether a bean participating in a relationship can be related to one or many beans. • In a deployment descriptor, a relationship between two entity beans is described in two parts, for each entity bean participating in the relationship. You need to specify all the information regarding CMRs in the form of tags in the deployment descriptor. J2EE Server Components

  40. Summary(Contd.) • EJB 2.0 specification provides EJB QL to implement queries in entity beans. EJB QL is similar to SQL in terms of usage and syntax. An EJB QL query consists of clauses: SELECT, FROM, WHERE, and ORDER BY. The WHERE and ORDER BY clauses are optional. • EJB QL supports the String, Numeric and Boolean literals. • There are some restrictions in EJB QL. You cannot write comments in EJB QL. EJB QL does provide support for comparing entity objects of different types as the CMP entity beans do not allow inheritance. J2EE Server Components

More Related