## Secondary Tables

The EJB specification allows you to map an entity bean to multiple tables. You do this by using the `@SecondaryTable` annotation.

The Customer bean maps its address properties to a separate ADDRESS table. The first thing it does is define the secondary table.

    @Entity
    @Table(name = "CUSTOMER")
    @SecondaryTable(name = "EMBEDDED_ADDRESS", join = {@JoinColumn(name = "ADDRESS_ID")})
    public class Customer implements java.io.Serializable
    {

The `@JoinColumn` of the secondary table must match the value of the Customer's primary key.

To map individual properties to a secondary table you use the `secondaryTable` member value of `@Column`.

       @Column(name = "STREET", secondaryTable = "EMBEDDED_ADDRESS")
       public String getStreet()
       {
          return street;
       }

#### Building and Running

To build and run the example, make sure you have `ejb3.deployer` installed in JBoss 4.0.x and have JBoss running. See the reference manual on how to install EJB 3.0.

    Unix:    $ export JBOSS_HOME=<where your jboss 4.0 distribution is>
    Windows: $ set JBOSS_HOME=<where your jboss 4.0 distribution is>
    $ ant
    $ ant run

    run:
         [java] Create Bill Burke and Monica Smith
         [java] 2004-10-06 22:27:50,344 INFO org.jboss.remoting.InvokerRegistry[main] - Failed to load soap remoting transpo
    rt: org/apache/axis/AxisFault
         [java] Bill and Monica get married
         [java] Get all the Burkes
         [java] There are now 2 Burkes

The INFO message you can ignore. It will be fixed in later releases of JBoss 4.0.

#### View the tables and rows

You can view the tables created by JBoss by going to the Hypersonic SQL service, scrolling down to the `startDatabaseManager` button and clicking it. A Hypersonic SQL window will be minimized, but you can open it up to look at the tables and do queries.

#### Jar structure

EJB 3.0 beans must be packaged in a JAR file with the suffix `.jar`. Running the ant script above creates a JAR file within the deploy/ directory of JBoss. All that needs to be in that jar is your server-side class files and additionally, you will probably need to define a hibernate.properties file in the META-INF directory of the JAR. hibernate.properties is needed if you need to hook in a datasource other than JBoss's DefaultDS, or change the caching of Hibernate. See the EJB 3.0 reference manual and Hibernate reference manual for more details.f