In a lot of applications, most of the time will be taken by the SQL queries' execution. Therefore, it is important to monitor them. You can use one of the previous techniques but there are also some specific ways to monitor them.
Generally, the idea is to replace the native driver you use (the Oracle, MySQL ones, for instance) with a monitoring driver, which will wrap the default driver and delegate all the logic to the original one, adding some metrics on top of it.
For instance, using sirona JDBC driver (http://repo.maven.apache.org/maven2/com/github/rmannibucau/sirona/sirona-jdbc/0.6/) for our datasource, we will define the application DataSource this way:
@DataSourceDefinition( name = "java:app/jdbc/quote_manager", className ...