1.2. JPA
Prev | Chapter 1. Kodo Sample Code | Next

## 1.2. JPA

### 1.2.1. Sample Human Resources Model

The files for this sample are located in the `samples/persistence/models/humres` directory of the Kodo installation. This sample demonstrates the mapping of an example "Human Resources" schema. The following concepts are illustrated in this sample:

- Value Mappings

- One to One Mappings

- One to Many Mappings (with and without inverses)

### 1.2.2. JMX Management

This sample shows how to use the Kodo's JMX Management features. In order to see an example of runtime management:

- Ensure that the Kodo distribution root directory is in your `CLASSPATH`

- Ensure that an appropriate `META-INF/persistence.xml` is in a directory in your `CLASSPATH` or in the root level of a jar in your `CLASSPATH`

- Ensure that your `CLASSPATH` has all of the jars distributed with Kodo

- `javac *.java`

- `kodoc -p persistence.xml Animal.java Dog.java Collar.java`

- `mappingtool -p persistence.xml Animal.java Dog.java Collar.java`

- Enumerate the persistent classes in your `persistence.xml` file: `<class>samples.persistence.management.Animal</class> <class>samples.persistence.management.Dog</class> <class>samples.persistence.management.Collar</class>`

- `java samples.persistence.management.SeedDatabase`

- Add the following line to your `persistence.xml` file: `<property name="kodo.ManagementConfiguration" value="local-mgmt"/>`

- Run the sample program which will bring up Kodo's management console upon initialization: `java samples.persistence.management.ManagementMain`

The Kodo ProfilingAgent also has a JMX MBean. You can see an example of profiling if you turn on the ProfilingAgent by making the following setting in your `persistence.xml` file:

- `<property name="kodo.ManagementConfiguration" value="local-mgmt-prof"/>`

The `Dog` class includes a field `collar` which has been marked as a lazily loaded field. After seeing the profiling data, you may want to enable eager fetching on the field to see how the performance profile changes. Edit `Dog.java` and change the `@OneToOne` annotation fetch attribute to `FetchType.EAGER`. Recompile and reenhance `Dog` and run the sample again to see the changes.

Note that the Kodo data cache also has a JMX MBean. You can see an example of cache management if you turn on the data cache by adding the following settings to your `persistence.xml` file:

- `<property name="kodo.DataCache" value="true"/>`

- `<property name="kodo.RemoteCommitProvider" value="sjvm"/>`

Kodo's management and profiling tools can be used in a wide range of modes and environments. For example, by setting the `kodo.ManagementConfiguration` setting to `profiling-gui` , you can use the profiling tool exclusively. You can have Kodo connect and integrate with your existing JMX configuration such as provided by your application server or products such as `MX4J`. For further details on configuring Kodo management and profiling tools, see Chapter 12, Management and Monitoring.

To extend Kodo's monitoring abilities to your own code, you can use `TimeWatch`. An example of how to use the TimeWatch can be found in `QueryThread.java`. A TimeWatch allows for monitoring of named code blocks.

Prev | Up | Next
Chapter 1. Kodo Sample Code | Home | 1.3. JDO