事情是这样的,在有了 orm 之后,在封装一层数据访问层,我觉得是没有大问题的。但是问题是怎么进行封装比较合适呢?
下面是两个 case (伪代码):
case1:
// 新增用户昵称
function addName(user_id, name){
// 获取数据库链接
db = _get_db()
if (not db){
return error
}
add_time = time()
insert_row = {
user_id = user_id,
name = name,
status = this.status_using,
add_time = add_time,
updated_time = add_time,
}
insert_id, err = db.add(table, insert_row)
if (err) {
LOG("添加姓名失败" ,insert_row ,insert_id ,err)
return error
}
return true
}
// service 层调用
res = xxx.addName(12, '拜拜你条尾')
code ...
case2:
function db_option(handlearr){
is_ok = false
if (len(handlearr) <= 0) {
return is_ok
}
db = _get_db()
if (not db){
return is_ok
}
for (index, option in handlearr) {
is_ok = true
if (option.cmd== '__delete') {
res = db.delete(option.table_name, option.data)
if (res <= 0) {
LOG("delete data err where:",json_encode(option.data))
is_ok = false
}
}
if (option.cmd== '__insert'){
res = db.add(option.table_name, option.data)
if (not res) {
LOG("insert data failed:",json_encode(option.data))
is_ok = false
}
}
}
return is_ok
}
// service 层调用
handlearr = [
{cmd = '__insert',table_name = 't_user', data = userinfo},
{cmd = '__delete',table_name = 't_device', data = {id = deviceinfo.id}}
]
res = db_option(handlearr)
code ...
1.想知道怎样的封装才是比较合适的?个人认为第一种就够了,第二种的话好像慢慢会封装成另一个 orm 的感觉,而且隐藏的细节更多了.... 2.dao 层对 orm 再封装的话,怎么样才比较符合认知?
求各位赐教!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.