On 13/01/2004 15:44, "Thomas Mahler" <[EMAIL PROTECTED]> wrote:
> Hi Pedro,
>
> Pedro Salgado wrote:
> <snip>
>>>
>>> Sure, this is much cleaner. But my code is only one line ;-)
>>
>>
>> Yes, but if I make an additional util class I can get the same effect (1
>> line) and abstract from the JDO implementation ;)... Maybe one more private
>> attribute for the pmf on usecase implementation classes...
>
> you are right. Of course it makes sense to hide the actual JDO
> implementation from the user code.
>
>
>>
>>>> Another question...
>>>>
>>>> What are the limitations of this JDO plugin? Can I use it safely for
>>>> makePersistent, deletePersistent and getObjectById and transaction
>>>> management (these are the only methods I need)?
>>>>
>>>
>>> I don't know of any restriction wrt. the JDO programming model.
>>> The only thing that is problematic is the query mechanism:
>>> if a JDOQL query is processed, the JDORI load the complete extent (i.e.
>>> all instance of a class) and matches each object against the search
>>> criteria. This can be a performance killer for large tables.
>>
>>
>> What if I use directly the JDBC connection using PersistenceBroker? Can't
>> I have the best of both worlds?
>
> sure you can. But of course your app is than no longer purely JDO
> compliant...
>
>> I don't want object cache... At least for now... So I am currently using a
>> mixed solution between OJB Persistence Broker and JDBC. This way I
>> make/delete/getByPK persistent objects very easily (and have a simpler yet
>> effective model) and have the performance I need with JDBC (I guess this
>> implies that I can't have object cache).
>
> depends on what you do exactly...
>
>> I started abstracting OJB so I could switch to JDO in the future but, I
>> realized I was developing something that already existed :D... So now I am
>> planning to move to OJB JDO plugin but I am having second thoughts whether I
>> can use the same JDBC retrieval strategy (for PersistenceBroker it worked
>> very well).
>>
>
> sure, that's possible.
> With my statements I was referring to the *internals* of SUN's JDO RI.
> it provides a plugin mechanism that abstracts the backen storage. An the
> OjbStore is an incarnation of such a plugin.
> So when I coded the OjbStore Plugin I had no options to do any kind of
> jdbc by passing or something. Simply because the RI never aks the Plugin
> to perform any kind of query, but simply asks: give me all instances.
>
> The only solution would be to change parts of SUN's JDO RI which is not
> possible to us as it is closed source.
>
> But you are talking about *external* user code. Of course you can do any
> kind of mixture of OJB Apis. You can use JDO, PB, ODMG and OTM in
> paralell and spice it with some JDBC calls. no problem!
ok.
> You just have to take care with transaction boundaries.
Even if I use JDBC calls just for more complex selects (just to present
data to the user) and insert, deletes, updates and selects by primary key
through JDO?
Do I really need to begin and end a transaction even if I am just getting
data from the database to present it to the user?
I am checking the OJB-JDO plugin and it seems that the plugin uses pbroker
to get a transaction -> they share the same transaction management system?
Or are you saying that OJB(in general)/JDBC may cause non-transaction-safe
operation?
Would this solve the transaction problems?
try {
broker.beginTransaction();
Result result = null;
Connection conn = broker.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
result = ResultSupport.toResult(rs);
rs.close();
broker.commitTransaction();
} catch (Exception e) {
log.error(query);
log.error(e);
broker.abortTransaction();
}
return result;
Thanks for your responses. They have been a great help.
Pedro Salgado
>
> cu,
> thomas
>
>>
>>
>>> unfortunately the JDORI plugin mechanims does not provide any interface
>>> to delegate queries down to the persistence kernel. SO OJB can't do any
>>> optimizations here and must load all instances of the extent and reach
>>> them back to the JDORI layers. This is one of the main reasons why we
>>> want to write our own JDO implementation.
>>>
>>> The good news in your case: getObjectById() is not affected by this
>>> problem and works very efficiently.
>>
>>
>> That is certainly good.
>>
>> Thank you for your response,
>>
>> Pedro Salgado
>>
>>
>>> cheers,
>>> thomas
>>>
>>>
>>>
>>>
>>>> Thank you,
>>>>
>>>> Pedro Salgado
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]