Hibernate Many to Many Mapping
Relationship Diagram
Project Structure
File Name
|
Use
|
Language.java
|
Pojo class for Language.
|
Person.java
|
Pojo class for Person.
|
Language.hbm.xml
|
Mappings file for Language class.
|
Person.hbm.xml
|
Mappings file for Person class.
|
hibernate.cfg.xml
|
Hibernate Configuration File.
|
Main.java
|
It will control the overall process.
|
Language.java
package manyToMany.simple;
public class Language
{
private long langId;
private String langName;
public Language() { } //no argument constructor
public Language(String langName) {
this.langName = langName;
}
public long getLangId() {
return langId;
}
public void setLangId(long langId) {
this.langId = langId;
}
public String getLangName() {
return langName;
}
public void setLangName(String langName) {
this.langName = langName;
}
}
Person.java
package manyToMany.simple;
import java.util.HashSet;
import java.util.Set;
public class Person
{
private long personId;
private String personName;
private Set<Language> languages = new HashSet<Language>(0);
public Person() {} //no argument constructor
public long getPersonId() {
return personId;
}
public void setPersonId(long personId) {
this.personId = personId;
}
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName;
}
public Set<Language> getLanguages() {
return languages;
}
public void setLanguages(Set<Language> languages) {
this.languages = languages;
}
}
Language.hbm.xml
<?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="manyToMany.simple.Language" table="LANGUAGE">
<id name="langId" type="long" column="LANG_ID">
<generator class="native"/>
</id>
<property name="langName" type="string" column="LANG_NAME"/>
</class>
</hibernate-mapping>
Person.hbm.xml
<?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="manyToMany.simple.Person" table="Person">
<id name="personId" type="long" column="PERSON_ID">
<generator class="native" />
</id>
<property name="personName" type="string" length="100" not-null="true" column="PERSON_NAME" />
<set name="languages" table="PERSON_LANGUAGE" cascade="all">
<key column="PERSON_ID" />
<many-to-many column="LANGUAGE_ID" class="manyToMany.simple.Language" />
</set>
</class>
</hibernate-mapping>
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.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/mydb</property>
<property name="hibernate.connection.username">root</property>
<property name="connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto">create</property>
<property name="show_sql">true</property>
<mapping resource="manyToMany/simple/Person.hbm.xml"/>
<mapping resource="manyToMany/simple/Language.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Main.java
package manyToMany.simple;
import java.util.HashSet;
import java.util.Set;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class Main
{
public static void main(String[] args)
{
Configuration config = new Configuration().configure("manyToMany\\simple\\hibernate.cfg.xml");
SessionFactory myFactory = config.buildSessionFactory();
Session session = myFactory.openSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
Set<Language> languages = new HashSet<Language>();
languages.add(new Language("English"));
languages.add(new Language("Hindi"));
Person person = new Person();
person.setPersonName("Hemant Kumar");
person.setLanguages(languages);
session.save(person);
transaction.commit();
}
catch(HibernateException e) {
transaction.rollback();
e.printStackTrace();
}
finally {
session.close();
}
}
}


Comments
Post a Comment