Saturday, March 5, 2011

HT Tables in Hibernate

HT table will be created automatically by Hibernate whenever bulk queries are executed. It is a temp table to stores primary key values used to delete all the child tables before deleting parent table record.

Example:

Parent Object: Base

Child Object: Child

if bulk query for Base

delete from Base id in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)

Then hibernate will automatically delete all the child tables. But note if child object has any reference of other object and set, those has to be deleted before calling bulk query. Because hibernate will just delete only child object not reference objects.

deleteQuery : delete from Base as b where b.id in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)

1299354046338|15|0|statement||declare global temporary table session.HT_Base (ID integer not null) not logged

Hibernate: insert into session.HT_Base select base0_.ID as ID from TESTDBO.Base base0_ where ID in (1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20)

1299354046354|16|0|statement|insert into session.HT_Base select base0_.ID as ID from TESTDBO.Base base0_ where ID in (1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20)|insert into session.HT_Base select base0_.ID as ID from TESTDBO.Base base0_ where ID in (1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 , 20)

Hibernate: delete from TESTDBO.CHILD where (ID) IN (select ID from session.HT_Base)

1299354046354|0|0|statement|delete from TESTDBO.CHILD where (ID) IN (select ID from session.HT_Base)|delete from TESTDBO.CHILD where (ID) IN (select ID from session.HT_Base)

Hibernate: delete from TESTDBO.Base where (ID) IN (select ID from session.HT_Base)

1299354046354|0|0|statement|delete from TESTDBO.Base where (ID) IN (select ID from session.HT_Base)|delete from TESTDBO.Base where (ID) IN (select ID from session.HT_Base)

1299354046354|0|0|statement||drop table session.HT_Base

results : 20

1299354046354|0|0|commit||

No comments:

Post a Comment