应用程序是通过多租户支持开发的,其中我需要向用户发送短信,我需要在其中附加国家/地区拨号代码和用户手机号码。
我的问题,在国家/地区表中使用单独的列来存储国家/地区拨号代码是一个好方法,还是在属性文件中存储国家/地区代码是一个好方法?
一般来说,我们将在属性文件中存储什么样的值(例如数据库配置设置)?
只需将数据库连接详细信息放入属性文件中,并将其他所有内容放入数据库中。如果您运行多个具有共享或复制数据库的应用程序服务器,这将确保相同的数据在任何地方都可用 - 这可能不是现在的考虑因素,但面向未来没有什么坏处!
我认为这取决于您使用的应用程序。不管怎样它都会产生你想要的结果。例如:可以根据检索次数和更改/编辑频率进行选择。
a.
Times of retrieval is high - Avaoid multi times hit on DB-table
如果是在属性文件中维护的,则可以通过加载该文件,使用java.util.Properies进行检索。如果您在某些带有 ant 构建的 jsp 页面中使用相同的信息,则可以通过使用 ant 的属性 ant 任务读取 ant 属性来轻松检索。如果多个子应用程序/模块使用相同的信息,这将很有用。
b.
Frequency of edits is high & retrieval is like one time in application.
如果您想维护数据库表映射中的数据并且它被某些共享应用程序/项目使用,那么它将在可维护性方面有所帮助。
根据国家/地区点击数据库一次或获取所有值并根据要求使用/迭代
基本上这取决于您的数据有多大。通常,在使用 Swing 应用程序时,您将所有翻译的文本放入属性文件中,该文件可能包含大约 1000 个属性。 但如果您的数据包含一万个条目,那么数据库将更有意义且更易于维护。
由于您的项目中已经有一个数据库,我建议使用该数据库并将国家/地区代码添加到数据库中。
根据您的用例,我了解您需要在运行时存储/检索国家/地区代码。
通常我们使用属性文件来使用户能够配置外部值(例如,连接属性、输出文件夹)。属性对于非 GUI 应用程序非常有用。
但是这里的国家代码不太可能改变,你可以将它们存储在数据库中,在此基础上你可以添加一个缓存层,这样你就可以一次获取。这样您就可以确保性能的提高。
答案可以归结为这个简单的经验法则。状态需要存在于数据库中。
使用属性文件来存储可变状态除了是一种反模式之外,还会带来灾难。
数据库作为一个概念最初是从像这样的灾难中吸取的教训而出现的。
谢谢