Yii Active Record compare with DAO

本文对比了DAO与ActiveRecord两种数据库交互方式的特点。DAO提供更好的性能和灵活性,但牺牲了一定的易用性和开发速度;而ActiveRecord则以其简单易用著称,适合于常规的应用开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DAO的基本操作

Main.php中
'writer'=>array(
'class' => 'CDbConnection',
'connectionString' => 'mysql:host=localhost;dbname=guestbook',
//'emulatePrepare' => true,
'username' => 'root',
'password' => '123456',
'charset' => 'utf8',       
),

1.数据增加
$connection = Yii::app()->writer;
$sql = "INSERT INTO `book`
(name,content,time) VALUES (:name,:content,:time)";
$command = $connection->createCommand($sql);
$name = 'testName'; //name字段的值
$content = 'testContent';//content字段的值
$time = time(); //time字段的值
$command->bindParam(":name",$name,PDO::PARAM_STR);  //其中的变量$name  必须以变量传值方式---不能直接给予实参
$command->bindParam(":content",$content,PDO::PARAM_STR);//其中的变量$content必须以变量传值方式---不能直接给予实参
$command->bindParam(":time",$time,PDO::PARAM_INT);//其中的变量$time  必须以变量传值方式---不能直接给予实参
$command->execute();

2、数据修改
$connection = Yii::app()->writer;
$sql = "UPDATE `book` SET name = 'names' WHERE id = :id";
$command = $connection->createCommand($sql);
$id = 91145;
$command->bindParam(':id',$id,PDO::PARAM_INT); //其中的变量$ id 必须以变量传值方式---不能直接给予实参
$command->execute();

3、数据的删除
$connection = Yii::app()->writer;
$sql = "DELETE FROM `book` WHERE id = :id";
$command = $connection->createCommand($sql);
$id = 91145;
$command->bindParam(':id',$id,PDO::PARAM_INT); //其中的变量$ id 必须以变量传值方式---不能直接给予实参
$command->execute();

4、数据的查询
$connection = Yii::app()->writer;
$sql = "SELECT * FROM `book` ORDER BY id DESC";//如使用where 可采用绑定 例:WHERE id = :id
$command = $connection->createCommand($sql);
$result = $command->queryAll();
print_r($result);


DAO
1.易用性比Active Record弱
2.使用DAO,会繁琐的写sql语句,在日常的作业过程中,还可能会影响其开发效率
3.应用程序的数据库操作性能会得到很大的提升
4.失去了Yii模型中自身的一些验证功能—校验器(但是可以自定义模型,继承ActiveRecord类实现)
5.分布式解决方案与Active Record一样,严格来说DAO更容易扩展(特别是在拆分表的的时候) 这条纯属于个人看法—需讨论得出最终结果

Active Record
1.易用性比DAO强
2.可以简化大量繁琐的sql语句,开发效率极高
3.应用程序的数据操作性能没DAO好
4.验证功能非常强大拥有校验器
5.分布式服务器环境中扩展没DAO灵活 这条纯属于个人看法—需讨论得出最终结果

结论:
如果数据记录的查询量不是很多与并发不是很高 可以采用Active Record
查询量很大,并发很高 可以考虑DAO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值