Java/J2EE Programming Training
Mapping Classes With Relational Databases
Page 2Classification: Restricted
Agenda
• Mapping Properties
• Entity Type Vs ValueTypes
• Mapping Collections
• Relationship in hibernate
• One-To-One
• One-To-One Mapping
• One-To-Many
• Many-to-Many
Page 3Classification: Restricted
Mapping Properties
Employee
int employee_id;
String first_name
String last_name
Employee
employee_id integer primary key
first_name varchar2( 200 )
last_name varchar2( 200)
EMPLOYEES
employee_id first_name last_name
100 John Mike
101 Fay Lorentz
Page 4Classification: Restricted
Hibernate Types
apping type Java type ANSI SQL Type
integer int or java.lang.Integer INTEGER
long long or java.lang.Long BIGINT
short short or java.lang.Short SMALLINT
float float or java.lang.Float FLOAT
double double or java.lang.Double DOUBLE
big_decimal java.math.BigDecimal NUMERIC
character java.lang.String CHAR(1)
string java.lang.String VARCHAR
byte byte or java.lang.Byte TINYINT
boolean boolean or java.lang.Boolean BIT
yes/no boolean or java.lang.Boolean CHAR(1) ('Y' or 'N')
true/false boolean or java.lang.Boolean CHAR(1) ('T' or 'F')
Page 5Classification: Restricted
Entity Type Vs ValueTypes
• Entity Type
• is an independent entity and has its own identity.
• has primary key
• can be referenced by other entity
• Value type
• does not have its entity depends on another object for its existence
Employee
int employee_id
String first_name
String last_name
Address
String street;
String city;
Page 6Classification: Restricted
<class table=“EMPLOYEE”>
<id name=“employee_id” type=“integer”>
<column name=“employee_id”/>
<generator class=“assigned”/>
</id>
<property name=“first_name”/>
<property name=“last_name”/>
<component name=“address” class=“Address”>
<property name=“street”/>
<property name=“city”/>
</componenet>Employee
int employee_id
String first_name
String last_name
Address address
Address
String street;
String city;
Page 7Classification: Restricted
Mapping Collections
• <Set>
• <List>
• <bag>
• <map>
Page 8Classification: Restricted
LIST
Employee
int employee_id
String first_name
String last_name
List<Skills> skillSet
Skills
int skill_id
String skill_name
String level_name1
*
Page 9Classification: Restricted
Employee
int employee_id
String first_name
String last_name
Skills
int skill_id
String skill_name
String level_name1
*
<class table=“Employee”>
<id name=“employee_id”>
<key column=“employee_id”/>
<generator class=“assigned”/>
</id>
<property name=“first_name”/>
<property name=“last_name”/>
<set name=“skills cascade=“all”>
<key column=“skill_id”/>
<one-to-many class=“Skills”/>
<class name=“Skills” table=“SKILLS”>
<id name=“skill_id”>
<column name=“skill_id”/>
<generator class=“assigned”/>
</id>
<property name=“skill_name”/>
<property name=“level_name”/>
</class>
</class>
SET
Page 10Classification: Restricted
Employee
int employee_id
String first_name
String last_name
Skills
int skill_id
String skill_name
String level_name1
*
<class table=“Employee”>
<id name=“employee_id”>
<key column=“employee_id”/>
<generator class=“assigned”/>
</id>
<property name=“first_name”/>
<property name=“last_name”/>
<list name=“skills cascade=“all”>
<key column=“skill_id”/>
<list-index column=“index_position”/>
<one-to-many class=“Skills”/>
<class name=“Skills” table=“SKILLS”>
<id name=“skill_id”>
<column name=“skill_id”/>
<generator class=“assigned”/>
</id>
<property name=“skill_name”/>
<property name=“level_name”/>
</class>
</class>
LIST
Page 11Classification: Restricted
employee_id first_name last_name
employee_id skill_id last_name
Page 12Classification: Restricted
Relationship in hibernate
• One-to-one
• one-to-many
• many-to-many
Page 13Classification: Restricted
One-To-One
package model;
public class Employee {
private int employee_id;
private String first_name;
private String last_name;
Department department;
//setters and getters
}
public class Department {
private int department_id;
private String department_name;
private int location_id;
private Employee employee;
//setters and getters
}
Page 14Classification: Restricted
One-To-One Mapping
<id name="employee_id" type="integer">
<column name="EMPLOYEE_ID"/>
<generator class="native"/>
</id>
<property name="first_name" type="string">
<column name="FIRST_NAME" not-null="true"/>
</property>
<property name="last_name" type="string">
<column name="LAST_NAME" not-null="false"/>
</property>
<one-to-one name="department" cascade="all"
class="model.Department"/>
• emp.hbm.xml
• department.hbm.xml
<id name="department_id" type="integer">
<column name="DEPARTMENT_ID"/>
<generator class="foreign">
<param name="property">employee</param>
</generator>
</id>
<one-to-one name="employee"
class="model.Employee" constrained="true"/>
<property name="department_name"
type="string">
<column name="DEPARTMENT_NAME"/>
</property>
Page 15Classification: Restricted
One-To-Many
package model;
public class Employee {
private int employee_id;
private String first_name;
private String last_name;
Set <Skills> skills;
//setters and getters
}
package model;
public class Skills{
private int skill_id
private String skill_name;
private String level_name
//setters and getters
}
Page 16Classification: Restricted
One-To-Many
employee_id first_name last_name
100 John Mike
employee_id skill_id skill_name level_name
100 1 Java Expert
100 2 C# Intermediate
100 3 WCD Expert
Page 17Classification: Restricted
One-To-Many
<class table=“Employee”>
<id name=“employee_id”>
<key column=“employee_id”/>
<generator class=“assigned”/>
</id>
<property name=“first_name”/>
<property name=“last_name”/>
<list name=“skills cascade=“all”>
<key column=“skill_id”/>
<list-index column=“index_position”/>
<one-to-many class=“Skills”/>
<class name=“Skills” table=“SKILLS”>
<id name=“skill_id”>
<column name=“skill_id”/>
<generator class=“assigned”/>
</id>
<property name=“skill_name”/>
<property name=“level_name”/>
</class>
</class>
Employee
int employee_id
String first_name
String last_name
Skills
int skill_id
String skill_name
String level_name
Page 18Classification: Restricted
Many-to-Many
Student
Student_id int
primary key
first_name
varchar2( 20 )
Course
course_id int primary key
cours_name varchar2( 20 )
duration int
Student_COURSE
student_id int
course_id int
Page 19Classification: Restricted
Many-To-Many
Student_id Student_name
100 John
course_id course_name
C1 Java
c2 C#
c3 HTML
student_id course_id
100 c1
100 c2
100 c3
Page 20Classification: Restricted
<id name="student_id" type="integer">
<column name="STUDENT_ID"/>
<generator class="native"/>
</id>
<property name="first_name" type="string">
<column name="FIRST_NAME"/>
</property>
<set name="courses" cascade="all"
table="STUDENT_COURSE">
<key column="STUDENT_ID"/>
<many-to-many class="model.Courses"
column="course_id"/>
</set>
• student.hbm.xml • courses.hbm.xml
<id name="course_id" type="integer">
<column name="COURSE_ID" />
<generator class="native"/>
</id>
<property name="courseName"
type="string">
<column name="COURSE_NAME"/>
</property>
<property name="duration" type="integer">
<column name="DURATION"/>
</property>
Page 21Classification: Restricted
Employees
int employee_id
String first_name
String last_name
Address
String city
String street
Employmet_History
int employee_id
Date start_date
Date end_Date
String jobRole
Page 22Classification: Restricted
Thank You

