I am trying to learn Hibernate with a Lynda course. I'm having trouble trying to do the first application of HelloWorld. I am getting an error regarding session factory object.
Here is my HelloWorldExample
package helloworldexample;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
public class HelloWorldExample {
private static SessionFactory factory;
private static ServiceRegistry registry;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String m = "";
System.out.println("Enter a message: ");
m = in.nextLine();
try{
Configuration conf = new Configuration().configure();
registry = new StandardServiceRegistryBuilder().applySettings(
conf.getProperties()).build();
factory = conf.buildSessionFactory(registry);
} catch (Throwable ex){
System.err.println("Failed to create session factory object"+ex);
throw new ExceptionInInitializerError(ex);
}
Session session = factory.openSession();
Transaction tx = null;
Short msgId = null;
try{
tx=session.beginTransaction();
Message msg = new Message(m);
msgId = (Short) session.save(msg);
List messages = session.createQuery("FROM Message").list();
for(Iterator iterator = messages.iterator(); iterator.hasNext();){
Message message = (Message)iterator.next();
System.out.println("message: "+message.getMessage());
}
tx.commit();
}catch(HibernateException e){
if(tx != null) tx.rollback();
e.printStackTrace();
}finally{
session.close();
}
StandardServiceRegistryBuilder.destroy(registry);
}
}
Here is my hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate
Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate- configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect </property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver </property>
<property name="hibernate.connection.url"> jdbc:mysql://localhost:3306/messagerepository? zeroDateTimeBehavior=convertToNull
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">admin</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.current_session_context_class">thread</property>
<property name="hibernate.query.factory_class">org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory</property>
<mapping resource="helloworldexample/Message.hbm.xml"/>
Here is my Message.java
package helloworldexample;
public class Message implements java.io.Serializable {
private Short id;
private String message;
public Message() {
}
public Message(String message) {
this.message = message;
}
public Short getId() {
return this.id;
}
public void setId(Short id) {
this.id = id;
}
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
}
Here is my Message.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated Jan 9, 2017 10:28:21 AM by Hibernate Tools 4.3.1 -->
<hibernate-mapping>
<class name="helloworldexample.Message" table="message" catalog="messagerepository" optimistic-lock="version">
<id name="id" type="java.lang.Short">
<column name="id" />
<generator class="identity" />
</id>
<property name="message" type="string">
<column name="message" length="50" />
</property>
</class>
</hibernate-mapping>
Does anyone have any ideas?
Cheers