Hibernate One to Many

Person.hbm

 <class name="hibernatetest2.Person" table="PERSON">
        <id column="personid" name="personid">
            <generator class="increment"/>
        </id>
        <property column="name" name="name"/>
        <property column="age" name="age"/>
     
        <set cascade="all" name="hats" table="HAT">
            <key column="personid"/>
            <one-to-many class="hibernatetest2.Hat"/>
        </set>
     
    </class>


Hat.Hbm

 <class name="hibernatetest2.Hat" table="HAT">
        <id column="hatid" name="hatid">
            <generator class="increment"/>
        </id>
        <property column="personid" name="personid"/>
        <property column="color" name="color"/>
        <property column="size" name="size"/>

    </class>

Person.java

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package hibernatetest2;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 *
 * @author Kamal
 */
public class Person {

    private int personid;
    private String name;
    private int age;
    private Set<Hat> hats;

// Generate Getters and Setters for the above
// Properties
    public Person() {
        hats = new HashSet<Hat>();
    }

    public int getPersonid() {
        return personid;
    }

    public void setPersonid(int personid) {
        this.personid = personid;
    }

    public String getName() {
        return name;
    }

    public Set<Hat> getHats() {
        return hats;
    }

    public void setHats(Set<Hat> hats) {
        this.hats = hats;
    }
    
    

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        String personString = "Person: " + getPersonid()
                + " Name: " + getName()
                + " Age: " + getAge();
        String hatString = "";
        for (Hat hat : hats) {
            hatString = hatString + "\t\t" + hat.toString() + "\n";
        }
        return personString + "\n" + hatString;
    }

}


hat.java

private int hatid;
    private String color;
    private String size;
    private int personid;

// Getters and Setters
    public int getHatid() {
        return hatid;
    }

    public void setHatid(int hatid) {
        this.hatid = hatid;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getSize() {
        return size;
    }

    public void setSize(String size) {
        this.size = size;
    }

    public int getPersonid() {
        return personid;
    }

    public void setPersonid(int personid) {
        this.personid = personid;
    }

    public String toString() {
        return "Hat: " + getHatid()
                + " Color: " + getColor()
                + " Size: " + getSize();
    }


Main.java

 public static void main(String[] args) {
        // TODO code application logic

        Person p1 = new Person();
        p1.setName("Saman With Hats");
        p1.setAge(30);
        Hat h1 = new Hat();
        h1.setColor("Black");
        h1.setSize("Small");
        Hat h2 = new Hat();
        h2.setColor("White");
        h2.setSize("Large");
        p1.getHats().add(h1);
        p1.getHats().add(h2);
        createPerson(p1);
        listPerson();
    }

    private static void listPerson() {

        Session session = NewHibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();
            List persons = session.createQuery(
                    "select p from Person as p").list();
            System.out.println("*** Content of the Person Table ***");
            System.out.println("*** Start ***");

            // ------------- Query
//            Query q = session.createQuery("select p from Person as p where p.age >:age");
//            Person fooPerson = new Person();
//            fooPerson.setAge(age);
//            q.setProperties(fooPerson);
//            List persons = q.list
            //-------------------------        
            for (Iterator iter = persons.iterator(); iter.hasNext();) {
                Person element = (Person) iter.next();
                System.out.println(element);
            }
            System.out.println("*** End ***");
            session.getTransaction().commit();
        } catch (RuntimeException e) {

        }
    }

    private static void deletePerson(Person person) {

        Session session = NewHibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();
            session.delete(person);
            session.getTransaction().commit();
        } catch (RuntimeException e) {

        }
    }

    private static void createPerson(Person person) {

        Session session = NewHibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();
            session.save(person);
            session.getTransaction().commit();
        } catch (RuntimeException e) {

        }
    }

    private static void updatePerson(Person person) {

        Session session = NewHibernateUtil.getSessionFactory().getCurrentSession();
        try {
            session.beginTransaction();
            session.update(person);
            session.getTransaction().commit();
        } catch (RuntimeException e) {

        }

    }


No comments:

Post a Comment