Presentation is loading. Please wait.

Presentation is loading. Please wait.

Enterprise JavaBeans 2.0 Wu Lu (Cont’d). EJB2.0 Query Language EJB QL is a declarative language similar in many respects to SQL Is intended to be portable.

Similar presentations


Presentation on theme: "Enterprise JavaBeans 2.0 Wu Lu (Cont’d). EJB2.0 Query Language EJB QL is a declarative language similar in many respects to SQL Is intended to be portable."— Presentation transcript:

1 Enterprise JavaBeans 2.0 Wu Lu (Cont’d)

2 EJB2.0 Query Language EJB QL is a declarative language similar in many respects to SQL Is intended to be portable to all EJB2.0-compliant containers and persistence managers.

3 The Usage of Find Method in EJB1.1 Declare find method in home interface Modify the xml file: C:\orion\application-deployments\factory\ejbs\orion-ejb-jar.xml  Advange of Query Language (QL) : Developed and tested once, Use anywhere

4 Methods which use QL Finder Methods Select Methods 1. They are not exposed to clients. They are used in the implementation class alone. 2. They allow the programmer to retrieve dependent objects, values, or related EJBs based on relevant search criteria.

5 Advantages of using a select method A select method written in QL can be more efficient than java programming. Declarative SQL language is more maintainable and less error prone

6 Types of Select Method ejbSelect ---Operate on all instances of that entity ---Can return individual instances or collections of any type represented by a cmp-field, as well as remote interfaces represented by a cmr-field. ejbSelect InEntity ---Associated with a particular entity identity. ---Can not be used from the implementations of a home-interface business method. ---Introduced as a way of efficiently navigating the EJBs relationships with other entity beans and with its dependent objects **METHOD represents a descriptive name for the activity of the method.

7 Where to specify a Query A query is specified in two parts: Method declaration Specify the QL in XML deployment descriptor

8 Find Method: Declared in the home interface, just as it is for EJB1.1 cmp Returning the remote interface type Must have a name of the form findByXXX Throw RemoteException and FinderException Method declaration(1)

9 Method declaration(2) Public abstract class SportTeamEJB implements EntityBean { abstract public String ejbSelectShipToCityInEntity() throws FinderExecption; } Select Method: 1.Declared as abstract in the bean’s main implementation class. 2. Must have a name of the form ejbSelect () or ejbSelect InEntity() 3. Throw javax.ejb.FinderException 4. Return type can be individual instances or collections of any type of cmp-field and cmr-field 5. The collection class must be either java.util.Collection or java.util.Set

10 Specify query language 1.Specify in the XML deployment descriptor 2.A query is defined as a element as a child of the relevant element. 3.A query has 3 parts: ---an optional description ---a method it applied ---the query language string ejbSelectOverdueLibraryBooksInEntity SELECT b FROM b in books WHERE overdue is TRUE

11 How to specify a query An EJB QL string may have up to 3 clauses: 1. Select : indicate the return type of the query or of the instances in a returned collection. 2. From: declare variables that represent navigation paths in your schema ( correlation variables). These variables are used in SELECT or WHERE clauses. 3. Where: a conditional expression that limits the results of your query. It can include parameters from the finder or select method.

12 The concept of schema Is the definition of its cmp-fields and cmr-fields A schema type has a name. Entity bean: the name is specified in the deployment descriptor with the element Dependent object: same as the dependent object name

13 The concept of schema Every query in an entity bean must use that bean’s schema, or the schema of a related objects in the same ejb-jar, for navigation. A bean’s schema is different from its remote interface. Can not refer to a schema of an entity or dependent object that is defined outside your ejb-jar. You may call finder methods on entities outside your JAR, but you may not navigate to their dependent objects or refer to their state.

14 OrderBean Number custname lineitems Order_date Shippine_address Billing_address Address ( dependent object ) street city state Postal_code Lineitem ( dependent object ) product quantity shipped ProductBean name description type

15 Navigation Operator “.” Use navigation operator “.” to traverse cmp-and cmr- fields. SELECT shipping_address.city String ejbSelectShipToCityInEntity() throws FinderException Java.util.Collection ejbSelectShipToCity() throws FinderException Java.util.Set ejbSelectShipToCity() throws FinderException SELECT shipping_address WHERE shipping_address.state=‘NY’ WHERE billing_address.state=‘MA’

16 Navigating Over Collections Can not use navigation operator to navigate into a many-valued relationship. SELECT lineitems.product.name WHERE lineitems.shipped=TRUE Declare a correlation variable in the From clause SELECT 1.product.name FROM 1 in lineitems WHERE 1.shipped=TRUE

