Play 2.1에 Slick 연동하기
Source
Evernote/Inbox/Play 2.1에 Slick 연동하기.md
Summary
본문은 Scala 기반 웹 프레임워크인 Play 2.1에 데이터 접근 계층(DAL)으로 Slick을 연동하는 방법을 다룹니다. 기존 Anorm 대신 Slick을 채택한 배경과, 테스트 환경(메모리 DB)과 운영 환경(RDBMS)을 분리하여 테스트 가능한 구조를 구축하는 것이 핵심 목표입니다. 여러 예제와 플러그인(play-slick 등)을 검토한 결과, 특정 블로그의 Cake 패턴 기반 예제는 테스트 시 세션 오류가 발생하여 적합하지 않았으며, 다른 출처의 방법을 적용하여 성공적으로 연동했습니다. 주요 구현 단계는 1) SBT 빌드 설정에 Slick 및 JDBC 드라이버 의존성 추가, 2) Slick Table 모델 정의, 3) Global 객체를 통해 애플리케이션 시작 시 DB 연결 및 DDL 생성 자동화, 4) 테스트를 위한 CRUD 메서드 추가입니다.
Key Points
- Play 2.1에서 데이터 접근 계층으로 Slick을 사용하며, 테스트 시 메모리 DB로 교체 가능한 구조를 지향함
- 기존 play-slick 모듈이나 Cake 패턴 기반 예제는 테스트 안정성(세션 종료 오류) 문제로 직접 구현 방식을 선택함
- SBT 설정(project/Build.scala)에 slick, postgresql jdbc driver, scalatest 의존성 추가
- models 패키지에 Slick Table 모델(User.scala) 정의 및 PostgresDriver 사용
- Global.scala에서 onStart 시 DB 연결 설정 및 Users.ddl.create로 테이블 자동 생성
- 테스트를 위해 Users 객체에 add, findAll 메서드 추가 (implicit Session 필요)