Hibernate Many To Many Mapping Using Annotations
Let us see the example on many to many using annotations
Files required….
- Categories.java
- Item.java
- hibernate.cfg.xml
- ForOurLogic.java
Categories.java
12345678910111213141516171819202122232425262728293031323334353637383940414243444546package str; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; import javax.persistence.Table; @Entity @Table(name="categories") public class Categories { @Id @Column(name="catid") private int categoryId; @Column(name="catname",length=10) private String categoryName; @ManyToMany(targetEntity=Item.class,cascade=CascadeType.ALL) @JoinTable(name="categories_items",joinColumns=@JoinColumn(name="cat_id_fk",referencedColumnName="catid"),inverseJoinColumns=@JoinColumn(name="item_id_fk",referencedColumnName="itemid")) private Set items; public int getCategoryId() { return categoryId; } public void setCategoryId(int categoryId) { this.categoryId = categoryId; } public Set getItems() { return items; } public void setItems(Set items) { this.items = items; } public String getCategoryName() { return categoryName; } public void setCategoryName(String categoryname) { this.categoryName = categoryname; } }
Item.java
1234567891011121314151617181920212223242526272829303132333435363738394041package str; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToMany; import javax.persistence.Table; @Entity @Table(name="items") public class Item { @Id @Column(name="itemid") private int itemId; @Column(name="itemname",length=10) private String itemName; @ManyToMany(targetEntity=Categories.class,mappedBy="items") private Set categories; public Set getCategories() { return categories; } public void setCategories(Set categories) { this.categories = categories; } public int getItemId() { return itemId; } public void setItemId(int itemId) { this.itemId = itemId; } public String getItemName() { return itemName; } public void setItemName(String itemName) { this.itemName = itemName; } }
hibernate.cfg.xml
123456789101112131415161718192021<?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="connection.driver_class">oracle.jdbc.driver.OracleDriver </property> <property name="connection.url">jdbc:oracle:thin:@www.java4s.com:1521:XE</property> <property name="connection.username">system</property> <property name="connection.password">admin</property> <property name="dialect">org.hibernate.dialect.OracleDialect</property> <property name="show_sql">true</property> <property name="hbm2ddl.auto">update</property> <mapping></mapping> <mapping></mapping> </session-factory> </hibernate-configuration>
ForOurLogic.java
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253package str; import java.util.HashSet; import java.util.Set; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class ForOurLogic { public static void main(String args[]) { Configuration cfg = new Configuration(); cfg.configure("hibernate.cfg.xml"); SessionFactory factory = new Configuration().configure().buildSessionFactory(); Session ses = factory.openSession(); Categories c1 = new Categories(); c1.setCategoryId(1); c1.setCategoryName("cat 1"); Categories c2=new Categories(); c2.setCategoryId(2); c2.setCategoryName("cat 2"); Item i1=new Item(); Item i2 = new Item(); i1.setItemId(101); i1.setItemName("item1"); i2.setItemId(102); i2.setItemName("item2"); Set s =new HashSet(); s.add(i1); s.add(i2); c1.setItems(s); c2.setItems(s); Transaction tx = ses.beginTransaction(); ses.save(c1); ses.save(c2); tx.commit(); System.out.println("Man to Many using annotations been done...!!!!!"); ses.close(); } }
post a comment