Je suis à la recherche d'une librairie Java/cadre/technique de stocker des instructions SQL dans un fichier externe. L'équipe de soutien (y compris les Administrateurs de base de données) doit être en mesure de modifier (légèrement) la déclaration pour les garder synchronisés dans le cas du schéma de la base des changements ou à des fins d'optimisation.
Voici les conditions:
- Le fichier doit être lisible à partir d'un Java l'application, mais aussi doit être modifiable par l'équipe de soutien sans la nécessité des grands éditeurs
- Idéalement, le fichier doit être dans la plaine format texte, mais le XML est OK aussi
- Permettre DML ainsi que des instructions DDL pour être stockée / (extrait
- De nouvelles déclarations peuvent être ajoutés à un stade ultérieur (l'application est assez flexible pour les ramasser et de les exécuter)
- Les déclarations peuvent être regroupées (et exécuté en tant que groupe par l'application)
- États doivent autoriser les paramètres
Notes:
- Une fois extraites, les déclarations exécutée à l'aide du Printemps JDBCTemplate
- Hibernate ou de Printemps du conteneur IOC ne sera pas utilisé
Jusqu'à présent, j'ai réussi à trouver la suite des bibliothèques Java, qui utilisent des fichiers externes pour stocker des instructions SQL. Cependant, je suis surtout intéressé par le stockage plutôt que d'une bibliothèque qui cache tous JDBC "complexités".
-
Exemple de contenu du fichier:
<s:query name="get_emp"> <s:param name="name" type="string"/> <s:sql databases="oracle"> select * from scott.emp join scott.dept on (emp.deptno = dept.deptno) where emp.ename = <s:bind param="name"/> </s:sql> </s:query>
-
Exemple de contenu du fichier:
<sqlMap namespace="Contact""> <typeAlias alias="contact" type="com.sample.contact.Contact"/"> <select id="getContact" parameterClass="int" resultClass="contact""> select CONTACTID as contactId, FIRSTNAME as firstName, LASTNAME as lastName from ADMINISTRATOR.CONTACT where CONTACTID = #id# </select> </sqlMap> <insert id="insertContact" parameterClass="contact"> INSERT INTO ADMINISTRATOR.CONTACT( CONTACTID,FIRSTNAME,LASTNAME) VALUES(#contactId#,#firstName#,#lastName#); </insert> <update id="updateContact" parameterClass="contact"> update ADMINISTRATOR.CONTACT SET FIRSTNAME=#firstName# , LASTNAME=#lastName# where contactid=#contactId# </update> <delete id="deleteContact" parameterClass="int"> DELETE FROM ADMINISTRATOR.CONTACT WHERE CONTACTID=#contactId# </delete>
-
-- This is a comment ADD_MESSAGE { INSERT INTO MyMessage -- another comment (LoginName, Body, CreationDate) -- another comment VALUES (?,?,?) } -- Example of referring to a constant defined above. FETCH_RECENT_MESSAGES { SELECT LoginName, Body, CreationDate FROM MyMessage ORDER BY Id DESC LIMIT ${num_messages_to_view} }
Quelqu'un peut-il recommander une solution qui est essayé et testé?