Mallikarjun Sannapyati
Mallikarjun Sannapyati

Reputation: 140

Hibernate 4.3.5 is not working with Oracle10g Database

I am trying out Hibernate 4.3.5 with Oracle Database. But during run I am getting the following problem(The same code is working fine with MySQl database).

org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Jun 26, 2014 10:35:46 AM org.hibernate.engine.jdbc.internal.JdbcServicesImpl configure
WARN: HHH000341: Could not obtain connection metadata : Unsupported feature
Jun 26, 2014 10:35:46 AM org.hibernate.engine.jdbc.internal.LobCreatorBuilder useContextualLobCreation
INFO: HHH000422: Disabling contextual LOB creation as connection was null
Exception in thread "main" java.lang.NullPointerException
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:244)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
at com.cluster.HibernateMain.main(HibernateMain.java:29)

My code is

hibernate.cfg.xml

   <hibernate-configuration>
    <session-factory>
    <!-- Database connection properties - Driver, URL, user, password -->
        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
        <property name="hibernate.connection.username">hr</property>
        <property name="hibernate.connection.password">hr</property>
        <property name="hibernate.hbm2ddl">create</property>


        <!-- org.hibernate.HibernateException: No CurrentSessionContext configured! -->
        <property name="hibernate.current_session_context_class">thread</property>

        <!-- Outputs the SQL queries, should be disabled in Production -->
        <property name="hibernate.show_sql">true</property>

        <!-- Dialect is required to let Hibernate know the Database Type, MySQL, Oracle etc
            Hibernate 4 automatically figure out Dialect from Database Connection Metadata -->
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> 

        <!-- mapping file, we can use Bean annotations too -->
        <mapping resource="com\cluster\employee.hbm.xml" />
    </session-factory>
</hibernate-configuration>

employee.hbm.xml

<hibernate-mapping>
    <class name="com.cluster.Employee" table="EMPLOYEE">
        <id name="id" type="int">
            <column name="ID" />
            <generator class="increment" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <property name="role" type="java.lang.String">
            <column name="ROLE" />
        </property>
        <property name="insertTime" type="timestamp">
            <column name="insert_time" />
        </property>
    </class>
</hibernate-mapping>

And the client code is

public class HibernateMain {

    public static void main(String[] args) {
        Employee emp = new Employee();
        emp.setName("Amr");
        emp.setRole("President");
        emp.setInsertTime(new Date());



     // Create the SessionFactory from hibernate.cfg.xml
        Configuration configuration = new Configuration();
        configuration.configure();
        System.out.println("Hibernate Configuration loaded");

        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
        System.out.println("Hibernate serviceRegistry created");

        SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

        //Get Session
        Session session = sessionFactory.getCurrentSession();


        //start transaction
        session.beginTransaction();
        //Save the Model object
        session.save(emp);
        //Commit transaction
        session.getTransaction().commit();
        System.out.println("Employee ID="+emp.getId());

        //terminate session factory, otherwise program won't end
        sessionFactory.close();
    }

}

Jars what I am using are enter image description here

What the thing I am missing ? Thanks in advance.

Upvotes: 2

Views: 2146

Answers (1)

Mallikarjun Sannapyati
Mallikarjun Sannapyati

Reputation: 140

I solved the problem by removing ojdbc14.jar and adding ojdbc6.jar. Because as Hibernate 4 is using JDBC4.0 implementation which is not present in ojdbc14.jar but this implementation is present in ojdbc6.jar.

Upvotes: 3

Related Questions