2013-03-20 39 views
25

Có cách nào dễ dàng để sử dụng hồ bơi kết nối DB với số Slick của scala không?Kết nối tổng hợp trong bóng bẩy?

+0

Tôi đoán là nếu bạn sử dụng nó từ trong khung phát làm việc 2.1 bạn nhận được kết nối tổng hợp miễn phí. Play Framework sử dụng [BoneCP] (http://jolbox.com/) vì thư viện cơ bản của nó là – EECOLOR

+1

Tôi không sử dụng tính năng phát. Cảm ơn –

+0

Câu hỏi tương tự: [Thư viện hồ bơi kết nối Scala?] (Http://stackoverflow.com/questions/5080707/scala-connection-pool-library) – EECOLOR

Trả lời

26

Tôi sử dụng Apache Commons DBCP cho việc này. Về cơ bản, bạn chỉ cần tạo một DataSource, mà gói gọn các chi tiết tổng hợp, và thông qua đó DataSource để Slick:

import org.apache.commons.dbcp.BasicDataSource 

val dataSource: DataSource = { 
    val ds = new BasicDataSource 
    ds.setDriverClassName("org.hsqldb.jdbc.JDBCDriver") 
    ds.setUsername("SA") 
    ds.setPassword("") 
    ds.setMaxActive(20); 
    ds.setMaxIdle(10); 
    ds.setInitialSize(10); 
    ds.setValidationQuery("SELECT 1 FROM INFORMATION_SCHEMA.SYSTEM_USERS") 
    new java.io.File("target").mkdirs // ensure that folder for database exists 
    ds.setUrl("jdbc:hsqldb:file:target/db/db") 
    ds 
} 

// test the data source validity 
dataSource.getConnection().close() 

// get the Slick database that uses the pooled connection 
val database = Database.forDataSource(dataSource) 

Ví dụ này sử HSQLDB, nhưng có thể dễ dàng thích nghi với bất kỳ cơ sở dữ liệu khác.

Ví dụ đầy đủ là here (bạn có thể sao chép dự án và chạy sbt run trong thư mục/thang máy để xem nó hoạt động).

21

Đối với hoàn tôi đã kết thúc viết một bài viết trên blog về vấn đề này:

http://fernandezpablo85.github.io/2013/04/07/slick_connection_pooling.html

+2

Cảm ơn Pablo, bài viết trên blog đó rất hữu ích. – JMac

+0

Bất cứ lúc nào! Nó đã được đóng góp cho các ví dụ trơn (https://github.com/slick/slick-examples) bằng cách này –

Các vấn đề liên quan