I came across the Je suis tombé sur le post poste from à partir de Jesus Rodriguez Jesus Rodriguez where he tries to find good reasons to convince management to use Hibernate. où il tente de trouver de bonnes raisons de convaincre la direction d'utiliser Hibernate.

[[I tried posting but it required me to create an account, also I felt that the topic might be of general interest. [[J'ai essayé poste mais il a besoin-moi de créer un compte, je me suis senti aussi que le sujet pourrait être d'intérêt général. So I made this a separate post and included him in trackback & pingback.]] J'ai donc fait un poste distinct et inclus dans un pingback & trackback.]]

In his case the company followed two models: Dans son cas, la société suite à deux modèles:
1. Contains all SQL in a single class Contient tous SQL dans une seule classe
2. “One involves creating a helper object which exists between the domain object and a DatabaseCommand (our persistence class). «L'un passe par la création d'un objet d'aide qui existe entre le domaine et un objet DatabaseCommand (notre persistance classe). The domain objects do not know how to generate SQL. Le domaine des objets ne sais pas comment générer SQL. They simply know that there exists a class that accepts helpers. Ils savent simplement qu'il existe une classe qui accepte aides. The helper has methods like getStoreColumns() and getStoreValues() which return the columns used for inserts and their corresponding values, respectively. L'aide de méthodes comme l'a getStoreColumns () et getStoreValues () pour retourner les colonnes utilisées pour les encarts et de leurs valeurs correspondantes, respectivement. The helpers have direct knowledge of the domain object. Les aides ont une connaissance directe du domaine objet. The DatabaseCommand knows how to build SQL statements filling in the missing information by asking the helpers.” Le DatabaseCommand sait comment construire des requêtes SQL remplir les informations manquantes en posant les aides. "

He has described the pros and cons of the system in his post. Il a décrit les avantages et les inconvénients du système dans son poste.

Couple of thoughts & suggestions: Quelques réflexions et suggestions:
In general, approach one has the benefit that creating SQL code can be delegated to database specialists. En général, une approche a l'avantage que la création de code SQL peut être déléguée à des spécialistes de base de données. Also they can optimize the code in there later on (as it is all in a single big file) to eliminate bottlenecks or simply to speed things up. En outre, ils peuvent optimiser le code il plus tard (comme c'est le tout dans un seul gros fichier) afin d'éliminer les goulets d'étranglement ou tout simplement pour accélérer les choses.
Logically though the key value is in isolating the db code. Logiquement, si la valeur de clé est d'isoler la base de données de code. Which can also be achieved by having the classes in a single package. Qui peut aussi être obtenue en ayant les classes dans un seul paquet.

The second approach as you can see is cumbersome and is rather maintenance heavy. La deuxième approche, comme vous pouvez le voir est lourde et l'entretien est plutôt lourd.

The key issue is that in both cases a Object relational mapping is required. La question essentielle est que, dans les deux cas, un objet Relational Mapping est nécessaire. In a company I worked in the past they have created and maintained ( yeah I came in after the deed was done) a home-grown ORM layer. Dans une entreprise, j'ai travaillé dans le passé, ils ont créé et mis à jour (oui je suis arrivé après que l'acte a été fait) un home-grown ORMULAIRE couche. It was a nightmare because of the following key reasons: Il a été un cauchemar parce que des principales raisons suivantes:
1. It was hard to learn and complex to use Il est difficile d'apprendre et complexe à utiliser
2. Complex queries were near impossible Les requêtes complexes, ont été presque impossible
3. Easy queries were very time consuming to do, thereby affecting productivity Facile questions ont été très longs à faire, ce qui nuit à la productivité
4. Because of a general Object structure (we called them BoB - business object, I jokingly named the process bobification) type checking was non-existent thereby leading to hard to find bugs Compte tenu d'une structure d'objets (nous avons appelé les BoB - Business Object, je blague nommé le processus bobification) le type de contrôle a été inexistant ce qui se traduit par difficile de trouver les bogues
5. Debugging was royal pain Royal de débogage a été la douleur

What I learned from this was that maintaining an ORM is a full-time job, specially to make it usable in a wide range of occassions and still make it easy to learn. Ce que j'ai appris de ce que le maintien est un ORM est un emploi à plein temps, spécialement pour le rendre utilisable dans un large éventail d'occasions et encore, il est facile à apprendre. We are not in the business of ORM. Nous ne sommes pas dans le commerce de ORM. We however need the functionaility. Nous avons toutefois besoin du functionaility. Why bother creating and maintaining a home-grown one? Pourquoi la peine de créer et de maintenir un home-grown un? The focus should be on the core competency and surely ORM is not ours. L'accent devrait être mis sur les compétences de base et sûrement ORMULAIRE n'est pas la nôtre. Hibernate and other ORM layers relieves you of the pains. Hibernate ORM et d'autres couches de vous soulage les douleurs. Most of them are easy to learn. La plupart d'entre eux sont faciles à apprendre. I presonally try to avoid ones which tries to create its own sql syntax as it means I have to learn yet another SQL clone. Je presonally essayer d'éviter ceux qui tente de créer sa propre syntaxe SQL, cela signifie que je dois apprendre encore un autre clone de SQL. Normally they also provide a QBE type interface, saw it in hibernate too. Normalement, elles fournissent une interface de type QBE, a vu dans l'hibernation. They are the easiest to use and really help in RAD. Ils sont les plus faciles à utiliser et vraiment contribuer à RAD.

Everyone you hire will have to learn about a home grown ORM, whereas you may get lots of people who have used Hibernate or OJB. Tout le monde vous engagez devrez en apprendre plus sur une maison ORMULAIRE augmenté, alors que vous mai obtenir un grand nombre de personnes qui ont utilisé Hibernate ou OJB. Also for the developers it is a reusable skill. De même, pour les développeurs, c'est réutilisable est une compétence.

I rest my case. Je reste mon cas.