Scala에서 SQL 쿼리 작성

Suraj P 2023년6월21일
  1. Scala에서 SQL 쿼리 작성
  2. 테이블에 대한 참조 설정
  3. Scala의 데이터베이스에서 선택
  4. Scala에서 테이블의 행 업데이트
  5. Scala에서 테이블의 행 삭제
  6. 결론
Scala에서 SQL 쿼리 작성

이 기사에서는 Slick의 도움으로 Scala에서 SQL 쿼리를 작성하는 방법을 배웁니다.

Scala에서 SQL 쿼리 작성

‘Slick’(Scala Language-Integrated Connection Kit)은 기능적 관계 매핑을 제공하는 Scala 라이브러리로 관계형 데이터베이스를 쉽게 쿼리하고 액세스할 수 있습니다. 본질적으로 형식이 안전합니다.

전제 조건:

  1. Scala sbt 파일에 Slick 종속성을 추가합니다.

    libraryDependencies += "com.typesafe.slick" %% "slick" % "3.3.1"
    
  2. PostgreSQL 데이터베이스와 같이 사용하려는 데이터베이스에 연결합니다.

    postgres {
        dataSourceClass = "org.postgresql.ds.PGSimpleDataSource"
        properties = {
            serverName = "localhost"
            portNumber = "5432"
            databaseName = "slickDemo"
            user = "ScalaDemo"
            password = "1234"
        }
    }
    

데이터베이스에 id, name, country, dob 열이 있는 students 테이블이 있다고 가정합니다.

case class students(id:Long, name:String, country:String, dob:Option[LocalDate])

이제 쿼리를 작성해 보겠습니다.

테이블에 대한 참조 설정

students 테이블에서 쿼리하려면 먼저 해당 테이블에 대한 참조를 생성해야 합니다.

val studentTable = TableQuery[students]

이제 studentTable을 사용하여 Slick 쿼리를 작성할 수 있습니다.

Scala의 데이터베이스에서 선택

다음과 같은 쿼리를 작성해 보겠습니다.

select * from students where country="Japan".

위의 쿼리는 일본에서 온 학생들에 대한 정보를 제공합니다.

이제 Slick을 사용하여 Scala에서 동일한 쿼리를 작성해 보겠습니다.

val students_from_Japan = studentTable.filter(_.country === "Japan")

Scala에서 테이블의 행 업데이트

id200인 모든 학생에 대해 국가를 "독일"로 수정하고 싶다고 가정해 보겠습니다.

val updateQuery = studentTable.filter(_.id ===200).map(_.country).update("Germany")

위 쿼리에서 먼저 id200인 행을 필터링한 다음 해당 국가를 독일로 업데이트했습니다.

Scala에서 테이블의 행 삭제

이름이 "tony"인 학생 기록을 삭제하겠습니다.

val deleteQuery = studentTable.filter(_.name==="tony").delete

위의 쿼리에서 우리는 먼저 이름이 "tony"인 행을 필터링한 다음 삭제했습니다.

결론

이 기사에서는 Slick을 사용하여 Scala에서 몇 가지 기본 SQL 쿼리를 작성하는 방법을 살펴보았습니다.

작가: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub