Подключение базы данных Scala Lift для postgresql - PullRequest
1 голос
/ 23 декабря 2011

Я делаю «Поднять в действии» Тимоти Перретта, и книга немного сбивает с толку связь с БД.

Вот ссылка: https://github.com/timperrett/lift-in-action/blob/master/chapter-3/src/main/scala/bootstrap/liftweb/Boot.scala

Запутанная часть, это JNDI. У меня нет Java-фона, так что это немного сбивает с толку, а файлы проповеди тоже сбивают с толку. Это немного похоже на файлы конфигурации или INI-файлы, но все же происходит много чего, что я не понимаю.

Я нашел другой урок: http://exploring.liftweb.net/master/index-8.html @ 8.1.2 Настройка подключения к базе данных

Это немного по-другому. Что мне более знакомо, исходя из фона PHP.

Так в чем же разница? И есть ли преимущества между двумя разными методами? А также второй метод не проверяет, не установлено ли соединение, как я могу это проверить? Или есть какой-нибудь фрагмент кода, который вы, ребята, можете предоставить, чтобы показать мне лучшие практики отработки отказа?

ой! Шаблон нагрузки акулы используется, чтобы убедиться, что используется только одно соединение дБ, верно?

Спасибо за ваше время.

редактирование: Я полагаю, что проверка на соединение установлена ​​или нет в объекте базы данных уже на newConnection в объекте DBVendor. Я прав?

1 Ответ

4 голосов
/ 23 декабря 2011

ТЛ; др

Поместите конфигурацию вашей базы данных в ./src/main/resources/default.props в виде:

db.class=org.postgresql.Driver
db.url=jdbc:postgresql:[//host[:port]]/database
db.user=user
db.pass=password

Конечно, вам нужно предоставить правильные значения для вашей базы данных.

длинная история

Если JNDI сбивает с толку, вы можете пока игнорировать его. Это часть Java EE , которая полезна, если вы пытаетесь настроить производственные приложения для запуска на сервере приложений, но не обязательна.

Свойства - это древний метод в Java для обработки конфигурации. Файл свойств (который обычно называется .props или .properties) - это просто список пар имя / значение.

Lift предоставляет объект Props для удобного предоставления различных файлов свойств для разных сред. В вики есть хорошая запись о том, как она работает, но в основном вы можете указать различные свойства для любой комбинации режима запуска (тест, подготовка, производство и т. Д.), Имени хоста и имени пользователя.

Теперь, взломав код Тима Перретта:

  1. Проверьте, доступно ли соединение JNDI. Если вы не запустите сервер приложений и не настроите его, этого не произойдет. Ничего страшного, если это не так.
  2. Если JNDI отсутствует, для настройки источника данных используется объект Database.
  3. Объект Database использует объект Props Lift для загрузки значений из того, какой файл .props лучше всего соответствует системе, в которой вы работаете. Если вы укажете только default.props, это будут те значения, которые будут использоваться.
  4. Если файла свойств нет или он не содержит ключей конфигурации базы данных, то openOr предоставляет значения по умолчанию для использования базы данных H2 .

Lift уже осуществляет свое собственное управление соединениями, что обычно означает другое соединение с базой данных для каждого потока. Если соединение не может быть установлено, вы получите SQLException из своего кода доступа к данным.

...