Enterprise Java Beans 3.0

by Sandeep Desai (http://www.thedesai.net)

 

 

EJB 3 uses Java Persistence API

 

Java Persistence API can be used in Java Application does not need J2EE Server like EJB 2

 

Oracle JDeveloper 10.1.3.1 includes support for creating Java SE EJB3 applications

 

All annotations have an XML equivalent

 

Message Bean

Entity Bean

Session Bean

 

Persistence Unit (Persistence.xml)

 

persistence.xml

<?xml version="1.0" encoding="windows-1252" ?>

<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"

             version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">

  <persistence-unit name="ejb3test">

    <class>net.thedesai.ejb3.Dept</class>

    <class>net.thedesai.ejb3.Emp</class>

    <properties>

      <property name="toplink.jdbc.driver" value="oracle.jdbc.OracleDriver"/>

      <property name="toplink.jdbc.url"

                value="jdbc:oracle:thin:@localhost:1521:ORCL"/>

      <property name="toplink.jdbc.user" value="scott"/>

      <property name="toplink.jdbc.password"

                value="3E20F8982C53F4ABA825E30206EC8ADE"/>

      <property name="toplink.target-database" value="Oracle"/>

      <property name="toplink.logging.level" value="FINER"/>

    </properties>

  </persistence-unit>

</persistence>

 

Persistence Context

 

transaction scoped example requires PersistenceContext to be injected

@PersistenceContext(unitName=”foo”)

EntityManager entityManager;

 

@TransactionAttribute(REQUIRED)

public void updateEmp() {

   Employee emp = entityManager.find(Employee.class, 1);

   emp.setSalary(1234567);

}

 

Extend Persistence Context example

Employee emp = null;

 

transaction.begin();

emp = extendedEntityManager.find(Employee.class, 1);

transaction.commit();

 

transaction.begin();

emp.setSalary(7654321);

extendedEntityManager.flush();

transaction.commit();

 

Client Applications

 

EJB Servers (Primary Services)

1.      EntityManager provides method to create, find, query, remove and update beans

2.      can attach and detach instance, detached instance can be sent across network

3.      manage m:n relationship

4.      manage collections

5.  @Entity @Table(name=”EMP”) public class Emp {

6.    private int id, private String name;

7.    @Column(name=”NAME”) ..get() set() .. @Id @Column(name=”ID”) }

1.      Any SOAP Client e.g. .NET can access stateless session bean

1.      javax.naming.Context c = new javax.naming.InitialContext();

2.      Object ref = c.lookup(“FooRemote);

3.      FooRemote f = PortableRemoteObject.narrow(ref, FooRemote.class);

4.      f.doSomething(...);

 

 

Limitations

 

Books:

 

Links