17 Input Parameters To parameterize a query: 1. Add the appropriate parameters to the method declaration. 2. Refer to those parameters in the WHERE clause with a question mark, followed by a index of the parameter in the method declaration. 3. Date literals need to be expressed as a standard Java long milliseconds value. OrderEJB findByCustomerName(String custname) throws FinderException WHERE custname=?1

18 Other Entity Beans Query references to entity beans that are within the same ejb-jar and use the EJB2.0 persistence model represent a schema. SELECT 1.product.name FROM 1in lineitems WHERE 1.shipped= TRUE Query references to entity beans that are outside the eib-jar or use the EJB1.1 persistence model represent the remote interface of the entity bean. SELECT 1.product FROM 1in lineitems WHERE 1.shipped= TRUE The remote interface navigation operation => SELECT 1=>product FROM 1 in lineitems WHERE 1.shipped=true

19 Where Clause Options Logical operator: NOT, AND,OR Comparison operator:=,>,>=, Types: number, string, boolean, object Comparison for entity bean remote references or schemas are done by compare their primary key values. Comparison for dependent objects are also probably done by compare their primary key values. Arithmetic operators: +, -, *, / BETWEEN expression: [NOT] BETWEEN x AND y

20 IN expression: [NOT] IN (string, …) Entity-reference [NOT] IN (finder-expression) LIKE expression: [NOT] LIKE pattern [ESCAPE character] _: representing any single character %:representing any sequence of zero or more characters NULL test: IS [NOT] NULL

21 Queries from the Manufacturing Application (1) Location: application-server specific file (2) Format: application-server specific format Orders findOpenOrders Orders findUncompletedOrders

22 (1)Location: deployment descriptor (2)Format: in a standard format(EJB QL) findOpenOrders WHERE status LIKE ‘o%’ findUncompletedOrders WHERE status NOT LIKE ‘c%’ AND status NOT LIKE ‘f%’

23 Message-Driven Beans Advantages that messaging can provide: 1. Messaging can provide reliable, asynchronous delivery of information from the client to server. 2. Messaging can be a simple way to provide interoperability with other enterprise components. 3. Messaging can be used to implement a public-subscribe architecture. A message-driven bean can be a component that listens for messages on a particular topic.

24 MDB Vs Other types of EJB Similar to a stateless session bean in terms of the role it will play in architecture. It is an entry point into your business logic from a client. Can call methods on stateless session EJBs and on entity EJBs. Updates to resources such as a database can be made in the same transaction as message acknowledgement. If the transaction is rolled-back, the message would not be acknowledged and it will be redelivered.

25 MDB Vs Other types of EJB Difference: It has neither a home nor a remote interface. Instead, its public interface consists of a single onMessage() method called by the EJB container when messages arrive. The onMessage() method has a single argument: the message that is being delivered. Exception handling is different. The onMessage() method does not throw any checked and unchecked exception. If a run time exception is thrown away, the event is logged, the instance of the bean is discarded, and any existing transaction is rolled back.

26 Message-driven beans do not have a client security context because that information is not propagated with a message. Message-driven beans can execute in the context of a transaction. The transaction can be bean- or container-managed. As there is no way to propagate an existing transactional context, a contained-managed transaction must be newly created. EJB container handles message acknowledgement. The bean developer should not use the JMS API for message acknowledgement.

27 Lifecycle Methods A message-driven bean must implement the javax.ejb.MessageDrivenBean interface setMessageDrivenContext(MessageDrivenContext mdc) It’s similar to the EntityContext or SessionContext. ejbCreate() ejbRemove() A message-driven bean instance is single-threaded. A container may instantiate multiple instances of message-driven beans to process message concurrently

28 MDB and JMS A message-driven bean is associated with a single JMS topic or queue. The deployer associates the bean with a particular topic or queue when the bean is deployed in the enterprise’s environment. It’s better to associate ONE message-driven bean with ONE JMS topic or queue. See chap28 for more details

29 Package mypackage Import javax.ejb.*; Import javax.jms.*; Public void onMessage(Message msg) { //your business logic } Public void setMessageDrivenContext(MessageDrivenContext mdc) { this.mdc=mdc; } Public void ejbCreate() { // often empty } Public void ejbRemove(){ // often empty }

30 EJB 2.0 compliant persistence manager platform--ePersistJ™ 2.0 Release at 03/12/2001 EJB-QL support for portable select and selectInEntity methods Complete support for one-to-one, one-to-many and many- to-many relations among entity.

31 Questions ?


Download ppt "Enterprise JavaBeans 2.0 Wu Lu (Cont’d). EJB2.0 Query Language EJB QL is a declarative language similar in many respects to SQL Is intended to be portable."

Similar presentations


Ads by Google