#访问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);
}
分享到:
相关推荐
Play框架支持JDBC和Anorm等库来操作数据库,本例中可能会使用Anorm,这是一个轻量级的SQL模odel库,允许我们直接用Scala代码编写SQL查询。 接着,我们将定义数据模型。例如,可以创建一个`Message`模型类,包含`id`...
访问SQL数据库 - **配置和使用JDBC** - 配置数据库连接池,执行SQL语句。 - **使用Ebean ORM** - 提供对象关系映射功能,简化数据操作。 - **集成JPA** - 支持Java持久化API,便于数据持久化。 ##### 9. 使用...
框架id(framework ID) - 141 - 从命令行设置框架id - 142 - 22.生产部署 - 142 - application.conf - 142 - 设置框架为prod模式: - 142 - 定义一个真实的数据库: - 143 - 禁止JPA的自动结构更新: - 143 - 定义一...
6. "playframework" - 这是项目的核心框架,是一个灵活的Web开发框架,使用Scala和Java构建服务器端应用。 7. "WebappScala" - 明确指出该Web应用程序是使用Scala语言编写的。 【压缩包子文件的文件名称列表】:...
但随着技术的发展,现在更多的开发者可能转向使用Spring Boot、Hibernate ORM(取代XFire的现代Web服务框架如Spring Web Services)和更新版本的Struts或替代品如Play Framework。 然而,由于描述中提到“jar自已去...
《Slick:数据库操作的全面解析》 在Java和Scala的开发环境中,Slick是一个强大...在实际项目中,Slick不仅可以简化数据库交互,还可以与其他Scala框架无缝集成,如Akka和Play Framework,构建出高效稳定的后端服务。
2. **Hibernate ORM**: Hibernate是Java中的一个对象关系映射(ORM)框架,它允许开发者使用Java对象而不是SQL来操作数据库。在2015年,Hibernate 4.x版本仍然是主流,提供了对JPA 2.1的支持,增强了性能和易用性。 ...
* Play Framework 分析这些 Web 框架的优缺点包括: * Spring MVC:优点是轻量级、灵活、可扩展性强;缺点是学习曲线陡峭 * Struts 2.0:优点是功能强大、可扩展性强;缺点是配置复杂、学习曲线陡峭 * Hibernate:...
3. **框架使用**:为了提高开发效率,开发者可能会选择使用Spring MVC、Struts2或者Play Framework等Java Web框架。这些框架提供了一套完整的解决方案,包括依赖注入、事务管理、安全控制等。 4. **数据库管理**:...
从压缩包子文件的文件名称“简易java框架开源论坛系统”来看,这个论坛系统可能采用了一种简洁的Java框架来构建,可能是Spring Boot、Struts2或者Play Framework等。这些框架简化了开发过程,提供了开箱即用的功能,...
3. **Java后端开发**:在Java后端,开发者可能使用Spring Boot或Play Framework等框架来构建API服务,这些框架提供了处理HTTP请求、路由、数据访问和事务管理等功能,使得开发高效且易于维护。 4. **RESTful API...
2. **Web开发框架**: 公司官网可能使用了Spring Boot、Vaadin、Play Framework等Java Web框架,这些框架简化了开发过程,提供了MVC(Model-View-Controller)架构模式,便于实现动态网页。 3. **前端技术**: 源码...
5. **后端开发**:Java作为SplitWise的后端语言,利用Spring Boot或Play Framework等轻量级框架提供服务。这些框架简化了开发过程,提供了依赖注入、安全控制和自动配置等功能。 6. **安全性**:SplitWise必须确保...
5. **Java框架**:在项目管理中,开发者可能利用Spring Framework、Hibernate ORM、Struts或Play Framework等Java框架来简化开发,提高代码复用性,加速项目进度。 6. **敏捷开发**:在Java软件项目管理中,敏捷...