본문 바로가기

Development/Web & Server

[Play Framework2] JPA

Play Framework2 Scala 에서도 JPA를 지원한다. 설치부터 사용방법 까지 간단하게 설명하자면..

(참고 URL =https://www.playframework.com/documentation/2.4.0/JavaJPA)


우선은 라이브러리를 설치한다.

libraryDependencies ++= Seq(
  javaJpa,
  "org.hibernate" % "hibernate-entitymanager" % "4.3.9.Final" // replace by your jpa implementation
)


그리고 persistence.xml 파일은 생성하고 conf/MATA-INF 폴더에 넣자 없다면 생성해서 넣어두자

그리고 파일내용은 아래와 같이 작성한다.

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
             version="2.1">

    <persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <non-jta-data-source>DefaultDS</non-jta-data-source>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
        </properties>
    </persistence-unit>

</persistence>


그리고 application.conf 파일에 아래의 내용을 추가한다.

jpa.default=defaultPersistenceUnit


Mysql이나 등등 데이터베이스가 연동이 완료 되어있다면 그대로 애노테이션을 활용하여 사용이 가능하다. 관련 라이브러리는 

import play.db.jpa._

import scala.collection.JavaConversions._

정도가 있다.


그리고 Java버전에서는 @Transactional 이 잘 작동하는 것 같지만 Scala에서는 동작을 잘하는 것 같다 본인은..


JPA.withTransaction(new F.Function0[List[Child]]{

      def apply () = JPA.em().createQuery("FROM Child",classOf[Child]).getResultList.toList

    })


이렇게 감싸줘서 Transaction을 적용한다.


'Development > Web & Server' 카테고리의 다른 글

[Play Framework2] JPA & Json model  (0) 2015.06.11
[Play Framework2] Json  (0) 2015.06.01
[Play Framework2] WebSockets  (0) 2015.05.26
[Play Framework2] Comet sockets  (0) 2015.05.25
[Play Framework2] Streaming HTTP responses  (0) 2015.05.25