Hi Andy,

I'm reading the description of the three strategies again and I can't figure it out. I think I understand nontransactional and contiguous, but don't understand noncontiguous.

Obtaining a sequence number within the transaction implies an update of the sequence so that no other transaction gets the same number. This sounds like exclusive use of the sequence is required. 

I agree with you that a no-args construction static method newInstance is not sufficient to the task. I think we need a newInstance method that at least supplies the name and strategy. So I'd propose newInstance(String name, String strategy). The reason for String strategy is that the xml is not exhaustive. It just provides values that are "standard".

The xml and the text are in conflict. The text says "The strategy attribute specifies the strategy for generating sequence numbers. Standard values are...". This implies that the strategy is not restricted to these three. But the xml says <!ATTLIST sequence strategy (nontransactional|contiguous|noncontiguous) #REQUIRED> which implies that only these three can be used.

I also don't know how the factory implementation can implement the different strategies without some help from the JDOImplHelper. I suspect that there is some design work needed here.

Other experts,

Any insights here?

Craig

On Sep 15, 2005, at 1:12 AM, Andy Jefferson wrote:

*** For factory sequences (not defined in the database) is the API
sufficient to use the sequence in the three modes: nontransactional,
contiguous, and noncontiguous? ***


Well, the implementation has to call factory.newInstance() to create the 
sequence, but has no way of telling the factory whether it wants a 
contiguous, noncontiguous, or nontransactional sequence.

Really depends whether the users sequence that is created by the factory will 
typically be able to operate in all 3 strategies. I would guess that most 
sequences would support one of the 3 strategies, so by saying that they want 
to use a particular factory, then they are implicitly electing the strategy 
that will be used.

If it is really necessary to allow a factory to create a sequence in any of 
the 3 strategies then we could add a requirement on the factory of having a 
static newInstance(int strategy) method, and the "strategy" value specified 
in the metadata could be passed in. If the metadata has no value for strategy 
then the newInstance() method is called.



*** Does Derby support sequences? ***


No. 
DB2, PostgreSQL, Oracle, Firebird, SAPDB, McKoi and maybe some others do. 
The JDO impl can clearly generate a sequence using other means where there is 
no native RDBMS support.


-- 
Andy


Craig Russell

Architect, Sun Java Enterprise System http://java.sun.com/products/jdo

408 276-5638 mailto:[EMAIL PROTECTED]

P.S. A good JDO? O, Gasp!


Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to