Я ищу библиотеку Java/framework/метод хранения операторов SQL во внешнем файле. Команда поддержки (включая администраторов баз данных) должна иметь возможность изменять (слегка) инструкцию, чтобы синхронизировать их в случае изменения схемы базы данных или для целей настройки.
Вот требования:
- Файл должен быть доступен для чтения с Java приложение, но также должно быть доступно для редактирования группой поддержки без необходимости модных редакторов
- В идеале файл должен быть простым текстовый формат, но XML тоже ОК.
- Разрешить DML, а также заявления DDL для сохранения/восстановления
- Новые операторы могут быть добавлены на более позднем этапе (приложение достаточно гибко, чтобы их подбирать и выполнять)
- Заявления могут быть сгруппированы (и выполнены в виде группы приложением)
- Заявления должны разрешать параметры
Примечания:
- После извлечения заявления выполняется с помощью Spring s JDBCTemplate
- Hibernate или Spring s контейнер IOC не будет использоваться
До сих пор мне удалось найти следующие библиотеки Java, которые используют внешние файлы для хранения операторов SQL. Однако меня интересует скорее хранилище, чем библиотека, которая скрывает все сложности JDBC.
-
Пример содержимого файла:
<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>
-
Пример содержимого файла:
<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} }
Кто-нибудь может рекомендовать решение, которое проверено и проверено?