일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 파이썬 머신러닝
- 하이브리드앱
- 스칼라 동시성
- 주키퍼
- 파이썬
- Hyperledger fabric gossip protocol
- play 강좌
- 안드로이드 웹뷰
- Golang
- Play2
- 하이퍼레저 패브릭
- 플레이프레임워크
- 스위프트
- Akka
- Play2 로 웹 개발
- Adapter 패턴
- 블록체인
- 엔터프라이즈 블록체인
- 그라파나
- CORDA
- hyperledger fabric
- 이더리움
- Actor
- 파이썬 데이터분석
- 스칼라
- 파이썬 동시성
- akka 강좌
- 스칼라 강좌
- play2 강좌
- 파이썬 강좌
- Today
- Total
HAMA 블로그
예제로 보는 아카(akka) - 14. Slick 으로 PostgreSQL 사용하기 본문
예제로 보는 아카(akka) - 14. Slick 으로 PostgreSQL 사용하기
[하마] 이승현 (wowlsh93@gmail.com) 2016. 10. 21. 12:00- Scala 2.11.8 기반
- Akka 2.4.11 기반
- Java 8 (akka 2.4 부터는 java 8 요구함. scala 2.11 은 java 7도 괜찮지만~)
참고 :
http://queirozf.com/entries/scala-slick-simple-example-on-connecting-to-a-postgresql-database
http://slick.lightbend.com/doc/2.1.0/sql-to-slick.html#insert
https://github.com/lucperkins/spray-akka-slick-postgres
Akka 에서 PostgreSQL 사용하기
1. Scala 로 PostgreSQL 사용하기 (with Slick)
의존성 추가
libraryDependencies ++= Seq(
"org.postgresql" % "postgresql" % "9.3-1100-jdbc4",
"com.typesafe.slick" %% "slick" % "2.1.0",
"org.slf4j" % "slf4j-nop" % "1.6.4"
)
테이블 스키마
CREATE TABLE users3
(
id bigserial NOT NULL,
username character varying,
age int,
date timestamp
)
SELECT 예제
//라이브러리 임포트 import scala.slick.driver.PostgresDriver.simple._
// 모델 정의
class Users3(tag: Tag) extends Table[(Int, String, Int, String)](tag, "users3") {
def id = column[Int]("id")
def username = column[String]("username")
def age = column[Int]("age")
def date = column[String]("date")
def * = (id, username, age, date)
}
object managementMain extends App {
val connectionUrl = "jdbc:postgresql://192.168.1.169/EV-IOT?user=postgres&password=pws"
Database.forURL(connectionUrl, driver = "org.postgresql.Driver") withSession {
implicit session =>
val users = TableQuery[Users3]
// * FROM users
users.list foreach { row =>
println("id :" + row._1 + " / username : " + row._2 + " / age : " + row._3 + " / date: " + row._4)
}
// * FROM users WHERE username='brad'
users.filter(_.username === "brad").list foreach { row =>
println("id :" + row._1 + " / username : " + row._2 + " / age : " + row._3 + " / date: " + row._4)
}
}
}
- 테이블로 매칭되는 클래스 하나 만들고 (tag 이름이 테이블명과 동일)
- 전체 출력 / 선택 (filter 활용) 출력 해줍니다.
INSERT
val date = new java.util.Date()
val ts = new java.sql.Timestamp(date.getTime)
// INSERT
users.map(p => (p.username, p.age, p.date))
.insert(("M Odersky",33,ts))
- map 으로 컬럼을 매핑하고 insert 를 통해서 새 데이터를 입력해줍니다.
UPDATE
// UPDATE
users.filter(_.username === "M Odersky")
.map(p => (p.age))
.update((54321))
- filter 가 where 의 역할을 하고
- map 을 통해 업데이트 할 컬럼을 매핑해서
- update 해줍니다.
DELETE
// DELETE
users.filter(p => p.username === "M Odersky")
.delete
- filter 가 where 의 역할을 하고
- delete 로 삭제합니다.
커넥션 풀
커넥션을 풀링하여 좀 더 효율적으로 디비연결을 해보자. 여기선 C3P0 를 이용한다.
먼저 의존성 추가하고
libraryDependencies += "c3p0" % "c3p0" % "0.9.1.2"
데이터소스 임포트
import com.mchange.v2.c3p0.ComboPooledDataSource
커넥션 풀링 기능이 있는 디비접속 객체 변수(database) 를 만든다.
val connectionUrl = "jdbc:postgresql://192.168.1.169/MYDB?user=postgres&password=pwd"
val database = {
val ds = new ComboPooledDataSource
ds.setDriverClass("org.postgresql.Driver")
ds.setJdbcUrl(connectionUrl)
Database.forDataSource(ds)
}
database를 사용하여 똑같이 활용합니다.
def checkCardID(cardid : String) : Int ={
database withSession {
implicit session =>
val users = TableQuery[Card]
users.filter(_.id === cardid).list foreach { row =>
println("card_id :" + row._1 + " / state : " + row._2)
return row._2
}
}
return 0
}
2. Akka 로 PostgreSQL 사용하기(with Slick)
정리중..
'Akka' 카테고리의 다른 글
예제로 보는 아카(akka) - 15. 하나의 ActorSystem에 IO,Remote 등 사용 (0) | 2016.11.01 |
---|---|
예제로 보는 아카(akka) - 14. 여러개의 ActorSystem 사용에 관해 (0) | 2016.11.01 |
예제로 보는 아카(akka) - 13. TCP 와 데이터의 끝? (0) | 2016.10.19 |
예제로 보는 아카(akka) - 12. 액터 찾기 & 참조하기 & 액터 패스 (0) | 2016.10.18 |
왜 우리는 Vert.x 보다 아카(akka) 를 우리의 클라우드 시스템을 위해 선택했나? (번역) (0) | 2016.10.13 |