查询在java中模拟全局变量
我有一个问题,我想这对大多数人来说都是微不足道的。 但是,这里 – 我有一个连接到数据库以读取特定信息的应用程序。 现在,这个读取在每个请求的基础上发生在应用程序的许多类中。 所以我想将每个请求的数据库连接数限制为1 。 所以这就是我所做的。
假设我有一个数据库访问类,DBAccess获取2个字符串,a&b。
我写了一个Global类,如下所示 –
public class Global { static String a; static String b; public Global(DBAccessInput input) throws Exception { super(); DBAccess dbtool= new DBAccess(input); a=dbtool.getA(); b=dbtool.getB(); } }
所以现在我可以继续在整个应用程序的其他类中访问a&b作为Global.a和Global.b。 但这对我来说似乎是错误的,因为填充a&bi需要实例化Global的对象然后我将回退到访问a&b为Global.a,同样为b。 我可以把Global构造函数中的所有东西放到一个静态块中但是仍然没有帮助,因为我仍然需要实例化Global的一个对象以将“输入”传递给DBAccess。
任何正确方向的帮助或指示都会有很大帮助。
您可以在全局的静态方法中实例化那些静态变量,而不是构造函数但是这不是一个好的样式:
static initialize(DBAccessInput input) { a = ... b = ... }
您不必实例化Global来访问其静态成员。 静态成员可以通过类名访问,而不需要任何对象。 所以你的方法是合理的。
处理“全局”对象有以下常见做法。
- 静态成员(几乎是你的方法)
- 单身人士模式
- 线程本地。
如果我是你,我会创建DBAccess
单例,这样你就可以访问数据库了: DBAccess.getInstance().find("the query")
顺便说一下,看看已经实现了DB访问层的工具。 例如iBatis,Hibernate,JPA。