#访问Sql数据库
1.配置JDBC连接池
play2.0提供了管理JDBC连接池的插件。你可以安装需要来配置许多数据库。
要启用数据库插件,就要在conf/application.conf文件中配置一个连接池。根据约定默认的JDBC数据源,必须调用缺省:
# Default database configuration
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
配置多个数据源:
# Orders database
db.orders.driver=org.h2.Driver
db.orders.url="jdbc:h2:mem:orders"
# Customers database
db.customers.driver=org.h2.Driver
db.customers.url="jdbc:h2:mem:customers"
如果有地方配置不对,在浏览器中会直接给你提示。
2.访问JDBC数据源
play.db包提供了对数据源的访问:
import play.db.*;
DataSource ds = DB.getDatasource();
3.获取JDBC连接
通过如下方式得到一个JDBC连接:
Connection connection = DB.getConnection();
4.通过JNDI暴露数据源
一下库期望从JNDI获取到数据源的引用,通过在conf/application.conf中加入下面的配置,你可以使用JDNI暴露任意Play管理的数据源。
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
db.default.jndiName=DefaultDS
5.引入数据库驱动
除了主要用于开发模式下的h2内存数据库外,Play没有提供其他数据库的驱动。所以,要部署到生产环境,你得添加你的数据库驱动作为应用的依赖。
举个例子,如果你使用mysql5数据库,你需要为连接添加这样的依赖:
val appDependencies = Seq(
// Add your project dependencies here,
...
"mysql" % "mysql-connector-java" % "5.1.18"
...
)
#使用Ebean ORM
1.配置Ebean
Play2.0有一个Ebean ORM(对象关系映射)的新特性。在conf/applicatio.conf中加如下的一行代码就可以启用它:
ebean.default="models.*"
它定义了一个默认的Ebean服务,使用默认的数据源,数据源必须正确的配置。你需要多少完全可以创建多少个Ebean服务。
只需要显示地定义每个服务映射的类:
ebean.orders="models.Order,models.OrderItem"
ebean.customers="models.Customer,models.Address"
这个例子中,我们设置了连个Ebean服务。
2.使用play.db.eban.Model超类
play2.0为你的Ebean模型类定义了一个方便的超类,这是Play2.0中一个典型的Ebean类:
package models;
import java.util.*;
import javax.persistence.*;
import play.db.ebean.*;
import play.data.format.*;
import play.data.validation.*;
@Entity
public class Task extends Model {
@Id
@Constraints.Min(10)
public Long id;
@Constraints.Required
public String name;
public boolean done;
@Formats.DateTime(pattern="dd/MM/yyyy")
public Date dueDate = new Date();
public static Finder<Long,Task> find = new Finder<Long,Task>(
Long.class, Task.class
);
}
如你所见,我们增加了一个静态的find字段,为一个有Long类型唯一标识的Task实体定义了一个finder方法。
// Find all tasks
List<Task> tasks = Task.find.all();
// Find a task by ID
Task anyTask = Task.find.byId(34L);
// Delete a task by ID
Task.find.ref(34L).delete();
// More complex task query
List<Task> tasks = find.where()
.ilike("name", "%coco%")
.orderBy("dueDate asc")
.findPagingList(25)
.getPage(1);
3.事务Action
默认情况下,Ebean不使用事务。但是你可以利用事务助手为你的Ebean创建一个事务。例如:
// run in Transactional scope...
Ebean.execute(new TxRunnable() {
public void run() {
// code running in "REQUIRED" transactional scope
// ... as "REQUIRED" is the default TxType
System.out.println(Ebean.currentTransaction());
// find stuff...
User user = Ebean.find(User.class, 1);
...
// save and delete stuff...
Ebean.save(user);
Ebean.delete(order);
...
}
});
你也可以使用@play.db.ebean.Transactional注解你的Action来自动为你的Action中的方法提供事务管理。
@Transactional
public static Result save() {
...
}
#集成JPA
1.通过JNDI暴露数据源
JPA要求通过JNDI访问数据源。添加如下配置就可以通过JDNI暴露Play管理的任意数据源。
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
db.default.jndiName=DefaultDS
2.为你的项目添加JPA的实现
Play2.0没有内建的JPA的实现,你可以选择可用的实现,例如要用Hibernate,只需要加入如下依赖到你的工程:
val appDependencies = Seq(
"org.hibernate" % "hibernate-entitymanager" % "3.6.9.Final"
)
3.创建持久层测试
下一步你得创建一个正确的persistence.xml JPA配置文件。把它放到conf/META_INF目录下,这样它就会正确的加到你的classpath里了。
这里是一个Hibernate的简单配置:
<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="defaultPersistenceUnit" 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.H2Dialect"/>
</properties>
</persistence-unit>
</persistence>
4.使用@Transactional为JPAAction做事务注解
每个JPA调用必须完成事务,要为某个特定的Action启用JPA,用@play.db.jpa.Transactional注解。这样会将你的Action方法与管理事务
的JPA Action组合。
@Transactional
public static Result index() {
...
}
如果你的Action仅是完成查询,你可以设置readOnly属性为true:
@Transactional(readOnly=true)
public static Result index() {
...
}
5.使用play.db.jpa.JPA助手
通过play.db.jpa.JPA辅助类,在任何时候你可以获取到当前实体的管理器。
public static Company findById(Long id) {
return JPA.em().find(Company.class, id);
}
分享到:
相关推荐
NULL 博文链接:https://shenbai.iteye.com/blog/1522718
Play framework 2.0入门教程(四)的源代码,Play留言板(数据库版),详见http://blog.csdn.net/wfdztl521/article/details/8766988
Play framework 2.0入门教程(三)的源代码,Play留言板,详见http://blog.csdn.net/wfdztl521/article/details/8545838
将Elasticsearch集成到您的Play... $ git clone https://github.com/eduardofcbg/playframework2-elasticsearch.git$ cd playframework2-elasticsearch$ sbt publish-local 在您的项目上,添加以下依赖项声明: ...
更新播放 2.4.0添加测试规范Playframework 2.2.1 (Scala) 和 MongoDb (Salat) 的第一步使用 MongoDb 而不是 Anorm 的待办事项应用程序我们将为 MongoDb 使用 Salat 库( )。 Play 2 有一个替代的“mongo-jackson-...
Playframework 2.3.1 (Java) 和 MongoDb (Jackson) 的第一步 不要忘记启动mongodb守护进程! 它应该使用默认主机 (localhost) 和默认端口。 运行应用程序: sbt run 如果运行本教程有任何问题,请报告,谢谢!
[强烈推荐, 文档不多, 很快就可以看完, 看完了, 就会使用play了] 目录 MVC应用程序模型 - 7 - app/controllers - 8 - app/models - 8 - app/views - 8 - 请求生命周期 - 8 - 标准应用程序布局layout - 9 - app...
play-services-base.properties
google-play-services版本15.0.1,依赖工程可直接引用到项目中,适用Eclipse及AndroidStudio开发环境,快捷方便,本人亲自整理,后续资源有问题可咨询。若后续google-play-services如需其他版本迭代,也可让我更进。
解决: Could not find play-services-basement.aar (com.google.android.gms:play-services-basement:15.0.1). Searched in the following locations: ...
MFC ODBC数据库编程\play.ico “播放”图标 MFC ODBC数据库编程\play_ico.ico “播放指示”图标 MFC ODBC数据库编程\stop.ico “停止”图标 MFC ODBC数据库编程\BTNST.H 按钮控件头文件 MFC ODBC数据库...
TLeague_ A Framework for Competitive Self-Play basedDistributed Multi-Agent RL
使用Play Framework 2.0 +,jQuery,Backbone.js,Marionette.js和Postgresql用Java / Scala编写的ERP应用程序 开发人员虚拟机 您可以下载此zip文件,其中包含安装并配置了Ubuntu 16.04,PostgreSQL,PlayFramework...
play2.0 for java developers.pdf
play2-war-plugin, 用于 Play Framework 2.x的WAR插件 用于 Play Framework 2.x的 WAR插件Current versions: Play 2.2.x : 1.2.1 Play 2.3.0 -> 2.3.1 : 1.3-beta1 (Scala 2.1
苹果carplay开发插件CarPlay Communication Plug-in,官方下载,
play-services-ads-lite-18.3.0是2019-11-23为止,最新的安卓admob sdk,用于原生安卓介入 加入工程后: import com.google.android.gms.ads.AdListener; import com.google.android.gms.ads.AdRequest; import ...
AWS Elastic Beanstalk 上的 Nginx + Playframework 最新的公共 AMI: ami-c0ae98a8 2015 年 4 月 1 日构建新自定义 AMI 的说明首先,在 Elastic Beanstalk 上创建一个 tomcat 应用程序。 然后通过 SSH 连接到创建的...
对学习java开发框架及搜索的同学很有用,欢迎下载!
CarPlay Communication Plug-in