当前位置: 首页 > 面试题库 >

Java数据库最大程度地减少了连接的创建

姚高爽
2023-03-14
问题内容

我是Java的初学者,也是我的一项工作。我必须做数据库操作。我有用于将数据插入数据库的Java代码,它工作正常。

public class JavaDBWork
{

  public static void main(String[] args)
  {
    try
    {
      // create a mysql database connection
      String myDriver = "org.gjt.mm.mysql.Driver";
      String myUrl = "jdbc:mysql://localhost/test";
      Class.forName(myDriver);
      Connection conn = DriverManager.getConnection(myUrl, "root", "");

      // create a sql date object so we can use it in our INSERT statement
      Calendar calendar = Calendar.getInstance();
      java.sql.Date startDate = new java.sql.Date(calendar.getTime().getTime());

      // the mysql insert statement
      String query = " insert into users (first_name, last_name, date_created, is_admin, num_points)"
        + " values (?, ?, ?, ?, ?)";

    //Other Code
}

我的问题是每次代码运行时,我的代码都必须创建一个数据库连接和准备好的语句对象,据我所知,这是一项昂贵的操作。

有什么方法可以保持与数据库的单个连接,并使用该连接来执行数据库工作?


问题答案:

您可以像这样使用设计模式Singleton Connection:

1-创建一个类SingletonConnection.java如下所示:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.EmptyStackException;

public class SingletonConnection   {


    private static Connection connection = null ;
    static 
    {
        try{
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection
                    ("jdbc:mysql://localhost:3306/gestion_comptes","root","");
        }catch(Exception ex)
        {

        }

    }
    public static Connection getConnection() throws Exception {
        return connection;
    }


}

在其他班级中这样称呼它:

 public  class DaoImpl{

        public Connection connection = SingletonConnection.getConnection();

        public DaoImpl() throws Exception 
        {
            if(connection==null)
                throw new Exception("impossible de se connecter 脿 la base de donn茅es");
        }
}


 类似资料:
  • 问题内容: 我是Java的初学者,也是我的一项工作。我必须做数据库操作。我有用于将数据插入数据库的Java代码,它工作正常。 我的问题是,每次代码运行时,我的代码都必须创建一个数据库连接和准备好的语句对象,据我所知,这是一项昂贵的操作。 有什么方法可以保持与数据库的单个连接并使用该连接来执行数据库工作? 问题答案: 您可以像这样使用设计模式Singleton Connection: 1-创建一个类

  • 问题内容: 我认为SpringBoot项目需要很长时间才能加载。这可能是因为SpringBoot正在为您配置组件,您甚至可能不需要其中的一些组件。最明显的事情是从类路径中删除不必要的依赖关系。但是,这还不够。 有没有办法找出SpringBoot为您配置的模块,以选择不需要的模块并禁用它们? 总的来说,还有什么可以做以加快SpringBoot应用程序的启动时间吗? 问题答案: 我可以告诉你,我通过S

  • 我正在使用hikari cp和spring boot应用程序,它有超过1000个并发用户。我已经设置了最大池大小- 当我使用 它显示的最大值为300,等于池大小。它永远不会增加超过最大池。这是故意的吗?我认为池大小意味着保持连接,以便在将来需要数据库请求时可以重用连接,但在需要时可以进行更多连接。 另外,当我删除max pool配置时,我会立即得到- HikariPool-0-连接不可用,请求在3

  • 我有一个flink作业,从kafka读取数据,从redis读取一些数据,然后将聚合的窗口数据写入redis接收器(redis写入操作实际上是调用加载到redis中的lua脚本,该脚本会增加现有值,因此我只能在此处增加而不能更新)。 问题是,当我停止作业(维护、代码更改等)时,即使使用保存点,我也会向redis写入重复数据,或者在恢复时丢失一些数据,因为据我所知,redis sink在语义方面没有任

  • 我很绝望,我刚刚使用sys和系统密码“oracle”按照此步骤创建了一个新的Oracle数据库。创建成功完成,但当我尝试远程连接到此数据库时。 通过SQLDeveloper,我发现了一个错误 并且对于用户scott/tiger(手动创建并授予连接权限)来说效果很好。 新创建的实例是TEST。如果我通过sqlplus/连接,效果很好 当我尝试连接时,说用户名/密码不连接 但听众显然知道新的实例

  • 我已经在树莓派7英寸上安装了tarantool,并希望尽量减少与硬盘(sd卡)的交互。有什么简单的方法可以做到这一点。hdd的真正用法是什么?