Jeffrey Blattman wrote:
> i think i disagree. i meant users as in the folks that download roller
> binaries and deploy them. they should care that it performs, that it's
> stable, etc ... but they shouldn't care how roller achieves that. JDO
> vs. hibernate vs. JPA is an implementation detail.
Amen.
>
> (okay, for things like licensing issues, then the deployer cares.)
>
> on the other hand, developers care about this choice because it
> determines whether they can meet the performance and stability goals and
> also how effective they can be implementing new features and fixing bugs.
Absolutely.
>
> my $0.02. i'll shut up now.
Please don't.
>
> Elias Torres wrote:
>> You are right Jeffrey that *end-users* (bloggers) shouldn't care as long
>> as it works and is free to them. However, deployers may have to think
>> about their system uses Hibernate or JDO. At IBM we have to think about
>> the choice besides performance and stability.
>>
>> -Elias
>>
>> Jeffrey Blattman wrote:
>>
>>> if *users* care about whether the system uses hibernate or JDO, then
>>> they are thinking too much :) seriously though, if they have database
>>> pluggability that should be enough. they ought to be thinking about
>>> whether it performs, whether it is stable, etc.
>>>
>>> paksegu wrote:
>>>
>>>> Two Issues facing Roller
>>>> A large Roller Customer who prefers Hibernate. The need
>>>> to satisfy Apache Software license requirement for it to remain an
>>>> Apache project. Implementation can be either JDO or JPA.
>>>> It may see logical to implement both solutions by letting
>>>> Customers and Developers who prefer Hibernate to continue to do so and
>>>> distribute the Hibernate version via www.Java.net, and developers
>>>> feeling the need to satisfy Apache Software requirements choose either
>>>> JDO or JPA to implement. This will seem an extra work but it will be
>>>> great for Roller if everyone if free to implement their form of
>>>> persistent technology.
>>>> Matt Raible <[EMAIL PROTECTED]> wrote:
>>>>
>>>> On 8/15/06, Allen Gilliland wrote:
>>>>
>>>>
>>>>> assuming we agree that we are only focusing on implementing one of the
>>>>> options, we then need to decide which one. just so it's known, i think
>>>>> it's entirely lame that we are getting rid of Hibernate over a silly
>>>>> licensing issue. as a large roller customer i consider it more of a
>>>>> pain than a benefit to have to replace the backend. regardless of that
>>>>> fact, it appears that's what everyone wants to do, so i consider
>>>>> Hibernate to no longer be an option. that leaves JDO and JPA as you
>>>>> mentioned, and i don't really have any preference between the two.
>>>>>
>>>> I don't believe that "everyone wants to do so" is an accurate
>>>> statement. I believe "Apache wants us to do so" is an accurate
>>>> statement. I'd rather stick with Hibernate b/c it's been proven to
>>>> work and I know it well. Remember all the issues we used to
>>>> experience on JRoller? I'd hate to see any of those come back again.
>>>>
>>>> Matt
>>>>
>>>>
>>>>
>>>>> -- Allen
>>>>>
>>>>>
>>>>> Craig L Russell wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Here's what I propose as a starting point for the query interface
>>>>>> between Datamapper Managers and Datamapper Persistence.
>>>>>>
>>>>>> There are enough differences between JDO, JPA, and Hibernate that I
>>>>>> found it really awkward to define a set of methods on
>>>>>> PersistenceStrategy that covered the functionality. In particular,
>>>>>> there
>>>>>> are two methods in JPA that both execute the query and determine the
>>>>>> result shape, and parameters are passed one by one. In JDO, there
>>>>>> is an
>>>>>> API that determines the result shape and one method to execute the
>>>>>> query, passing parameter values. It's trivial to encapsulate these
>>>>>> differences in a Query instance.
>>>>>>
>>>>>> I've included the Query API below for discussion, along with calling
>>>>>> sequence from Mapper.
>>>>>>
>>>>>> Craig
>>>>>>
>>>>>> public class DatamapperPersistenceStrategy {
>>>>>> ...
>>>>>> /**
>>>>>> * Create query.
>>>>>> * @param clazz the class of instances to find
>>>>>> * @param queryName the name of the query
>>>>>> * @throws org.apache.roller.RollerException on any error
>>>>>> */
>>>>>>
>>>>>> public DatamapperQuery newQuery(Class clazz, String queryName)
>>>>>> throws RollerException;
>>>>>> }
>>>>>>
>>>>>> public class DatamapperUserManagerImpl {
>>>>>> ...
>>>>>> public WebsiteData getWebsiteByHandle(String handle, Boolean enabled)
>>>>>> throws RollerException {
>>>>>> // XXX cache websites by handle?
>>>>>> return (WebsiteData)strategy.newQuery(WebsiteData.class,
>>>>>> "getByHandle&&Enabled")
>>>>>> .execute(new Object[]{handle, enabled});
>>>>>> }
>>>>>>
>>>>>> public interface DatamapperQuery {
>>>>>>
>>>>>> /** Execute the query with no parameters.
>>>>>> * @return the results of the query
>>>>>> */
>>>>>> Object execute();
>>>>>>
>>>>>> /** Execute the query with one parameter.
>>>>>> * @param param the parameter
>>>>>> * @return the results of the query
>>>>>> */
>>>>>> Object execute(Object param);
>>>>>>
>>>>>> /** Execute the query with parameters.
>>>>>> * @param params the parameters
>>>>>> * @return the results of the query
>>>>>> */
>>>>>> Object execute(Object[] params);
>>>>>>
>>>>>> /** Remove instances selected by the query with no parameters.
>>>>>> * @return the results of the query
>>>>>> */
>>>>>> void removeAll();
>>>>>>
>>>>>> /** Remove instances selected by the query with one parameter.
>>>>>> * @param param the parameter
>>>>>> * @return the results of the query
>>>>>> */
>>>>>> void removeAll(Object param);
>>>>>>
>>>>>> /** Remove instances selected by the query with parameters.
>>>>>> * @param params the parameters
>>>>>> * @return the results of the query
>>>>>> */
>>>>>> void removeAll(Object[] params);
>>>>>>
>>>>>> /** Set the result to be a single instance (not a List).
>>>>>> * @result the instance on which this method is called
>>>>>> */
>>>>>> DatamapperQuery setUnique();
>>>>>>
>>>>>> /** Set the types of the parameters. This is only needed if the
>>>>>> * parameter types are temporal types, e.g. Date, Time, Calendar.
>>>>>> * @param the types of the parameters in corresponding positions.
>>>>>> * @result the instance on which this method is called
>>>>>> */
>>>>>> DatamapperQuery setTypes(Object[] types);
>>>>>>
>>>>>> /** Set the range of results for this query.
>>>>>> * @fromIncl the beginning row number
>>>>>> * @toExcl the ending row number
>>>>>> * @return the instance on which this method is called
>>>>>> */
>>>>>> DatamapperQuery setRange(long fromIncl, long toExcl);
>>>>>> }
>>>>>>
>>>>>> Craig Russell
>>>>>> [EMAIL PROTECTED] http://db.apache.org/jdo
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>> Ransford Segu-Baffoe
>>>>
>>>> [EMAIL PROTECTED]
>>>> [EMAIL PROTECTED]
>>>>
>>>> http://www.noqturnalmediasystems.com/
>>>> http://www.noqturnalmediasystems.com/Serenade/
>>>> https://serenade.dev.java.net/
>>>> ---------------------------------
>>>> Do you Yahoo!?
>>>> Get on board. You're invited to try the new Yahoo! Mail Beta.
>>>>
>>>>
>