Mapping Classes with Relational Databases

  • 1.
    Java/J2EE Programming Training MappingClasses With Relational Databases
  • 2.
    Page 2Classification: Restricted Agenda •Mapping Properties • Entity Type Vs ValueTypes • Mapping Collections • Relationship in hibernate • One-To-One • One-To-One Mapping • One-To-Many • Many-to-Many
  • 3.
    Page 3Classification: Restricted MappingProperties Employee int employee_id; String first_name String last_name Employee employee_id integer primary key first_name varchar2( 200 ) last_name varchar2( 200) EMPLOYEES employee_id first_name last_name 100 John Mike 101 Fay Lorentz
  • 4.
    Page 4Classification: Restricted HibernateTypes apping type Java type ANSI SQL Type integer int or java.lang.Integer INTEGER long long or java.lang.Long BIGINT short short or java.lang.Short SMALLINT float float or java.lang.Float FLOAT double double or java.lang.Double DOUBLE big_decimal java.math.BigDecimal NUMERIC character java.lang.String CHAR(1) string java.lang.String VARCHAR byte byte or java.lang.Byte TINYINT boolean boolean or java.lang.Boolean BIT yes/no boolean or java.lang.Boolean CHAR(1) ('Y' or 'N') true/false boolean or java.lang.Boolean CHAR(1) ('T' or 'F')
  • 5.
    Page 5Classification: Restricted EntityType Vs ValueTypes • Entity Type • is an independent entity and has its own identity. • has primary key • can be referenced by other entity • Value type • does not have its entity depends on another object for its existence Employee int employee_id String first_name String last_name Address String street; String city;
  • 6.
    Page 6Classification: Restricted <classtable=“EMPLOYEE”> <id name=“employee_id” type=“integer”> <column name=“employee_id”/> <generator class=“assigned”/> </id> <property name=“first_name”/> <property name=“last_name”/> <component name=“address” class=“Address”> <property name=“street”/> <property name=“city”/> </componenet>Employee int employee_id String first_name String last_name Address address Address String street; String city;
  • 7.
    Page 7Classification: Restricted MappingCollections • <Set> • <List> • <bag> • <map>
  • 8.
    Page 8Classification: Restricted LIST Employee intemployee_id String first_name String last_name List<Skills> skillSet Skills int skill_id String skill_name String level_name1 *
  • 9.
    Page 9Classification: Restricted Employee intemployee_id String first_name String last_name Skills int skill_id String skill_name String level_name1 * <class table=“Employee”> <id name=“employee_id”> <key column=“employee_id”/> <generator class=“assigned”/> </id> <property name=“first_name”/> <property name=“last_name”/> <set name=“skills cascade=“all”> <key column=“skill_id”/> <one-to-many class=“Skills”/> <class name=“Skills” table=“SKILLS”> <id name=“skill_id”> <column name=“skill_id”/> <generator class=“assigned”/> </id> <property name=“skill_name”/> <property name=“level_name”/> </class> </class> SET
  • 10.
    Page 10Classification: Restricted Employee intemployee_id String first_name String last_name Skills int skill_id String skill_name String level_name1 * <class table=“Employee”> <id name=“employee_id”> <key column=“employee_id”/> <generator class=“assigned”/> </id> <property name=“first_name”/> <property name=“last_name”/> <list name=“skills cascade=“all”> <key column=“skill_id”/> <list-index column=“index_position”/> <one-to-many class=“Skills”/> <class name=“Skills” table=“SKILLS”> <id name=“skill_id”> <column name=“skill_id”/> <generator class=“assigned”/> </id> <property name=“skill_name”/> <property name=“level_name”/> </class> </class> LIST
  • 11.
    Page 11Classification: Restricted employee_idfirst_name last_name employee_id skill_id last_name
  • 12.
    Page 12Classification: Restricted Relationshipin hibernate • One-to-one • one-to-many • many-to-many
  • 13.
    Page 13Classification: Restricted One-To-One packagemodel; public class Employee { private int employee_id; private String first_name; private String last_name; Department department; //setters and getters } public class Department { private int department_id; private String department_name; private int location_id; private Employee employee; //setters and getters }
  • 14.
    Page 14Classification: Restricted One-To-OneMapping <id name="employee_id" type="integer"> <column name="EMPLOYEE_ID"/> <generator class="native"/> </id> <property name="first_name" type="string"> <column name="FIRST_NAME" not-null="true"/> </property> <property name="last_name" type="string"> <column name="LAST_NAME" not-null="false"/> </property> <one-to-one name="department" cascade="all" class="model.Department"/> • emp.hbm.xml • department.hbm.xml <id name="department_id" type="integer"> <column name="DEPARTMENT_ID"/> <generator class="foreign"> <param name="property">employee</param> </generator> </id> <one-to-one name="employee" class="model.Employee" constrained="true"/> <property name="department_name" type="string"> <column name="DEPARTMENT_NAME"/> </property>
  • 15.
    Page 15Classification: Restricted One-To-Many packagemodel; public class Employee { private int employee_id; private String first_name; private String last_name; Set <Skills> skills; //setters and getters } package model; public class Skills{ private int skill_id private String skill_name; private String level_name //setters and getters }
  • 16.
    Page 16Classification: Restricted One-To-Many employee_idfirst_name last_name 100 John Mike employee_id skill_id skill_name level_name 100 1 Java Expert 100 2 C# Intermediate 100 3 WCD Expert
  • 17.
    Page 17Classification: Restricted One-To-Many <classtable=“Employee”> <id name=“employee_id”> <key column=“employee_id”/> <generator class=“assigned”/> </id> <property name=“first_name”/> <property name=“last_name”/> <list name=“skills cascade=“all”> <key column=“skill_id”/> <list-index column=“index_position”/> <one-to-many class=“Skills”/> <class name=“Skills” table=“SKILLS”> <id name=“skill_id”> <column name=“skill_id”/> <generator class=“assigned”/> </id> <property name=“skill_name”/> <property name=“level_name”/> </class> </class> Employee int employee_id String first_name String last_name Skills int skill_id String skill_name String level_name
  • 18.
    Page 18Classification: Restricted Many-to-Many Student Student_idint primary key first_name varchar2( 20 ) Course course_id int primary key cours_name varchar2( 20 ) duration int Student_COURSE student_id int course_id int
  • 19.
    Page 19Classification: Restricted Many-To-Many Student_idStudent_name 100 John course_id course_name C1 Java c2 C# c3 HTML student_id course_id 100 c1 100 c2 100 c3
  • 20.
    Page 20Classification: Restricted <idname="student_id" type="integer"> <column name="STUDENT_ID"/> <generator class="native"/> </id> <property name="first_name" type="string"> <column name="FIRST_NAME"/> </property> <set name="courses" cascade="all" table="STUDENT_COURSE"> <key column="STUDENT_ID"/> <many-to-many class="model.Courses" column="course_id"/> </set> • student.hbm.xml • courses.hbm.xml <id name="course_id" type="integer"> <column name="COURSE_ID" /> <generator class="native"/> </id> <property name="courseName" type="string"> <column name="COURSE_NAME"/> </property> <property name="duration" type="integer"> <column name="DURATION"/> </property>
  • 21.
    Page 21Classification: Restricted Employees intemployee_id String first_name String last_name Address String city String street Employmet_History int employee_id Date start_date Date end_Date String jobRole
  • 22.