从数据库模式设计 C++ 类

标签 c++ mysql database oop class

我正在编写一个 perl 脚本来解析 mysql 数据库模式并在必要时创建 C++ 类。我的问题很简单,但我以前没有真正做过,也不知道常见的做法。创建的任何类的任何对象都需要具有“获取”方法来填充此信息。所以我的问题是双重的:

  1. 调用构造函数中的所有 get 方法以使对象立即拥有数据是否有意义?有些类(class)会有很多,所以根据需要也可能有意义。我现在有两个构造函数。一种填充数据,一种不填充数据。
  2. 我是否还应该有另一个“get”方法来检索对象的数据拷贝而不是数据库拷贝。

我可以在 #1 上双向选择,在 #2 上我倾向于是。任何建议,指针将不胜感激。

最佳答案

通常,应用程序中成本最高的部分是往返数据库,因此从单个查询中填充所有数据成员比一次一个地填充数据成员效率要高得多,无论是根据需要基础或来自您的构造函数。支付往返费用后,您就可以物有所值了。

另外,一般来说,你的 get* 方法应该被声明为 const,这意味着它们不会改变底层对象,所以让它们进入数据库来填充对象会破坏它(你可以通过使成员变量是可变的,但这基本上会破坏 const 的目的。

为了将事情分解成具体步骤,我建议:

  • 让您的构造函数调用单独的 init() 方法来查询数据库并填充对象的数据成员。
  • 将您的 get* 方法声明为 const,并让它们返回数据成员。

关于从数据库模式设计 C++ 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/83512/

相关文章:

c++ - vector 的 Schwarz 计数器

c++ - 执行 CUDA 程序时出现段错误

c++ - 有没有办法让 C++ 析构函数急切地被调用?

php - 如果记录不存在,如何比较表并显示?

mysql - 替换 MySQL 字符串中的第一个字符

mysql - NxM表查询

java - hibernate 中是否允许嵌套不同类型的继承?

sql-server - 提高数据库性能最快的方法是什么?直接瞄准我的目标(5000 个用户)?或者首先使用人工里程碑?

c++ - SDL2 SLD_RenderCopy 不显示任何内容

php - 减少和合并数组