본문 바로가기

Development/Web & Server

[Play Framework] JPA이용하여 Mysql 연동하기

1. 라이브러리 추가하기!! (build.sbt파일)


libraryDependencies ++= Seq(

//다른 라이브러리......

  javaJpa,

  "mysql" % "mysql-connector-java" % "5.1.26",

  "org.hibernate" % "hibernate-entitymanager" % "4.1.2.Final"

)


2. application.conf 파일 설정하기 


대부분은 주석을 해제하면 됩니다.


# Database configuration

# ~~~~~

# You can declare as many datasources as you want.

# By convention, the default datasource is named `default`

#

db.default.driver=com.mysql.jdbc.Driver

db.default.url="jdbc:mysql://localhost:3306/dinner" //db 주소 변경

db.default.user=root // 아이디

db.default.password="" /비밀번호


jpa.default=defaultPerstistenceUnit


#

# You can expose this datasource via JNDI if needed (Useful for JPA)

db.default.jndiName=DefaultDS


3. persistence.xml 


파일생성은 아래의ㅌ 그림과 같이 한다.






<persistence xmlns="http://java.sun.com/xml/ns/persistence"

             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

             xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"

             version="2.0">


    <persistence-unit name="defaultPerstistenceUnit" transaction-type="RESOURCE_LOCAL">

        <provider>org.hibernate.ejb.HibernatePersistence</provider>

        <non-jta-data-source>DefaultDS</non-jta-data-source>

        <properties>

            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>

            <property name="hibernate.hbm2ddl.auto" value="update"/>

        </properties>

    </persistence-unit>


</persistence>


4. models 패키지 만들기

5. model class만들기

스프링에서 하이버네이트 연동했던 모델 클래스인데 그대로 사용하니 된다.~!

@Entity @Table(name = "apply") public class Apply { public int getApplyNo() { return applyNo; } public void setApplyNo(int applyNo) { this.applyNo = applyNo; } public int getUserNo() { return userNo; } public void setUserNo(int userNo) { this.userNo = userNo; } public int getMenuNo() { return menuNo; } public void setMenuNo(int menuNo) { this.menuNo = menuNo; } public String getDate() { return date; } public void setDate(String date) { this.date = date; } public static Apply findByApplyNo (final int applyNo) { return (Apply) JPA.em().createQuery("FROM Apply apply WHERE apply.applyNo = " + applyNo).getSingleResult(); } @Override public String toString() { return "Apply [applyNo=" + applyNo + ", userNo=" + userNo + ", menuNo=" + menuNo + ", date=" + date + "]"; } @Id @Column (name = "apply_no") @GeneratedValue(strategy = GenerationType.AUTO) private int applyNo; @Column (name = "user_no") private int userNo; @Column (name = "menu_no") private int menuNo; @Column (name = "apply_date") private String date; }//end Apply Class

6. Transactional 적용하기 & 사용하기

DB를 사용하게 되면 위의 애노테이션을 써야한다. 본인은 테스트라 Application에서 썼지만.. 성능에 영향을 줄수도 있기에 잘 적용하자~!