在 MYSQL 数据库中保持服务重启时间的最佳方法是什么

What is the best way to persist the time a service has been restarted in MYSQL database

我试图节省我的 java 服务在 debian 服务器上重新启动到 MYSQL 服务器的时间。 java 应用程序是一个 dropwizard 项目。我尝试从 Java 开始,但它需要对象创建、数据访问对象、休眠配置文件和映射文件。这似乎有点过头了,有没有更简单的方法来实现这一目标?

Hibernate 只是您可以用来访问数据库的一个选项,但它不是唯一的方式。如果你不想使用 Hibernate,你可以使用直接连接 JDBC

https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html

这应该可以帮助您了解如何设置连接以及如何使用它。

是的,如果你想使用Java,你不需要使用hibernate。您只需要类似于以下内容:

public class ServiceRestartServlet 扩展了 HttpServlet {

 public void doGet(HttpServletRequest req, HttpServletResponse response) throws IOException, ServletException {
  Connection conn = null;
  try {
    conn = DriverManager.getConnection(System.getProperty("jdbc.url"), System.getProperty("jdbc.user"), System.getProperty("jdbc.password"));
    conn.setAutocommit(false);
    PreparedStatement insertStatement = conn.prepareStatement("insert into serviceRestartLog (serviceName, restartTime) values (?, now())");
    insertStatement.setString(1, req.getParameter("serviceName"));
    insertStatement.execute();
    conn.commit();
  } catch (SQLException e) {
    System.err.println(new java.util.Date()+" Save failed -- "+e.getMessage());
  } finally {
    try {
      conn.close();
    } catch (Throwable e) {
      System.err.println(new java.util.Date()+" connection failed to close -- "+e.getMessage() );
    }
  }
  public void init(ServletContext ctx) {
     Class.forName(System.getProperty("jdbc.drivers")).newInstance();
  }
}

只需在您的 web.xml 中激活此 servlet,并在创建 table 后使用应用程序名称发出请求,您应该会很成功。

使用'mysql'命令行

mysql -u USERNAME -p PASSWORD -e 'update WHATEVER set DATE_RESTARTED=NOW();'

如果不想在命令行中传递密码,请搜索帮助。