- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
让有几个单独的 DAO 类 OrderDAO
, ProductDAO
, 和 CustomerDAO
在数据库中存储/检索数据并共享单个实例 DataSource
(数据库连接工厂)。
为了创建一个DataSource
实例并插入 DAOs
我们通常使用 Spring DI。现在我想在没有任何 DI 框架的情况下在 Scala 中做到这一点。
我读过 cake pattern ,看起来我应该做以下事情:
trait DatabaseContext { val dataSource:Datasource }
trait OrderDAO {this:DatabaseContext =>
... // use dataSource of DatabaseContext
}
trait ProductDAO {this:DatabaseContext =>
... // use dataSource of DatabaseContext
}
object DAOImpl extends OrderDAO with ProductDAO with DatabaseContext {
val dataSource = ... // init the data source
}
DAOs
使用蛋糕图案有什么不同?
OrderDAOImpl
和
ProductDAOImpl
共享相同的对象
DataSource
实例而不是一个大
DAOImpl
?
最佳答案
蛋糕图案的优点是:
trait OrderDAOComponent {
val dao: OrderDAO
trait OrderDAO {
def create: Order
def delete(id: Int): Unit
//etc
}
}
trait OrderDAOComponentImpl extends OrderDAOComponent {
class OrderDAOJDBCImpl extends OrderDAO {
def create: Order = {/*JDBC-related code here*/}
def delete(id: Int) {/*JDBC-related code here*/}
//etc
}
}
//This one has a dependency
trait OrderWebUIComponentImpl {
this: OrderDAOComponent =>
class OrderWebUI {
def ajaxDelete(request:HttpRequest) = {
val id = request.params("id").toInt
try {
dao.delete(id)
200
}
catch {
case _ => 500
}
}
}
}
//This matches contracts to implementations
object ComponentRegistry extends
OrderDAOComponentImpl with
OrderWebUIComponentImpl
{
val dao = new OrderDAOJDBCImpl
val ui = new OrderWebUI
}
//from some front-end code
val status = ComponentRegistry.ui.ajaxDelete(request)
trait DatabaseContext { val dataSource:Datasource }
trait OrderDAOComponent {this:DatabaseContext =>
trait OrderDAOImpl {
... // use dataSource of DatabaseContext
}
}
trait ProductDAOComponent {this:DatabaseContext =>
trait ProductDAOImpl {
... // use dataSource of DatabaseContext
}
}
object Registry extends OrderDAOComponent with ProductDAOComponent with DatabaseContextImpl {
val dataSource = new DatasourceImpl //if Datasource is a custom trait, otherwise wrapping needed
val orderDAO = new OrderDAOImpl
val productDAO = new ProductDAOImpl
}
//now you may use them separately
Registry.orderDAO.//
关于scala - 关于蛋糕图案的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5680035/
如何使这个 Cakephp 查询能够计算不同的值? $matches = $this->Product->find('count', array( 'condi
如何使这个 Cakephp 查询计数不同? $matches = $this->Product->find('count', array( 'condition
如何使这个 Cakephp 查询计数不同? $matches = $this->Product->find('count', array( 'condition
重复 What is a PHP Framework?and many more 到目前为止,我一直在使用 PHP 进行小的调整,主要是使用 WordPress。什么是 PHP 框架?为什么我需要它们
我正在为我的项目使用 CakePHP...为了加快我的代码速度,我只想获得一些与我的实际对象相关的模型类型: $result = $this->Category->find(
我们正在尝试找出蛋糕中哪一 block 的平均值最高。 蛋糕上有数字 [1, 3, 4, 2, 2] 第 [3, 4] block 的平均结果为 3.5 得出最高平均值的切片就是我们的答案 最佳答案
我以前用过几次 CakePHP,但这是我第一次尝试 Bake。在我的 Mac 上,我运行 CakePHP 1.3、PHP5.3.3 和 MySQL。我已经创建了我的数据库表并且应用程序连接到数据库。
我目前正在构建一个与 teamcity 交互的 Cake 构建脚本,我想提供进度消息。我可以很容易地报告任务名称,但我无法找出构建脚本中的进度。像(“执行 5 个任务中的第 1 个”)那样思考。 有什
如何在 cakephp 网站上设置 iPad/iPhone 书签图标?我使用的是正确的文件名 - apple-touch-icon.png - 我尝试将其上传到/webroot 和/webroot 上
在 AppController 中: public $helpers=array("Session","Html","Form"); public $components = array( '
我正在 Cake PHP 1.2 网站上测试我们网站的数据库从 Sql Server 到 MySQL 的转换,现在我在 Cake 存储模型信息的方式上遇到了错误。在创建我的“emp”(员工,不是我的命
我的模型相关如下: Post BELONGS_TO Parent Parent HAS_MANY ParentAdmin 现在,如果满足帖子的属性值,我希望找到所有帖子的所有父级管理员。等效的 sql
我想用从 Excel 工作表中提取的“平面”数据填充我的数据库。所有记录都以数组形式提供(类似于 $request->data),但它们的主键设置了必须保留的值。 我的代码: $imported =
我知道已经有一个类似的问题here ,但我认为我的问题完全不同,值得创建一个新帖子。 我使用 CAKE 0.21.1.0。 作为 TeamCity 上的一个构建步骤,我正在执行 build.ps1,它
我正在使用 CakePHP 2.4.7 并且我正在尝试在远程主机上执行 CakePHP shell。 我以 root 身份连接到服务器,然后执行 $ [path_to_my_foler]/app/Co
我的模型定义如下: columnType('data', 'json'); return $schema; } } 保存到数据库和检索数据时正确应用 JSON 格式
我在 CakePHP 1.3 中编写了一个具有返回值的 shell 方法。 我希望能够从 Controller 中访问该方法,以便将其返回值传递到 View 中。 我不确定如何从 Controller
我正在尝试运行我的蛋糕 shell 脚本,但输出如下所示: -bash-3.2$ ../cake/console/cake audit ../cake/console/cake: line 30:/r
我在 cake php 3 中有三个表: - 图片表 - 图片有图片表 - 图片类型表 一个图像有多个子图像。我已经与一个链接在一起belongsToMany 协会。 $this->belongsTo
我是一名优秀的程序员,十分优秀!