Slick2 사용 노트(5) 데이터 소스 구성
3132 단어 데이터 소스
Slick2는 내장형 Database(사용 시 해당 데이터베이스에 해당하는 패키지 가져오기
예를 들어 mysql은:import scala입니다.slick.driver.MySQLDriver.simple._) forURL 방법
그리고 forDriver는 직접 Driver를 통해 연결을 받습니다) 데이터베이스 연결을 받습니다.
Slick2는 forName(JNDI)와forConfig(설정을 통해)로도 얻을 수 있다
이 포는 포DataSource라는 방법입니다.
/**
* Create a Database based on a DataSource.
*/
def forDataSource(ds: DataSource): DatabaseDef = new DatabaseDef {
def createConnection(): Connection = ds.getConnection
}
이 DataSource 클래스는 javax입니다.sql.DataSource
여기서 간단하게 데이터 원본을 사용하는 방식을 알려드릴게요.
데이터 소스. 저는 아리의 Druid를 사용하는데 어떤 걸 쓰든 상관없어요. 취향을 보세요.
Spring xml 방식으로 데이터 Source를 설정하는 데 익숙한 학생들은 코드에 대한 설정이 낯설겠지만 사실 간단합니다.
구성 코드는 다음과 같습니다.
package infrastructure
import com.alibaba.druid.pool.DruidDataSource
import javax.sql.DataSource
sealed class DS(val config: DataSourceConfig) {
private val dataSource = new DruidDataSource
conf(config)
def get: DataSource = {
sync(!dataSource.isInited(), dataSource.init(), dataSource)
dataSource
}
def close = {
sync(dataSource.isInited(), dataSource.close(), dataSource)
}
private def sync(test: => Boolean, op: => Unit, lock: AnyRef) = {
if (test)
lock.synchronized {
if (test) op
}
}
private def conf(config: DataSourceConfig): Unit = {
dataSource.setUrl(config.url)
dataSource.setUsername(config.name)
dataSource.setPassword(config.password)
dataSource.setInitialSize(config.initSize)
dataSource.setMinIdle(config.minIdle)
dataSource.setMaxActive(config.maxActive)
dataSource.setValidationQuery(config.validateQuery)
}
}
object DS {
val _lock = new Object
val db = new DS(new MyDataSourceConfig)
def apply() = {
_lock.synchronized {
db.get
}
}
def apply(conf: DataSourceConfig) = {
_lock.synchronized {
db.conf(conf)
db.dataSource.restart()
db.get
}
}
}
trait DataSourceConfig {
def url: String
def name: String
def password: String
def initSize: Int = 1
def minIdle: Int = 1
def maxActive: Int
def validateQuery = "select 'x'"
}
class MyDataSourceConfig extends DataSourceConfig {
def url = "jdbc:mysql://localhost:3306/cqrs"
def name = "root"
def password = ""
def maxActive = 10
}
상기 몇 개의 매개 변수에 관하여druid의 github를 참고할 수 있다.
사용도 간단합니다.
Database.forDataSource(DS()).withSession {
implicit session =>
q.list
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spring 여러 데이터 소스 구성 및 동적 전환 예제1. 두 개의 서로 다른 데이터 원본을 설정한다. 다음과 같다. (프로젝트는 druid 데이터베이스 연결을 사용하기 때문에 설정은 복잡하게 비교할 수 있다.) 2. 클래스 계승 AbstractRoutingDataSo...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.