|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.axonframework.domain.AbstractJpaAggregateRoot
public abstract class AbstractJpaAggregateRoot
Implementation of the AggregateRoot interface that allows an aggregate to be stored by a JPA EntityManager. It provides the mechanism to keep track of uncommitted events and maintains a version number based on the number of events generated.
The version number is automatically increased by 1 each time an aggregate is stored. Note that since there is no guarantee that a relationally stored aggregate has an event for each state change, the version of this type of aggregate does not have to be equal to the sequence number of the last Domain Event. This entity stores theAggregate Identifier as a String and the last event sequence number and version as a Long. The Aggregate
Identifier is assigned as the primary key.
| Constructor Summary | |
|---|---|
protected |
AbstractJpaAggregateRoot()
Initializes the aggregate root using a random aggregate identifier. |
protected |
AbstractJpaAggregateRoot(AggregateIdentifier identifier)
Initializes the aggregate root using the provided aggregate identifier. |
| Method Summary | |
|---|---|
void |
commitEvents()
Clears the events currently marked as "uncommitted". |
AggregateIdentifier |
getIdentifier()
Returns the identifier of this aggregate. |
Long |
getLastEventSequenceNumber()
Returns the sequence number of the last event registered by this Aggregate. |
int |
getUncommittedEventCount()
Returns the number of uncommitted events currently available in the aggregate. |
DomainEventStream |
getUncommittedEvents()
Returns a DomainEventStream to the events in the aggregate that have been raised since creation or the last commit. |
Long |
getVersion()
Returns the current version number of the aggregate, or null if the aggregate is newly created. |
protected void |
initializeEventContainer()
Initializes the EventContainer, which keeps track of uncommitted events in this aggregate. |
protected void |
registerEvent(DomainEvent event)
Registers an event to be published when the aggregate is saved. |
protected void |
updateLastEventSequenceNumber()
Updates the last event sequence number (see getLastEventSequenceNumber() to the sequence number of the
last uncommitted event. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
protected AbstractJpaAggregateRoot()
protected AbstractJpaAggregateRoot(AggregateIdentifier identifier)
identifier - the identifier of this aggregate| Method Detail |
|---|
protected final void initializeEventContainer()
protected void updateLastEventSequenceNumber()
getLastEventSequenceNumber() to the sequence number of the
last uncommitted event.
This method is annotated with @PreUpdate and @PrePersist and is expected to be called by the persistence
framework prior to Update or Persist.
protected void registerEvent(DomainEvent event)
event - the event to registerpublic DomainEventStream getUncommittedEvents()
getUncommittedEvents in interface AggregateRootpublic AggregateIdentifier getIdentifier()
getIdentifier in interface AggregateRootpublic void commitEvents()
commitEvents in interface AggregateRootpublic int getUncommittedEventCount()
getUncommittedEventCount in interface AggregateRootpublic Long getLastEventSequenceNumber()
public Long getVersion()
null if the aggregate is newly created. This
version must reflect the version number of the aggregate on which changes are applied.
Each time the aggregate is modified and stored in a repository, the version number must be increased by
at least 1. This version number can be used by optimistic locking strategies and detection of conflicting
concurrent modification.
Typically the sequence number of the last committed event on this aggregate is used as version number.
getVersion in interface AggregateRootnull if no events were ever committed
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||