В производстве мы используем JBoss с JNDI для подключения к базе данных. В конфигурации JNDI у нас есть что-то вроде:
<new-connection-sql>ALTER SESSION SET CURRENT_SCHEMA=XXX</new-connection-sql>
Для разработки я использую run-app
с контейнером Tomcat по умолчанию (Grails 1.3.2) с использованием жестко закодированных аргументов DataSources. До сих пор было достаточно приблизительно аппроксимировать вышеприведенный оператор alter session, используя параметр default_schema
в моей конфигурации разработки. Но этого уже недостаточно из-за использования некоторых собственных операторов Sql. Я не хочу изменять SQL, чтобы он соответствовал моим настройкам разработки (например, путем извлечения значения default_schema
во время выполнения). Я вижу два варианта:
- Возможно, есть эквивалентный
new-connection-sql
аргумент, который я могу использовать в своей конфигурации разработки.
- Если нет, возможно, я смогу перейти на использование JNDI в моей среде разработки. Это было бы хорошо, но, оглядываясь по сторонам, я не смог найти надежных инструкций о том, как это сделать. На самом деле у людей, похоже, проблемы с этим. Более того, я не уверен, что все конфигурации JNDI одинаково принимаются между веб-контейнерами и поддерживает ли Tomcat какой-либо аргумент
new-connection-sql
.
Может ли кто-нибудь помочь мне найти лучший способ сделать это? Спасибо!
Редактировать
Вот исходный код Sql, который я использую (мы нацелены на устаревшую базу данных, которая использует триггер для обновления столбца DATE_CREATE и должна извлекать его таким образом при сохранении):
def getCreationDate() {
if (!creationDate) {
def sql = new Sql(dataSource)
sql.query("select DATE_CREATED from some_view where id=?", [id]) {ResultSet rs ->
rs.next()
creationDate = rs.getTimestamp("DATE_CREATED")
}
}
return creationDate
}