Я работаю над небольшим проектом, где я хотел бы проанализировать некоторые данные и затем поместить их в базу данных. Я не работаю с Лифтом, и я не смог найти стандартный способ сделать это.
Все хорошо при записи запросов самостоятельно, но я не уверен, что использовать для фактического соединения с DB.
Вы можете использовать JDBC - стандартный способ заставить Java взаимодействовать с базами данных. Вам понадобится соответствующий драйвер MySQL JDBC . Apache DbUtils предоставляет некоторые служебные классы, окружающие JDBC, и будет полезно.
Если вам нужен API более высокого уровня, который устраняет часть шаблонов, тогда ознакомьтесь с интеграцией Spring JDBC .
Если вам нужна ORM (объектно-реляционное сопоставление), тогда Hibernate - хороший выбор.
Я успешно использовал все три в Scala.
Я фактически написал командную оболочку SQL на Scala, которая взаимодействует с любой произвольной базой данных, для которой существует драйвер JDBC. Как отмечает Брайан Агнью, он работает отлично. Кроме того, существуют такие инструменты, как Querulous , SQueryL и OR / Broker , которые обеспечивают удобные для Scala уровни базы данных. Они находятся поверх JDBC, но предоставляют некоторую дополнительную семантику (в некоторых случаях через DSL), чтобы упростить вам задачу.
Для полноты также ознакомьтесь с RichSQL . Это демонстрационный код, показывающий, как обернуть JDBC, чтобы выполнять больше операций, подобных Scala, но на самом деле он вполне пригоден для использования. Его преимущество в том, что он простой и небольшой, поэтому вы можете легко изучить источник, чтобы увидеть, что происходит. Не забудьте закрыть () свои PreparedStatements.
Попробуйте O / R Broker :
case class MyObj(name: String, year: Int)
val ds = new com.mysql.jdbc.jdbc2.optional.MysqlDataSource
// set properties on ds
import org.orbroker._
val builder = new BrokerBuilder(ds)
val broker = builder.build
val myObj: MyObj = // Parse stuff to create MyObj instance
broker.transaction() { session =>
session.execute("INSERT INTO MYTABLE VALUES(:obj.name, :obj.year)", "obj"->myObj)s
}
val myObjs: Seq[MyObj] = // Parse stuff to create sequence of MyObj instances
broker.transaction() { session =>
session.executeBatch("INSERT INTO MYTABLE VALUES(:obj.name, :obj.year)", "obj"->myObjs)
}