I am happy to have an ORM added. I'm not really a fan of adding <Class>DAO,
<Class>Service, <Class>ServiceImpl for each class, it feels verbose, but I
guess it separates concerns. My coworkers' experience with Hibernate is
that it does 90% of things well, but the remaining 10% is a major pain.
Code where you thought you were making 1 query turns into thousands of
queries. I'd like to see some performance comparisons between our native
SQL, and hibernate's execution plan. Hibernate's caching and lazy-loading
sound like improvements though.

I'm supportive, I'll dig in, to see if I find any deal breakers.

________________
Peter Dietz
Longsight
www.longsight.com
pe...@longsight.com
p: 740-599-5005 x809

On Thu, Aug 6, 2015 at 11:20 AM, Bram Luyten <b...@atmire.com> wrote:

> +1
>
> Bram
>
> --
> [image: logo]
> *Bram Luyten*
> *250 Lucius Gordon Drive, Suite B-3A, West Henrietta, NY 14586*
> *Esperantolaan 4, Heverlee 3001, Belgium*
> www.atmire.com
> <http://atmire.com/website/?q=services&utm_source=emailfooter&utm_medium=email&utm_campaign=braml>
>
>
> On 6 August 2015 at 16:50, Tim Donohue <tdono...@duraspace.org> wrote:
>
>> I vote +1
>>
>> - Tim
>>
>>
>> On 8/6/2015 9:47 AM, Tim Donohue wrote:
>>
>> Hi Developers / Committers,
>>
>> As mentioned in yesterday's developers meeting, I'm calling a public VOTE
>> around whether we include the Services API refactoring in the upcoming
>> DSpace 6.0 release.  As this change constitutes a major code refactor of
>> the "dspace-api" (DSpace Java API), we'd appreciate feedback from anyone on
>> this direction for 6.0.  (If you have not yet read about the Services API
>> refactoring, a brief summary and links to more information is provided at
>> the end of this email)
>>
>> Please VOTE with one of these three options:
>>
>> +1 = "I agree. We should include Services API refactoring in 6.0"
>>
>>  0  = "I'm undecided / unsure" (Please provide a reason)
>>
>> -1  = "I disagree. The Services API refactoring should NOT be included in
>> 6.0"  (Please provide a reason why you disagree)
>>
>> Per our Voting Procedures [1], a vote on code modifications requires: "at
>> least three positive (+1) votes, and no negative votes (-1) to pass. In
>> this scenario, a negative vote constitutes a 'veto'."  While *anyone* is
>> welcome to vote, only Committers have "binding" votes (and can cast a
>> veto).  Others are free to vote to express your opinion, but those votes
>> are considered advisory in nature.
>>
>> This public vote will be open until *15:00 UTC (11:00am EDT) on
>> Wednesday, August 12* (which is the time of our next Developer Meeting).
>>
>> If there are any questions, feel free to ask them on this thread.
>>
>>
>> *Summary of Services API refactoring*
>>
>> The Services API refactoring is a major refactoring of the "dspace-api"
>> (DSpace's Java API) to better support "separation of
>> concerns/responsibilities". Simply put, often, in the existing API, there
>> is an intermingling of business logic and database logic which is difficult
>> to maintain, debug and/or build against. One of the most obvious examples
>> is how we deal with database software support (PostgreSQL vs. Oracle), but
>> such intermingling of logic exists in many of our core classes. The DSpace
>> "Services API" attempts to tease apart the database logic from the business
>> logic into separate layers, while also adding support for Hibernate (
>> http://hibernate.org).  The goal is to provide an easier to maintain,
>> more modular API, while also enhancing how we deal with database logic in
>> general (via Hibernate).
>>
>> Much more information with documentation, tutorials/examples, and a video
>> presentation at:
>> https://wiki.duraspace.org/display/DSPACE/DSpace+Service+based+api
>>
>> What does adding this refactor to 6.0 mean?
>>
>>    - This is essentially a *new* Java API for DSpace.  But, it performs
>>    a very important refactor (see "Pros" below).
>>    - It is not backwards compatible with the existing API.  All
>>    developers and Committers who work with the Java API will need to learn
>>    this new API, as all future development will require using this Java API.
>>       - Committers will be expected to learn, use and support this API
>>       immediately.  @mire will be providing additional training materials /
>>       examples to help everyone get up to speed.
>>       - We also will need immediate help from Committers (or other
>>       volunteers) to refactor and test all other modules within DSpace.
>>       Currently, only the XMLUI has been refactored to support this new API. 
>> All
>>       other modules (JSPUI, OAI, REST, RDF, SWORD, etc) will need similar
>>       refactoring as soon as possible.
>>       - If this refactor is voted in, Committers will immediately do the
>>    following:
>>       - The "master" branch will be temporarily frozen. We'll ask for no
>>       new changes until this API can be merged (PRs can still be created, 
>> but we
>>       will refrain from merging them)
>>       - We'll start a new (temporary) feature branch (under
>>       DSpace/DSpace) based of latest "master" and merge the existing 
>> Services API
>>       code there.
>>       - We'll then rapidly work together to refactor and test all other
>>       modules based on the new API. (If we work as a team, the goal would be 
>> for
>>       this process to only take a few weeks)
>>       - Once everything is refactored against this API and passes our
>>       Unit Tests, the Services API code will be merged into "master". At this
>>       point, "master" will be unfrozen, and we can again merge in PRs for 
>> the 6.0
>>       release.
>>
>> PROS to adding to 6.0:
>>
>>    - It modularizes our primary API in a way that makes it much easier
>>    to achieve future goals on our Roadmap [2] (especially, moving us towards
>>    potentially better support of third-party modules)
>>    - It cleans up one of the "messiest" areas of our existing API, the
>>    Database management / hardcoded Oracle and PostgreSQL queries, in favor of
>>    using Hibernate.  This allows us the potential to support additional
>>    database platforms in the future (e.g. MySQL or similar). It decreases the
>>    likelihood of Oracle-specific bugs (which have always been a problem), as
>>    the Oracle queries are delegated to Hibernate. It also simplifies the
>>    process of testing for database-specific problems in general (as again, 
>> all
>>    queries are delegated to Hibernate).
>>    - It begins teasing apart a true "business logic layer" in the API
>>    (see the "service layer" of this new API)
>>    - The API itself will not affect the fresh installation or upgrade
>>    process of DSpace 6.0, provided that you have not made local changes that
>>    rely on the existing Java API (dspace-api). If you have made such local
>>    changes, the refactor process should not be difficult, but it will be
>>    necessary before you can successfully upgrade to 6.0.
>>
>> CONS:
>>
>>    - It is not backwards compatible with the existing Java API.  Again,
>>    anyone who has made customizations that rely on the Java API (dspace-api)
>>    may need to refactor their local customization. But, we believe that vast
>>    majority of institutions (likely 90% or more) should not experience any
>>    upgrade difficulties, as most only make customizations to the theme / look
>>    and feel of either the XMLUI or JSPUI.
>>    - As it is not backwards compatible, this does mean that existing PRs
>>    (Pull Requests) reliant on the Java API may need refactoring/rebasing.
>>    Unfortunately there's no easy way around this, but examples already exist
>>    in the documentation (see wiki page linked above) showing how to perform
>>    common tasks via the new API.
>>    - As this is a major change, it could affect our 6.0 timelines unless
>>    we can work together to quickly get this change merged and tested.  The
>>    quicker the merge process occurs, the more rapidly we can stabilize
>>    everything (and refactor existing PRs as needed).
>>
>>
>> [1] https://wiki.duraspace.org/display/DSPACE/Developer+Voting+Procedures
>> [2] https://wiki.duraspace.org/display/DSPACE/RoadMap
>>
>> --
>> Tim Donohue
>> Technical Lead for DSpace & DSpaceDirect
>> DuraSpace.org | DSpace.org | DSpaceDirect.org
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>>
>> _______________________________________________
>> Dspace-devel mailing list
>> Dspace-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/dspace-devel
>>
>>
>
>
> ------------------------------------------------------------------------------
>
> _______________________________________________
> Dspace-devel mailing list
> Dspace-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/dspace-devel
>
>
------------------------------------------------------------------------------
_______________________________________________
Dspace-devel mailing list
Dspace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspace-devel

Reply via email to