开发一个程序,使用实体类 与 直接 调用运行sql存储过程的函数 获取数据,有什么区别?
展开全部
使用实体类的时候:先通过 某些工具或代码自动生成的 存储过程获取数据,再加载进实体类,实际上时间消耗比直接sql大,但因为是是靠工具的,而这些工具大都是高手写的,所以会帮你降低很多隐患 ,比如SQL注入。而且因为他们已经写好了,你调用很方便。
相关工具:Java里的 Hibernate、C#里的 Linq
数据表(User为示例)的数据行以 Row 的形式给你的时候其实是还需要你自己判断处理的,比如 获取 User.Id 属性 需要 Integer.ParseInt(row["id"].ToString()); 转化成你需要的类型。
但以上两种工具都会让 数据行 成为一个类,到时候就会自动生成(Hibernate偶尔需要配置)对应的 get set 方法。
Hibernate的话: int User.getId() { return this.Id; }
Linq的话:int Id {get {return _Id; }}
既然 get set 方便了,那 编辑 就也方便了。
Hibernate :
User user = (User)dao.get(User.Class, 4); // 获取 键值是 4 的 User
user.setName("Seraph_fd"); // 修改Name为
dao.update(user); // 更新实体,会更新数据库的哟
Linq:
User user = myDataContext.User.Single(t => t.Id == 4);
user.Name = "Seraph_fd";
myDataContext.SubmitChanges(); // 提交更新
相关工具:Java里的 Hibernate、C#里的 Linq
数据表(User为示例)的数据行以 Row 的形式给你的时候其实是还需要你自己判断处理的,比如 获取 User.Id 属性 需要 Integer.ParseInt(row["id"].ToString()); 转化成你需要的类型。
但以上两种工具都会让 数据行 成为一个类,到时候就会自动生成(Hibernate偶尔需要配置)对应的 get set 方法。
Hibernate的话: int User.getId() { return this.Id; }
Linq的话:int Id {get {return _Id; }}
既然 get set 方便了,那 编辑 就也方便了。
Hibernate :
User user = (User)dao.get(User.Class, 4); // 获取 键值是 4 的 User
user.setName("Seraph_fd"); // 修改Name为
dao.update(user); // 更新实体,会更新数据库的哟
Linq:
User user = myDataContext.User.Single(t => t.Id == 4);
user.Name = "Seraph_fd";
myDataContext.SubmitChanges(); // 提交更新
更多追问追答
追问
这么说,其实我还是觉得直接sql好,灵活性大!其实自己写好程序的框架,分类清楚,使用自己的感觉好很多似的
追答
其实我是建议用工具的。
以前我也觉得源生的sql语句挺好看的,但是要考虑的东西实在太多了:参数数目、参数格式错误、SQL注入。复杂的应用的时候直接sql语句也很难。
源SQL也不是一定是最快的,之前查到过一个知识点是 PreparedStatement 这个可以加速SQL执行速度,Hibernate 就用了这个点。
而且深受面向对象的思想荼毒之后,我是觉得没有Class就活不下去了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询