On 12-05-03 05:58 PM, Arne Vajhøj wrote:
> On 5/3/2012 4:11 PM, Arved Sandstrom wrote:
>> On 12-05-03 02:51 PM, Arne Vajhøj wrote:
>>> On 5/1/2012 8:14 PM, Arved Sandstrom wrote:
>>>> On 12-05-01 08:26 PM, Arne Vajhøj wrote:
[ SNIP ]
>>>>> And some of the capabilities (like caching) could become
>>>>> very handy in the future.
>>>>
>>>> The operative word being "could". Leaving aside the other management
>>>> capabilities of the persistence context Level 1 cache, like uniqueness
>>>> of identity within a PC, if you are constructing objects with a simple
>>>> mapper like DBUtils you *have* a cache. Your objects are in memory;
>>>> you're not hitting the DB every time you need them.
>>>
>>> That is not really level 1 cache.
>>
>> What do you consider to be a cache? A cache means that you've got your
>> stuff in a storage area that's faster to access than the original
>> location. Usually memory. If I get my stuff through JDBC, and access
>> data afterwards off the ResultSet, that's a cache. If I convert that
>> ResultSet to a collection of objects, and access data in that collection
>> afterwards, that's a cache.
>>
>> Insofar as this level of caching is similar to a persistence context,
>> which is referred to as Level 1 in JPA, I have no problems thinking of
>> it as Level 1 equivalent.
>
> I would define an ORM cache as a cache in the ORM code not a cache
> in my code.
>
> Otherwise any ORM would have a cache since the O will be in memory.
Fair enough.

I pretty much figured that's what you were getting at.
Still, when looking at all the cache offerings out there it's worth
recalling from time to time what they really do.
>>>> As for JPA Level 2, well, that's a decision best approached carefully
>>>> and not made available by default. I surely don't think you need to go
>>>> with JPA just in case you might need Level 2 cache at some point.
>>>
>>> If it was just that: no. But there are other features that also could
>>> become useful.
>>
>> Hopefully you know what you need early on, considering as how you did
>> good requirements analysis. In which case you're using JPA because you
>> already know you need it.
>
> I don't think I have ever seen requirements that actually covered
> all requirements for the actual lifetime of the application.
>
> Arne
>
Nor have I. Although I contend that you should understand your
persistence requirements well enough to know whether JPA is called for.
In fact it's almost always a safe bet; you pretty much need some
concrete reasons *not* to use it [1]. IMO.
AHS
1. Maybe you're writing a JPA implementation, say.

--
A fly was very close to being called a "land," cause that's what they do
half the time.
-- Mitch Hedberg