libraryDependencies ++= Seq(
javaJdbc,
"mysql" % "mysql-connector-java" % "5.1.41",
.....
1、8 配置自定义连接池
首先创建连接池个参数设置类,此类需要实现
play.api.db.ConnectionPool接口
另外需要将此类进行配置:
play.db.pool=your.own.ConnectionPool(全类名)
配置的参数可以查看jdbc-reference.conf文件
2、JPA集成
2、1 添加JPA和实现依赖
首先添加JPA依赖JavaJPA,这是默认依赖JDBC,接下来添加一个JPA实现依赖,例如使用Hibernate:
libraryDependencies ++= Seq(
javaJpa,
"org.hibernate" % "hibernate-core" % "5.4.2.Final"
JPA要求数据源可以通过JNDI访问,可以通过在conf/application.conf中添加响应配置,使得jndi公开任何play管理的数据源,如下:
db.default.jndiName=DefaultDS
2、2 创建持久化单元
首先创建JPA的配置文件persistence.xml,放在conf/META-INF目录下(可以尝试直接放在conf目录下试试),具体内容在persistence.xml中
再在conf/application.conf文件中配置JPA的持久化单元:jpa.default=defaultPersistenceUnit
2、3 使用JPA部署应用
build.sbt中添加配置:
playKeys.externalizeResourcesExcludes += baseDirectory.value / "conf" / "META-INF" / "persistence.xml"
2、4 使用JPA
Play提供了play.db.jpa.JPAApi来处理实体管理器和事务,操作jpa方式如下:
直接在一个操作中使用JPA(使用play的默认线程池)将限制异步使用play的能力,因为JDBC会阻塞它运行的线程。
3、使用Ebean ORM
3、1 配置Ebean
1)需要在project/plugins.sbt中添加Ebean插件:
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "4.1.0")
2)接下来修改build.sbt 文件,用来启动使用ebean:
lazy val myProject = (project in file(".")) .enablePlugins(PlayJava, PlayEbean)
3)Ebean插件带有两个组件,一个是与数据库对话的运行库,以及一个SBT插件,它增强了与Ebean一起使用的model的编译Java字节码。这两个组件都需要进行配置,以便Ebean知道使用到的模型在哪里。运行库可以可以将用到的模型配置到应用配置文件中,在appliaction.conf文件中配置,配置方式如下:
ebean.default = ["models.*"]
针对多个数据库可以进行不同的配置,每个数据库对应的实体可以不一样=,配置如下:
ebean.orders = ["models.Order", "models.OrderItem"]
ebean.customers = ["models.Customer", "models.Address"]
如果application.conf文件与ebean模型类所在的项目不同,可能导致模型不可用,这是可以使用playEbeanModels 来指定模型在哪些module中起作用,其配置如下:
playEbeanModels in Compile := Seq("models.*")
3、2 Model superclass
Play中提供了一个model的超类io.ebean.Model
Ebean会自动为model生成getter、setter方法,如果用户自定义了,则ebean不会再重复生成,在编译时期,ebean生成的setter、getter方法是不可用的
3、3 事务操作
Ebean在默认情况下进行insert、delete、update、query是使用事务操作的,如果想在一个事务中进行多个操作,可以如此使用:
可以使用注解来控制事务:
也可以使用代码来控制事务:
提示:文中提到的文件,在资源中均可找到,或者联系作者,免费获取
1、使用jdbc连接数据库1、1 简介JDBC是一个阻塞操作,它将导致线程等待,直接使用JDBC进行查询将导致性能降低1、2配置数据源play提供了一个用于管理JDBC连接池的插件,可以根据需要配置任意多个数据库,想要使用此插件,需要在build.sbt依赖项中添加如下依赖项:libraryDependencies += javaJdbc之后便可以在conf/application.conf文件中配置数据源,默认的数据源必须叫做default:可以配置多个数据源:如.
18.1 依赖的格式在dependencies.yml 中你可以这样写:organisation -> name revision [classifier]
组织 -> 名称 版本 [分类]对于Play 和 Play framework 的模块(CRUD and secure module),版本号不是必须的:play
play -> crud
play -> secure18.2 depen
下面是一个依赖管理语句(sbt)
libraryDependencies ++= Seq(javaJdbc, javaEbean)
这里的javaJdbc javaEbean出自下面所示的地方:
playframework/framework/src/sbt-plugin/src/main/scala/PlayImport.scala (github)
当 play找到至少一个注释了@javax.persistence.Entity标识的类时,play 将自动启动 hibernate
实体管理器。
Query query = JPA.em().createQuery("select * fromArticle");
List articles =query.getResultList();
render(article