Yes: you can set loggers' log levels dynamically, and thus change it over time.
Ideally all you will need to do is get the logger at the top of the relevant class hierarchy and set the log level to whatever you want. For example, with hibernate:
import ch.qos.logback.classic.Level
import ch.qos.logback.classic.Logger;
import org.slf4j.LoggerFactory;
// When you want to temporarily change the log level
Logger orgHibernateLogger = LoggerFactory.getLogger("org.hibernate");
Level oldLogLevel = orgHibernateLogger.getLevel();
orgHibernateLogger.setLevel(Level.ERROR); // or whatever level you want
// When you want to return to the old log level
orgHibernateLogger.setLevel(oldLogLevel);
This should work as long as no other loggers in the relevant hierarchy have explicitly configured log levels. If other loggers in the hierarchy have explicitly configured log levels, you'll have to temporarily adjust all the explicitly set log levels, and then return them all to "normal" at the end.
Note that this is a time based approach, not a context based approach: if some other piece of code simultaneously uses the library while your temporary log level is in use, it will also get that temporary log level. Log levels only return to "normal" when you return then to normal. I don't think there's a simple way to avoid that without preventing the other code from running while you are using your temporary log level.
Edit: See the answer by Durron597 for a method that allow turning off the unwanted logging in the desired thread only. It's slightly less simple, but it looks like it should work.