More Related Content
Similar to Hibernate Inheritenc Mapping (20)
Hibernate Inheritenc Mapping
- 1. Copyright © 2010 Purple Desk All Rights Reserved. PurpleDesk.and its logo are Trademarks of Purple Desk.www.javafasttrack.com
Java Fast Track
www.javafasttrack.com
Inheritence Mapping
- 2. Copyright © 2010 Purple Desk All Rights Reserved. www.javafasttrack.com 2
public class TbPersonDescr {
// Fields
private Short id;
private String name;
private String address;
private String discriminator;
}
public class Student extends
TbPersonDescr{
private String rollNo;
public class Employee extends
TbPersonDescr {
private String empNo;
- 3. Copyright © 2010 Purple Desk All Rights Reserved. www.javafasttrack.com
1 Table per hierarchy(using
Discriminator)
CREATE TABLE TB_PERSON_DESCR (
ID SMALLINT NOT NULL,
NAME VARCHAR ( 50 ) ,
ROLL_NO CHAR ( 10 ) ,
EMP_NO VARCHAR ( 50 ),
ADDRESS VARCHAR ( 50 ) ,
DISCRIMINATOR CHAR ( 5 ) ,
PRIMARY KEY(ID)
)
;
WS:hibernatedemo
Proj:oct9inheritencedesc
DB:jftsampledb
3
- 4. Copyright © 2010 Purple Desk All Rights Reserved. www.javafasttrack.com
Step1:Create the table
Step2:Create a project,add hibernate capabilities
end up with a sessionfactory & hibernate.cfg.xml
step3:
POJO classes ,Person(Super),Employee ,Student
step4:Code the mapping file
hibernate.cfg.xml
<mapping resource="com/jft/demo/TbPersonDescr.hbm.xml" />
Write a Test Program & test 4
- 5. Copyright © 2010 Purple Desk All Rights Reserved. www.javafasttrack.com
<hibernate-mapping>
<class name="com.jft.demo.TbPersonDescr" table="tb_person_descr"
catalog="jftsampledb">
<id name="id" type="java.lang.Short">
<column name="ID" />
<generator class="assigned" />
</id>
<discriminator column="DISCRIMINATOR"></discriminator>
<property name="name" type="java.lang.String">
<column name="NAME" length="50" not-null="false" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" length="50" not-null="false" />
</property>
<subclass name="com.jft.demo.Student" discriminator-value="STUD">
<property name="rollNo" type="java.lang.String">
<column name="ROLL_NO" length="10" not-null="false" />
</property>
</subclass>
<subclass name="com.jft.demo.Employee" discriminator-value="EMPL">
<property name="empNo" type="java.lang.String">
<column name="EMP_NO" length="50" not-null="false"/>
</property>
</subclass>
</class>
</hibernate-mapping> 5
- 6. Copyright © 2010 Purple Desk All Rights Reserved. www.javafasttrack.com
Session sess = HibernateSessionFactory.getSession();
sess.beginTransaction();
Student stu = new Student();
stu.setId(new Short("3"));
stu.setName("Jimmy");
stu.setRollNo("S002");
stu.setAddress("BTM Layout");
sess.save(stu);
Employee emp = new Employee();
emp.setId(new Short("4"));
emp.setEmpNo("E002");
emp.setName("Peter");
emp.setAddress("Jaya Nagar");
sess.save(emp);
sess.getTransaction().commit();
6
- 7. Copyright © 2010 Purple Desk All Rights Reserved. www.javafasttrack.com
3 Table (Table per class)
CREATE TABLE TB_PERSON (
ID SMALLINT NOT NULL,
NAME VARCHAR ( 50 ) ,
ADDRESS VARCHAR ( 50 ) ,
PRIMARY KEY(ID)
)
;
CREATE TABLE TB_EMPLOYEE (
ID SMALLINT NOT NULL,
EMP_NO VARCHAR ( 50 ),
PRIMARY KEY(ID)
)
;
CREATE TABLE TB_STUDENT (
ID SMALLINT NOT NULL,
ROLL_NO CHAR ( 10 ) ,
PRIMARY KEY(ID)
)
;
Project oct9inheritence3tbl
7
- 8. Copyright © 2010 Purple Desk All Rights Reserved. www.javafasttrack.com
<hibernate-mapping>
<class name="com.jft.demo.TbPerson" table="tb_person"
catalog="jftsampledb">
<id name="id" type="java.lang.Short">
<column name="ID" />
<generator class="assigned" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="50" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" length="50" />
</property>
<joined-subclass name="com.jft.demo.TbEmployee" table="TB_EMPLOYEE">
<key column="ID"></key>
<property name="empNo" type="java.lang.String"
column="EMP_NO"></property>
</joined-subclass>
<joined-subclass name="com.jft.demo.TbStudent" table="TB_STUDENT">
<key column="ID"></key>
<property name="rollNo" type="java.lang.String"
column="ROLL_NO"></property>
</joined-subclass>
</class>
</hibernate-mapping>
8
- 9. Copyright © 2010 Purple Desk All Rights Reserved. www.javafasttrack.com
Test Program
TbEmployee emp = new TbEmployee();
emp.setEmpNo("E001");
emp.setId(new Short("1"));
emp.setName("Allan");
emp.setAddress("Jaya Nagar");
TbStudent stu = new TbStudent();
stu.setId(new Short("2"));
stu.setName("Johny");
stu.setRollNo("S001");
stu.setAddress("Blore");
Session sess = HibernateSessionFactory.getSession();
sess.beginTransaction();
sess.save(stu);
9
- 10. Copyright © 2010 Purple Desk All Rights Reserved. www.javafasttrack.com
2 Table(Table-Only for SubClass)
CREATE TABLE TB_EMPLOYEE_SUBCLS (
ID SMALLINT NOT NULL,
EMP_NO VARCHAR ( 50 ),
NAME VARCHAR ( 50 ) ,
ADDRESS VARCHAR ( 50 ) ,
PRIMARY KEY(ID)
);
CREATE TABLE TB_STUDENT_SUBCLS (
ID SMALLINT NOT NULL,
ROLL_NO CHAR ( 10 ) ,
NAME VARCHAR ( 50 ) ,
ADDRESS VARCHAR ( 50 ) ,
PRIMARY KEY(ID)
)
;
WS:hibernatedemo
Proj:oct9inheritencedesc
DB:jftsampledb
10
- 11. Copyright © 2010 Purple Desk All Rights Reserved. www.javafasttrack.com
<hibernate-mapping>
<class name="com.jft.demo.TbPerson" catalog="jftsampledb">
<id name="id" type="java.lang.Short">
<column name="ID" />
<generator class="assigned" />
</id>
<union-subclass name="com.jft.demo.TbEmployee" table="TB_EMPLOYEE_SUBCLS">
<property name="empNo" type="java.lang.String" column="EMP_NO"></property>
<property name="name" type="java.lang.String">
<column name="NAME" length="50" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" length="50" />
</property>
</union-subclass>
<union-subclass name="com.jft.demo.TbStudent" table="TB_STUDENT_SUBCLS">
<property name="rollNo" type="java.lang.String" column="ROLL_NO"></property>
<property name="name" type="java.lang.String">
<column name="NAME" length="50" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" length="50" />
</property>
</union-subclass>
</class>
</hibernate-mapping>
11
- 12. Copyright © 2010 Purple Desk All Rights Reserved. www.javafasttrack.com
Test Program
12
- 13. Copyright © 2010 Purple Desk All Rights Reserved. www.javafasttrack.com
Polymorphism
TbPerson p1 = (TbPerson)sess.get(TbEmployee.class,new Short("1") );
if (p1 instanceof TbEmployee ) {
TbEmployee e1 = (TbEmployee)p1;
System.out.println(e1.getEmpNo());
}
13
- 14. Copyright © 2010 Purple Desk All Rights Reserved. www.javafasttrack.com 14
Questions and Comments