Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.phantom.db.util;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- import org.springframework.stereotype.Component;
- import java.sql.Connection;
- import java.sql.DriverManager;
- @Component
- public class HibernateUtil {
- private static SessionFactory sessionFactory;
- private static Configuration configuration;
- public HibernateUtil() {
- if (sessionFactory == null) {
- sessionFactory = buildSessionFactory();
- }
- }
- private SessionFactory buildSessionFactory() {
- try {
- // Load configuration
- configuration = new Configuration().configure();
- // Test connection before building session factory
- testJDBCConnection();
- System.out.println("β JDBC connection test successful!");
- return configuration.buildSessionFactory();
- } catch (Throwable ex) {
- System.err.println("β Initial SessionFactory creation failed: " + ex.getMessage());
- ex.printStackTrace();
- throw new ExceptionInInitializerError(ex);
- }
- }
- private void testJDBCConnection() throws Exception {
- // Extract connection parameters from Hibernate config
- String driver = configuration.getProperty("hibernate.connection.driver_class");
- String url = configuration.getProperty("hibernate.connection.url");
- String username = configuration.getProperty("hibernate.connection.username");
- String password = configuration.getProperty("hibernate.connection.password");
- System.out.println("Testing JDBC connection with parameters:");
- System.out.println("Driver: " + driver);
- System.out.println("URL: " + url);
- System.out.println("Username: " + username);
- // Load driver class
- Class.forName(driver);
- try (Connection conn = DriverManager.getConnection(url, username, password)) {
- if (conn == null) {
- throw new Exception("DriverManager returned null connection");
- }
- System.out.println("Connection valid: " + conn.isValid(2));
- } catch (Exception e) {
- throw new Exception("JDBC connection test failed: " + e.getMessage(), e);
- }
- }
- public SessionFactory getSessionFactory() {
- return sessionFactory;
- }
- public Session getOpenSession() {
- return sessionFactory.openSession();
- }
- public void shutdown() {
- if (sessionFactory != null) {
- sessionFactory.close();
- System.out.println("Session factory closed");
- }
- }
- }
- /**
- Output:
- Testing JDBC connection with parameters:
- Driver: com.mysql.cj.jdbc.Driver
- URL: jdbc:mysql://localhost:3306/company_test?allowPublicKeyRetrieval=true
- Username: root
- Connection valid: true
- ? JDBC connection test successful!
- com.phantom.configuration.PhantomStaticConfiguration@7e06eefb
- Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
- Initial SessionFactory creation failed.org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution
- Followed by
- "Beans not being able to be created" errors.
- */
Advertisement
Add Comment
Please, Sign In to add comment