Here i am Explaining Hibernate Annotation programming ,the resources are used for this application are given bellow
- StudentTab.java(pojo class)
- hibernate.cfg.xml(configuration file)
- Client.java(client application)
- HibernateSessionFactory.java(Helper class)
Student.java
// default package
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import org.hibernate.annotations.GenericGenerator;
/**
* StudentTab entity. @author MyEclipse Persistence Tools
*/
@Entity
@Table(name = "STUDENT_TAB", schema = "SYSTEM")
public class StudentTab implements java.io.Serializable {
// Fields
private long stid;
private String stname;
// Constructors
/** default constructor */
public StudentTab() {
}
/** full constructor */
public StudentTab(String stname) {
this.stname = stname;
}
// Property accessors
@GenericGenerator(name = "generator", strategy = "increment")
@Id
@GeneratedValue(generator = "generator")
@Column(name = "STID", unique = true, nullable = false, precision = 10, scale = 0)
public long getStid() {
return this.stid;
}
public void setStid(long stid) {
this.stid = stid;
}
@Column(name = "STNAME", length = 10)
public String getStname() {
return this.stname;
}
public void setStname(String stname) {
this.stname = stname;
}
}
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">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="connection.url">
jdbc:oracle:thin:@localhost:1521:XE
</property>
<property name="connection.username">system</property>
<property name="connection.password">sekhar</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="myeclipse.connection.profile">orap</property>
<property name="show_sql">true</property>
<property name="configurationClass">
org.hibernate.cfg.AnnotationConfiguration
</property>
<mapping class="StudentTab" />
</session-factory>
</hibernate-configuration>
Client.java
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import pack.HibernateSessionFactory;
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
AnnotationConfiguration cfg=new AnnotationConfiguration();
cfg.configure("/hibernate.cfg.xml");
Session ses=HibernateSessionFactory.getSession();
Transaction tx=ses.beginTransaction();
StudentTab st=new StudentTab();
st.setStname("sekhar");
ses.save(st);
tx.commit();
}
}
Note:
during the compilation you got one error like the following while working with annotations in hibernate
"org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="StudentTab"/>"
This problem occur due to the configuration object in the HibernateSessionFactory.java ,but now we are working with the annotation that's why Hibernate software looks for the AnnotationConfiguration object due this reason above problem will occur while compilation replace the " private static Configuration configuration = new Configuration();" in HibernateSessionFactory.java with "private static AnnotationConfiguration configuration = new AnnotationConfiguration();" problem will solve..........
HibernateSessionFactory.java
package pack;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
/**
* Configures and provides access to Hibernate sessions, tied to the
* current thread of execution. Follows the Thread Local Session
* pattern, see {@link http://hibernate.org/42.html }.
*/
public class HibernateSessionFactory {
/**
* Location of hibernate.cfg.xml file.
* Location should be on the classpath as Hibernate uses
* #resourceAsStream style lookup for its configuration file.
* The default classpath location of the hibernate config file is
* in the default package. Use #setConfigFile() to update
* the location of the configuration file for the current session.
*/
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static AnnotationConfiguration configuration = new AnnotationConfiguration();
private static org.hibernate.SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;
static {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}
/**
* Returns the ThreadLocal Session instance. Lazy initialize
* the <code>SessionFactory</code> if needed.
*
* @return Session
* @throws HibernateException
*/
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
/**
* Rebuild hibernate session factory
*
*/
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
/**
* Close the single hibernate session instance.
*
* @throws HibernateException
*/
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
/**
* return session factory
*
*/
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}
/**
* return session factory
*
* session factory will be rebuilded in the next call
*/
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}
/**
* return hibernate configuration
*
*/
public static Configuration getConfiguration() {
return configuration;
}
}

No comments:
Post a Comment