Skip to main content

Hibernate 3 with Annotation Hands on with Example

I have worked with Hibernate2 where we had to define all configuration as well as Class to Table mapping though XML files. Hibernate 3 goes one step ahead and provides new ways to work
Where we can use annotation to define Class-Table mapping.

Hibernate3 supports annotation and requires Java 5 or above to function properly. While trying to work with Hibernate you will notice it has several dependencies to other third party jars, like
apache commons collections , apache commons logging.

I have tried to put all the required file in a zip file  and named it   "hibernate3AllJars" .

Since while playing around with codes which require some data base I prefer MySQL  since it is very easy to use and it is free. I have also putted the  MySQL JDBC Driver  mysql-connector-java-5.0.5-bin in the zip file.

If needed you can email me regarding the zip file.


For the Hands on I have created a Table in MySQL Database "sidd"  by executing the following command,

CREATE TABLE `honey` (
    ->   `id` int(11) NOT NULL auto_increment,
    ->   `name` varchar(100) default NULL,
    ->   `taste` varchar(100) default NULL,
    ->   PRIMARY KEY  (`id`)
    -> ) ENGINE=MyISAM ;



The table contains three column,  id, name and taste.


Now created the Honey POJO class , which is as follows,

package com.nefunda.java.hibernate.pojo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;


@Entity
@Table(name="honey")
public class Honey {

    @Id
    @Column(name = "id")
    private int id;
   
    @Column(name = "name")
    private String name;

    @Column(name = "taste")
    private String taste;
   
   
    public int getId() {
        return id;
    }
   
    public void setId(int id) {
        this.id = id;
    }
   
    public String getName() {
        return name;
    }
   
    public void setName(String name) {
        this.name = name;
    }
   
    public String getTaste() {
        return taste;
    }
   
    public void setTaste(String taste) {
        this.taste = taste;
    }
   
}


With the help of annotations I have declared that this class is a persistent class and it is mapped with the table honey [@Table(name="honey")].

Now, mapped three members id, name and taste to corresponding columns of the honey table.


Without using annotation we would require to declare this  table-class relationship in a xml file as Follows,

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
  <class name="com.nefunda.java.hibernate.pojo.Honey" table="Honey">
   <id name="id" type="long" column="id" >
   <generator class="assigned"/>
  </id>

  <property name="name">
     <column name="name" />
  </property>
  <property name="taste">
    <column name="taste"/>
  </property>
 </class>
</hibernate-mapping>



Comments

  1. This is a nice tutorial, but can you make the look a bit more clear.

    Also can you guide with some sort of download link, from where I can download the source code or zip file?

    ~Somali

    ReplyDelete

Post a Comment

Popular posts from this blog

Masking Credit Card number in Java

Sometimes we need to mask crucial information like Credit Card Numbers, CVV numbers etc before storing  or logging the information. This example mask Credit Card Number (Except last 4 Digit) from a Text which contains information along with Credit Card Number.

The following example demonstrates how we can easily mask the credit card with Matcher and Pattern Classes. This Sample Code uses Matcher and Pattern.
Pattern Used in this sample is not optimized for Credit Card Numbers, this pattern will get any numerical numbers in the String Content.  Based on the Credit Card Type a more efficient and Strict RegEx can be used to mask the Credit Card.
/**Mask the Credit card number but last four digit value **/   Pattern PATTERN = Pattern.compile("[0-9]+"); String message = content; Matcher matcher = PATTERN.matcher(message); String maskingChar = "*"; StringBuilder finalMask = new StringBuilder(maskingChar); while …

Converting Java Map to String

Java Collections framework, String manipulation etc is something that we often encounter in Development process.
For processing collections (like checking null/empty, Intersection, Disjunction) We do have some of the very use full libraries.

Some of the Collection related libraries are Apche Commons Collections and Google  Collections(Guava).

Problem Use Case

This article explains how to convert a Java Map to String(and vice versa) using different libraries and technique.

One way is to use StringBuilder(Or String) and loop though the Map and build the String by applying some sort of separator ( for key:value and entry). Here we have to take care of the null value etc.

Without Any Library
If we want to convert the map to a String with key value separator and also individual entry seperator in the resulting String, we have to write code for that. For a simple Map, we have to iterate though the map, take care of the null values etc. Following is a sample to get String built out from Map C…

Invoking EJB deployed on a remote machine

Invoking EJB deployed on a remote machineIn case we are calling remote ejb( ejb deployed on remote machines),The JNDI lookup might lookup like,Properties env = new Properties();env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");env.put(Context.PROVIDER_URL, "XX.XXX.XX.XX:1099");env.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces"); Context ctx = new InitialContext(env);If we are calling local ejb then we can simply create InitialContext without any parameters.Like,Context ctx = new InitialContext();