-
Book Overview & Buying
-
Table Of Contents
-
Feedback & Rating
EJB 3.0 Database Persistence with Oracle Fusion Middleware 11g
Metadata annotations were introduced in JDK 5.0 as a means to provide data about an application. Annotations are used for the following purposes:
Generating boilerplate code (code that is repeated in different sections of a Java program) automatically.
Replacing configuration information in configuration files such as deployment descriptors.
Replacing comments in a program.
Informing the compiler about detecting errors and generating or suppressing warnings. The @Deprecated annotation is used to inform the compiler about a deprecated feature, on detecting which the compiler generates a warning. The @Override annotation informs the compiler about an overridden element. If the element is not overridden properly, the compiler generates an error. The @SuppressWarnings annotation is used to inform the compiler to suppress specific warnings.
Runtime processing of annotations by annotating the annotations with the @Retention(RetentionPolicy.RUNTIME) annotation.
EJB 3.0 specification has introduced some metadata annotations for annotating EJB 3.0 applications. EJB 3.0 metadata annotations have reduced the number of classes and interfaces a developer is required to implement. Also, the metadata annotations have eliminated the requirement for an EJB deployment descriptor. Three types of metadata annotations are used in EJB 3.0: EJB 3.0 annotations, object/relational mapping annotations, and annotations for resource injection and security. Though annotations follow a different semantic than Java code, they help in reducing code lines and—in the case of EJB—increase cross-platform portability. The EJB 3.0 annotations are defined in the javax.ejb package. For example, the @Stateless annotation specifies that an EJB is a Stateless Session Bean:
import javax.ejb.Stateless;
@Stateless
public class HelloBean implements Hello {
public void hello() {
System.out.println("Hello EJB 3.0!");
}
}
For all the new EJB 3.0, annotations, refer to the EJB 3.0 specification document EJBCore (ejb-3_0-fr-spec-ejbcore.pdf). Persistence annotations are defined in the javax.ejb.persistence package. For example, the @Entity annotation specifies that the EJB is an Entity Bean:
import javax.persistence.*;
@Entity
@Table(name = "Catalog")
public class Catalog implements Serializable {
private long id;
@Id
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
The resource injection and security annotations are defined in the Common Annotations for the Java Platform specification, and are in the javax.annotation and javax.annotation.security packages. For example, the @Resource injection may be used to inject a javax.sql.DataSource resource. First, configure a data source in a Java EE container. Subsequently, inject a data source handle by annotating a declaration for a variable of type javax.sql.DataSource with the @Resource annotation.
@Resource
private javax.sql.DataSource mysqlDS;
public getCatalogEntry(){
Connection conn = mysqlDS.getConnection();
}
Data source injection using the @Resource annotation precludes the requirement for JNDI lookup using an InitialContext object. The security annotations are presented in the following table.
|
Annotation |
Description |
|---|---|
|
DeclareRoles |
Declares references to security roles |
|
RolesAllowed |
Declares the methods that are allowed to invoke the methods of the entity bean |
|
PermitAll |
Specifies that all security roles are allowed to invoke the specified methods. |
|
DenyAll |
Specifies that no security roles are allowed to invoke the specified methods. |
|
RunAs |
Specify a security role as the bean's run-as property. |
Change the font size
Change margin width
Change background colour