| <?xml version="1.0" encoding="utf-8"?> | |
| <!--Arbortext, Inc., 1988-2006, v.4002--> | |
| <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" | |
| "concept.dtd"> | |
| <concept id="cejb3" xml:lang="en-us"> | |
| <title>Plain old <tm tmclass="special" tmowner="Sun Microsystems, Inc." tmtype="tm" | |
| trademark="Java">Java</tm> objects</title> | |
| <titlealts> | |
| <navtitle>POJOs (Plain old Java objects)</navtitle> | |
| <searchtitle>Plain old Java objects (POJOs) in Java EE 5 EJB 3.0 applications</searchtitle> | |
| </titlealts> | |
| <shortdesc>Although POJOs existed before, they play a more important role | |
| in the programming methodology of <tm tmclass="special" tmowner="Sun Microsystems, Inc." | |
| tmtype="tm" trademark="Java">Java</tm> EE 5. Now, you can now create EJB applications | |
| with persistence capabilities by using enterprise beans and entities created | |
| from POJOs.</shortdesc> | |
| <prolog><metadata> | |
| <keywords><indexterm>Enterprise JavaBeans 3.0</indexterm></keywords> | |
| </metadata></prolog> | |
| <conbody> | |
| <p>The complexity of the <tm tmclass="special" tmowner="Sun Microsystems, Inc." | |
| tmtype="tm" trademark="Java">Java</tm> 2 Enterprise Edition framework used | |
| to present a major hurdle for adoption previously. The <tm tmclass="special" | |
| tmowner="Sun Microsystems, Inc." tmtype="tm" trademark="Java">Java</tm> EE | |
| 5 specification sought a simpler development experience by making POJOs the | |
| basis of its design paradigm. The POJO programming model enables you to unit | |
| test outside of the application server, making the whole programming experience | |
| smoother.</p> | |
| <example><title>A simple POJO</title><p>The following code is an example of | |
| a simple POJO. Note that there are no references to any interfaces. To use | |
| this POJO as the basis for an EJB 2.1 application requires additional framework | |
| classes to support it and the class itself would have to implement additional | |
| interfaces.</p><codeblock>public class Test { | |
| String name; | |
| /** | |
| * This is a constructor for a Test Object. | |
| **/ | |
| public Test(){ | |
| name = "Jane"; | |
| } | |
| }</codeblock><p>To create an EJB 3.0 bean, inject a component defining annotation | |
| at the class level. The following example turns a POJO into a stateless session | |
| bean by adding the @Stateless annotation.</p><codeblock>@Stateless | |
| String class Test { | |
| String name; | |
| /** | |
| * This is a constructor for a Test Object. | |
| **/ | |
| public Test () { | |
| name = "jane"; | |
| } | |
| }</codeblock></example> | |
| <example>In a real application, the POJO needs additional business logic. | |
| The fundamental idea of using POJOs in the context of the <tm tmclass="special" | |
| tmowner="Sun Microsystems, Inc." tmtype="tm" trademark="Java">Java</tm> EE | |
| specification is to associate Metadata about your component to be associated | |
| directly in your POJO. This approach reduces the number of artifacts you need | |
| to deal with and makes it easier to ensure the integrity of your Metadata.</example> | |
| <example>The new POJO-based programming model also shifts your concentration | |
| to working on your <tm tmclass="special" tmowner="Sun Microsystems, Inc." | |
| tmtype="tm" trademark="Java">Java</tm> EE 5 components in your <tm tmclass="special" | |
| tmowner="Sun Microsystems, Inc." tmtype="tm" trademark="Java">Java</tm> editor | |
| as opposed to writing business logic in XML. By working with this application | |
| development software, you can take advantage of features that can even further | |
| simplify the process of developing <tm tmclass="special" tmowner="Sun Microsystems, Inc." | |
| tmtype="tm" trademark="Java">Java</tm> EE 5 applications (such as as-you-type | |
| validation, content assist, and refactoring). </example> | |
| </conbody> | |
| </concept> |