使用 ActiveJDBC 进行连接管理
Connection management with ActiveJDBC
我目前正在接触 ActiveJDBC,据我所知,这是一个非常好用的框架。但是我对它的 JDBC-Connection 管理有一些问题,因为它将一个打开的连接附加到当前线程。这意味着,如果我在程序初始化时打开连接,一切正常;但是如果我之后实例化一个 JFrame 并在 ActionListener 中尝试 reading/wrtiting 数据 from/to 数据库,它将产生一个错误,因为没有连接到调度线程。
如何解决这个问题?我宁愿只有一个连接,我可以一直访问(通过 Base.connection()),而不是将一个连接附加到每个线程..
提前致谢
我建议您以这种方式实现动作侦听器:
public class AJListenerAdapter implements ActionListener{
public void actionPerformed(ActionEvent e){
Base.open(...);
doPerform(ActionEvent e);
Base.close(...);
}
protected abstract doPerform(ActionEvent e);
}
然后将此适配器子类化并实现 doPerform()
方法。
此外,您可能希望使用池中的连接。这是一个例子
https://github.com/javalite/activejdbc/blob/master/activejdbc/src/test/java/org/javalite/activejdbc/C3P0PoolTest.java
我目前正在接触 ActiveJDBC,据我所知,这是一个非常好用的框架。但是我对它的 JDBC-Connection 管理有一些问题,因为它将一个打开的连接附加到当前线程。这意味着,如果我在程序初始化时打开连接,一切正常;但是如果我之后实例化一个 JFrame 并在 ActionListener 中尝试 reading/wrtiting 数据 from/to 数据库,它将产生一个错误,因为没有连接到调度线程。
如何解决这个问题?我宁愿只有一个连接,我可以一直访问(通过 Base.connection()),而不是将一个连接附加到每个线程..
提前致谢
我建议您以这种方式实现动作侦听器:
public class AJListenerAdapter implements ActionListener{
public void actionPerformed(ActionEvent e){
Base.open(...);
doPerform(ActionEvent e);
Base.close(...);
}
protected abstract doPerform(ActionEvent e);
}
然后将此适配器子类化并实现 doPerform()
方法。
此外,您可能希望使用池中的连接。这是一个例子 https://github.com/javalite/activejdbc/blob/master/activejdbc/src/test/java/org/javalite/activejdbc/C3P0PoolTest.java