Hibernate Complete Notes by Sekhar Sir JavabynataraJ

328
Hibernate For Evaluation Only. Copyright (c) by Foxit Software Company, 2004 - 2007 Edited by Foxit PDF Editor

description

JAVA Hibernate Complete Tutorial by Sekhar Sir

Transcript of Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Page 1: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hibernate

For Evaluation Only.Copyright (c) by Foxit Software Company, 2004 - 2007Edited by Foxit PDF Editor

Page 2: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

. -. -. pp.pp.--p.- ~ ... -. . . . ~ . - .. . -

1 Hibernate-Introduction M r.Sek11arReddy , - - -.

x.

Q) Where actually java i s used?

Q Java is used t o develop the enterprise applications

Q Enterprise means business organization

* Business organization provides servic2s

!

1 Q) What i s Enterprise Application?

* Computerizing business services , .

1 Architecture o f Enterprise Application - . -

I Controller Layer

I

Client Layer

-. Presentation I I

I 1

Layer I

+ . a < * . : " - J : I--..- - _ "

I 1 Client Layer: I

i 3 It is browser software.

1 Controller Layer:

1 P Receiving user request f rom client (calling request) I > Capturing the user provided data

P Validating the user input 1 Calls the business method t o get business services and get processed data

> Keep the processed data in memory(request/session/application scope) I > Finally forwarding the request t o VIEW. i '~

IVote: should not write business-Logic/Data-Access-Logic in the Controller Layer. Because that is not reusable

Presentation Layer: - I P Receive the control from Controller Layer

/ P Generate the output by taking the data from memory(request/session/application scope), which is

stored by controller layer

P Generated output will be given t o web-server, which intern return present the output t o browser

Business/Service Layer:

1 I

Naresh i Technologies, Opp. Satyam Theatre, Anleerpet, Hyderabad, Ph: 040-23746666, 23734842 An IS0 9001 . 2000 Certified Company

L - - - -. - - - -- - - - -. . - - - -. - - -- - - .- - - - . - - - - - - - - .- - Page 1 http://javabynataraj.blogspot.com 2

Page 3: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

. , -.-- . . . - - - L -- .- . i - -

O Receiving request from Controller Layer 1 P Contacting the Data Access Layer to get the database data

3 Implementing the business logic

3 Return the control/processed-data to Controller Layer

PersistentIData-Access Laver:

i Receiving the request from business Layer

I P Contacting database to get the database data O Return the accessed data to business Layer

I Data Laver:

1 > It is a database.

- ' Q) What are the different logics available in Enterprise Application? I

I Presentation Logic: Logic used t o present the output/input. I I Application/Controlling Logic: Logic used t o control the flow of application. I I -

1 / Business Logic: Programmatical implementation of business rules is nothing but business logic. j I

Data Access Logic: Logic used t o contact the Database. - I

Q) What are the Sun Microsystems technologies and frameworks in enterprise application development?

Controller Layer ' I Servlets I / JSF

. ' I

Presentation Layer JSP

Business Layer t

EJB2 session beans EJB3 session beans WIDB(Message Driven Beans) ' WEB-SERVICES

Data Access Layer JDBC Ejb2 entity beans Ejb3 entitys[JPA ] (java

persistence API)

I Q) What are t he non-Sun Microsystems technologies and frameworks in enterprise application 1 development?

1 1 Controller Layer struts Spring Web MVC

' I Wicket --

Tapestry ' I Flash

I I 1 ,

1 Objective of Hibernate: Developing Data access layer of an Enterprise application 1 I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

I I

Presentation Layer

HTM L Velocity Freemarker Flex

~ u s i n e k La-yer

Spring AOP Spring JEE WEB-SERVICES

L--. An IS0 9001 : 2000 Certified Company

-. .- -- - - .. -. - - - - - - - - -. . - - Page 2 -

1

Data Access Layer

Hibernate lbatis Toplink JDO Spring DAO Spring ORM

http://javabynataraj.blogspot.com 3

Page 4: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

, Hibernate-In troduction

' Q) What is persistence in a java based enterprise application?

! I > The process of storing enterprise data in to relational database is Iknown as persistence

Q) What is the traditional style o f achieving persistence in java based enterprise application?

I > Sending SQL statements t o the Database using JDBC API I

I

I ' Q.) What are the iimitations o f the traditional approach? I

'i Application portability to the Database is lost (Vendor lock: diff SQL statement for the db's) 1

3 Mismatches between Object oriented data representation and relat~onal data representation are not I

I properly addressed I I

3 Requires the extensive knowledge of DB

I P Manual operations on Resultset I

7

I I

v For every problem while commun~cating with the database (us~ng JDBC), i t throws same I -

I exception(java.sql.SQLException). As SQLException is checked exception, so we must write code in try- ;

I catch block or throws has t o be specified. , I I

I

> Need t o implement caching manually i I

I 3 In the Enterprise applications, the data flow with in an application from class to class will be in the 1

form of objects, but while storing data finally in a database using JDBC then that object will be I

converted into text. Because JDBC doesn't transfer objects directly. I 'I

1 4.) wha t is an alternative for traditional approach? ! / > ORM (Object Relational mapping)

I > It i s technique of mapping objected oriented data to that of relational data

> Through ORM technique persistence services (database) are provided t o business layer in pure object oriented manner by overcoming all limitations of the traditional approach I

I Q.) What is Hibernate?

& Hibernate is an ORM implementation

> Hibernate is an Open source

i ! b Hibernate is a framework

I > Hibernate invented by Gavin King. He also invented JBoss server and JPA

- Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842

An I S 0 9001 : 2000 Certified Company - -- I

Page 3 http://javabynataraj.blogspot.com 4

Page 5: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

~ ~ ~ ~ ~~ ~. ~-~ . ~ ~ ~~ .~~ ~ .

Hibernate-In troduction - - - - -. - - - ._ -_.. "..._._.. ._Ul-- -

Mr.SekharReddy . .-. - ,,?--,.->>"<

3 Hibernate is a non-invasive framework, means it won't forces the programmers t o extend/implement arly class/interface, and in hibernate we have all POJO classes so its light weight

k Hibernate can run w i th or wi thout server, I mean i t will suitable for all types of applications (desktop or web applications)

Q.) What is a framework?

A frameworl< is reusable semi finished application that can be customized to develop a specific application.

Q.)What are the features of hibernate?

1 9 Hibernate persists java objects into database (Instead of primitives)

9 It provides Database services in Database vendor independent Manner, so that java applications

I I become portable across the multiple databases I

i 9 Hibernate generates efficient queries for java application to communicate wi th Database i I ,

9 I t provides fine-grained exception handling mechanism. In hibernate we only have Un-checked

I exceptions, so no need t o write try, catch, or no need to write throws (In hibernate we have

. - the translator which converts checked t o Un-checked)

1 3 it supports synchronization between in-memory java objects and relational records I > Hibernate provides implicit connection pooling mechanism ! I j

Hibernate supports Inheritance, Associations, Collections

I 3 Hibernate supports a special query language(HQL) which is Database vendor independent

1 9 Hibernate has capability t o generate primary keys automatically while we are storing the records into / database i

1 > Hibernate addresses the mismatches between java and database 1 1 > Hibernate provides automatic change detection I I

I 9 Hibernate often reduces the amount o f code needed t o be written, so i t lrnproves the productivity I I

i > Database objects (tables, views, procedures, cursors, functions ... etc) name changes will not affect

I I

I hibernate code i

I > Supports over 30 dialects

Hibernate provides caching mechanism for efficient data retrieval

I - - > Lazy loading concept is also included in hibernate so you can easily load objects on start up t ime

1 > Getting pagination in hibernate is quite simple.

( > Hibernate Supports automatic versioning o f rows i I

I I

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 i An IS0 9001 : 2000 Certified Company I

1 - - -. . . - -. - -. I Page 4 http://javabynataraj.blogspot.com 5

Page 6: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hibernate-Introduction - --- -- McSekharReddy -.-

I - - i i 3 Hibernate provides transactional capabilities that can work with both stand-alone or java Transaction 1 I

1 API (JTA) imple~nentations ... etc . . , I

I i Hibernate supports annotations, apart from X M L I

I I , Q.)What are the disadvantages of hibernate? 1 I I 3 Since hibernate generates lots o f SQL statements at runtime so it is slower than pure JDBC

i \i. Hibernate is not much flexible in case of composite mapping. This is not disadvantage since

1 understanding of conlposite mapping is complex

/ P Hibernate does not support some type of queries which are supported by JDBC

1 9 Boilerplate code issue, actually we need t o write same code in several files in the same application, I

', but spring eliminated this I

I 1

1 Hibernate Architecture 1

java application n A \L'

Hibernate API

+r--- - -- I--- Hi l re ina le E ngi n e .- configuration file

\

,I D E C

'./

Data base 1 Java Application makes use of hibernate API methods calls t o inform the persistent needs t o I-, hibernate. Then Hibernate engine generate .lDBC code that corresponds t o the underlying DB by using 1

l- mapping f i le and configuration f i le information. I

I

I I r. We can also find the architecture diagrams as follows ...

i I

i Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 1 ( 1

L. - _ _ - __-- An IS0 9001 : 2000 Certified Company I

.-- - . - - - Page 5 http://javabynataraj.blogspot.com 6

Page 7: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

. . . . . . . . . . . . . - . . . . . . . .

JTA J N D l . ~ f ...r...*.-...... &. .>** ..&...".., ."*"? ... * ..-.-... '*..." - . . . . . . . . . . . . . . . . .

I

I -- I I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 i

An IS0 9001 : 2000 Certified Com~anv I Page 6 http://javabynataraj.blogspot.com 7

Page 8: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

2 . / 3 . < c l a s s name="Entl ty c l a s s namev t a b l e = " t a b l e name I n d a t & a s e l ' >

1 4 . < l d name="ld v a r l a b l e name" column="prlmary column name l n d a t a b a s e " /> 1 5 . < p r o p e r t y name="var i ab le l name1' column="column name l n d a t a b a s e " /> 1 6 . < p r o p e r t y name=I1varlable2 name" column="column name l n d a t a b a s e " /> ' 7 . < / c l a s s > I 8 . , 9 . </hibernate-rnapplng>

Syntax Of Mapping Annotations: 1. @ E n t i t y 2 . @Table(name = " t a b l e name i n d a t a b a s e " ) 3 . p u b l i c class EntityName {

4 . @ Id 5 . @Column(name = "pr imary column name i n d a t a b a s e " ) 6 . p r i v a t e i n t idVariableName; 7 . 8 . @Column (name = "column name i n d a t a b a s e " )

9 . p r i v a t e S t r i n g variableName1; 1 0 . @Column(nams = "column name i n d a t a b a s e " )

11. p r i v a t e S t r i n g variableName2; 1 2 . / / setters & g e t t e r s 13. 1

Q.) What i s hibernate configuration file?

i It is an XML file in which database connection details (username, password, url, driver class name) and , Hibernate Properties(dialect, show-sql, second-level-cache ... etc) and Mapping file name(s) are t

specified to the hibernate

I > Hibernate uses this file t o establish connection t o the particular database server I i 1 Z Standard for this file is <hibernate.cfg.xml>

3 We must create one configuration file for each database we are going t o use, suppose if we want to 1 ij

connect w ~ t h 2 databases, like Oracle, MySql, then we must create 2 configuration files. I No. of databases we are using = That many number of configuration files I

I

I > We can write this configuration in 2 ways ...

o XML file

o Properties file(o1d style)

( > We don't have annotations t o write configuration details. Actually in hibernate l.x, 2.x we defined this j. , \

1 configuration by using .properties file, but from 3.x XML came into picture. XNlL files are I

I always recommended t o use.

Syntax Of Configuration xml: 1. < h i b e r n a t e - c o n f i g u r a t i o n > 2 . < s e s s i o n - f a c t o r y > 3. 4 . <!- - R e l a t e d t o t h e c o n n e c t i o n START -->

I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

- ~- - An IS0 9001 : 2000 Certified Company

~Tge8- http://javabynataraj.blogspot.com 8

Page 9: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

I Q.) What i s hibernate mapping file? ' 3 In this f ~ l e hibernate application developer specify the mapping from entity class name to table name i 1 and entity properties names to table column names. i.e. mapping object oriented data to relational

data is done in this f ~ l e I i Z Standard name for this file is <domain-object-name.hbm.xml> I

I I r In general, for each domain object we create one mapping file

Number of Entity classes = that many number of mapping xmls

I Z Mapping can be done using annotations also. If we use annotations for mapping then we no need to I write mapping file.

I

Z From hibernate 3.x version on wards it provides support for annotation, So mapping can be done in two ways

o X M L o Annotations

Syntax Of Mapping xml: 1 1. <hibernate-napping>

i

I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An IS0 9001 : 2000 Certified Company

http://javabynataraj.blogspot.com 9

Page 10: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

5. <property name="connection.driver~~1a~s'~>Driver Class Name </property> 6 . <property name="connection.url">URL </property> 7 . <property name="connection.user">user </property> 8. <property name="connection.password~l>pa~~~~rd</property~ 9. < ! - - Related to the connection END --> 10. 11. < ! - - Related to hibernate properties START --> 12 . <property name="show-sqll'> true/false</property> 13 . <property name="dialettt>Database dialet class</property>

14 . <property name="hbm2ddl. auto ">create/update or what ever</property> 15. < ! - - Related to hibernate properties END-->

16. 17. < ! - - Related to mapping START-->

18. <mapping resource="hbm file 1 name .xml" / > 19. <mapping resource="hbm file 2 name .xml" / > 20. < ! - - Related to the mapping END --> 21. 22 . </session-factory> 23 . </hibernate-conf iguration>

I ' Q.) What are the Simple Hibernate Application Requirements? I -.

Setting hibernate environment I I

I

1 1 Entity class 2 . Mapping file(Required if you are not using annotations)

i 3. Configuration file

1 i ; To work with hibernate framework we need to add .jar(s) files provided by that framework to '

I

I j our java application.

4. DAO class (Where we write our logic to work with database)

( 1 i No framework-is installable software, it means we doesn't contain any setup.exe

I 'i When we download any framework, we will get a 'zip' file and we need to unzip it, to get the required 1. i

jar files, actually all frameworks will follow same common principles like ... 1 j !

o Framework will be in the form of a-set of jar files, where one jar file acts as main (We can call ! this file as core) and remaining will acts as dependent jar files.

1 I o Each Framework contain at least one configuration xml file, but multiple configuration files also i allowed.

> We can download hibernate jar files from the following links. Based on requirement we can download the corresponding version.

o For version 2.x (http://sourceforge.net/projects/hibernate/files/hibernate2/) o For version 3.x (http://sourceforge.net/proiects/hibernate/f1les/hibernate3/) o For version 4.x (http://sourceforge.net/projects/hibernate/f1Ies/hibernate4/)

> While dowr~loading select .zip file for windows environment, select .tar flle for unix environment. 1 j

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 An IS0 9001 : 2000 Certified Company

1 : I

- --- Page 9

1 http://javabynataraj.blogspot.com 10

Page 11: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

- - Hibernate-Introduction

After downloading the zip file, unzip it and we can find the required jars in the extracted folder. If we consider 4.x version, we need the following jars to work with hibernate application.

NOTE: Along with the hibernate jars we must include one more jar file, which is nothing but related to our database, this

, is depending on your database. For example, i f we are working with Oracle we need to add ojdbc6.jar.

4.) W h a t are t h e Steps t o develop h ibernate applications? -

1 ' Step 1: Develop persistent/domain/entity class for each table of the relational mode l -

Step 2: For each enti ty develop a mapping file

i Step 3: Develop the configuration fi le

I

Step 4: Add hibernate f ramework jar files in the classpath 1

/ Step 5: Make use of hibernate API and perform persistent operations

4.) H o w t o M a k e use o f hibernate API t o pe r fo rm persistent'operations?

I STEP1: Create Configuration object

Configuration configuration = new Configuration();

STEP2: Read configuration f ~ l e along w i t h mapping files using configure() rnethod o f Configuration Object I

configuration.configure();

1 S'rEP3: Build a SessionFactory f rom Configuration

I SessionFactory factory = configuration.bhildSessionFactory();

!- STEP4: Get Session f r o m SessionFactory object

Session session = factory.openSession();

I STEP5: Perform persistence operations I

I

1 Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An IS0 9001 : 2000 Certified Company

- -- -- Page 10- http://javabynataraj.blogspot.com 11

Page 12: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hibernate-Introduction

The Session interface provides methods to perforni CRUD (Create Read Update Delete) operations o n i ,.. -

I the instances of mapped entity classes. Perform transactions if require while performing DML: : I

operations. Session interface methods are ...

I

L; S s;, 0 1-1 2: a:..'* i :3 : - l!l.:.el-tincl okjelzt .8 ' intl:~ database . ! : - . .

ses$;it:~n 1.19date1:s: - LJ:.~.cl~!it-~ci ob jec t 's it1 the ~ : la tabase I

, STEP6: Close the session

I Final .flow will be ...

Sa:ssiul-1

TI-ansaction

Close Statet?lents

~a resh i Technologies, Opp. Satyarn Theatre, Arneerpet, Hyderabad, Ph: 040-23746666, 23734842 An I S 0 9001 : 2000 Certified Company

-- . .

Page 11 http://javabynataraj.blogspot.com 12

Page 13: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hibernate-CRUD Application - By Mr. SeltharRedcly - -. . - . ' -A

4.) Develop Hibernate application, i n wh ich w e can per fo rm account creation, retrieve, update and delete?

SQL Script CREATE TABLE ACCOLIkIT ( ACCNO NUMBER (5 ) IUOT NULL, NAME VARCHAR2 (20) NOT NULL, BA L NUMBER(8,2) NOT NULL, CREATION-DT DATE NOT NULL, PRIMARY KEY ( ACCNO )

1

i ACCOUNT TABLE

E: :-'..L CREAT IOI I-DT

fiP541.07 J ':74>:7illi J . - . . - . ! 91:1U02 yellari.diis; E:i;5d$.69 5;'15;21:112

gDlli13 clierr-,! - - ac(-iS?.?6 5,,'2!2l:l12 I

I hibernate.cfg.xml

1 1. <?xml version='l.O1 encoding='UTF-8'?> 2 . <!DOCTYPE hibernate-configuration PUBLIC

I 3. "-//Hibernate/Hibernate Configuration DTD 3.0//ENM

4 . "http: />hibernate. sourceforge. net/hibernate-configuration-3.0. dtdIT>

- -- - - I I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842

I I

I

An IS0 9001 : 2000 Certified Company - - - - -

p a s - http://javabynataraj.blogspot.com 13

Page 14: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

, . - ~ . . - -~ ~ - .. . .. - - ~ ~.~ ~ ~~ ~ . . . ~~ I -\

: Hibernate-CRUD -- Application .. .. -. . . -. . . . . ------. - ,-&c3 . "< .

By Mr. SekharReddy - ; -- - - .- .. .. .. . -. . - - . . . - - - - - .- -. -. - - -

.yr*r- -.,..YLTu_ ,- - -- . I .% ,.: j 1 4 . < / p r o p e r t y >

! 15. ,,./ :, .,.- ., . . ~ " -. .. ,. . - y ,;...!-:-- -.-.!!~;.c:ion. u s e r n a m e " > s y s t i : n ~ < : p r o p ~ r ~ ~ - > j 1 6 . <proper t ; . ::!I:!?-" ::ci!!.!?c:?.on. pas s i io rd"> t iqe r< ip rope r t ; . : -

1 1 7 . <prop?rt:;: n :;:I.-2-"<::.::!?i:?ction. d r i v e r - c l a s s " > j 18. G : ?z.: .e . : .;:::. : ! r i v e r . O r a c l s D r i ~ r e ~

I 1 9 . ',i ~ J L ~ . , , ~ : i;;

; 2 0 . - .>,%73, - ;- . . - - -. t c , - . - - . .. : . ! i ec t ion . pool s i z e n > l 5.. , i-,rpei:t;:: -

1 2 1 . ;Proper ::..,. ,; -.., ..= "::.:I::.: -. s c l l " > t r u e < / p r o p e r t . -

2 2 . < ,-,= .- - . . ,, - ;,. -: !' .- ,. ..,?-I,-! 1 2:. .. - '. . . . . . .. . . . .. ...< . autoU>update</pr-i>;. .sr~;:;: , i 2 3 . <proper t , - r~,-.;-e="us.= - - s q l - c o r n m e n t s " > t r ~ e < / p r ~ ~ ~ p e r t ~ . ~ > 1 2 4 . <proper t ; - l > , : : > ~ = ~ !~..-.n-.t I:...-. - sqll '>true</proper-c; . : .

i 2 5 . <~nappLng re~~~ur~:~="c~~m/sekharit/hibsrnate/mappitig/Ar-cc~ur: t . 1 2 6 . </sess ion-factor ; - : . 1 27. I i 28. </h ibe rna t e -con f igu ra :~311 : . j 2 9 .

I j SessionUtil.iava

1, package corn.sekharit.hibernate.ur;il; 1 2. 3. import org.hibernate.Session; 1 4. import org.hibernate.cfg.Configuration;

1 5. 1 6. public class SessionUtil { 1 7.

1 8. private static final ThreadLocaI<Session> threadLocaI = new ThreadLocaI<Session>(); I

9. private static org.hibernate.SessionFactory sessionFactory; ! 10.

, . \

, 11. static { i j 12. try { . .

sessionFactory = new Configuration().configure( 1- I ::: "com/sekharit/hibernate/config/hibernate.cfg.xmI").buildSessionFactory(); - . 1. . } catch (Exception e) { 1 iii e.printStackTrace(); I r 1

18, } 1 j 1 19. 1 20. private Sessionutilo { I

21. } I 1 22. I

23. public static Session getThreadLocalSession() { 24. Session session = (Session) threadLocal.get(); 25.

I I

26. i f (session == null) { 27. session = sessionFactory.openSession();

j_ 11

28. threadLocaI.set(session); !

29. } !

30. ! :;: } . return session; 1 :,

I 1 33. ? I

I 34.

public static void closeThreadLocaISession() { ! ! I ' I

I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 I !, ! An I S 0 9001 : 2000 Certified Company I

Page 2 http://javabynataraj.blogspot.com 14

Page 15: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

-~ -- - .- .- - - . ~ - ~~~. . - -- - - - -

Hibernate-CRU D Application By Mr. ~ e l t l ~ a r ~ e d d ~

Session session = (Session) threadLocal.get(); tlireadLocal.set(nulI);

i f (session != null) { session.close();

1 1

public static Session getsession() ( return ses~ionFactory.openSession();

1

public stat~c void closeSession(Session session) { if (session != null) {

session.close();

1 1

-- , Account.java I 1. package com.sekharit.hibernate.bean; - 2.

/ 3. import java.ut~l.Date; 4.

1 5. public class Account { 6. private long accno;

1 7. private Str~ng name; 8. private double balance;

I 9. private Date creat~onDate;

10. , 11. public long getAccno() { return accno;

1

public void setAccno(long accno) { this.accno = accno;

1

public String getName() { return name;

1

public void setName(String name) { 24. this.narne = name;

I 25. ) 26.

1 27, public double getBalance() {

I 28. return balance;

I 29. 1

1 Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 I

An IS0 9001 : 2000 Certified Company I

p a g e ~ - - - ' http://javabynataraj.blogspot.com 15

Page 16: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

[--? -- . . - - - - - - . . - - .- - - . - ~ ..- . ~~ , -.\ . -

I Hibernate-CRUD Application ! --

- - -- - -- - . .. . . . - . . .--... .-.yl.S..--

By Mr. ~ e k h a r ~ e d d ~ \ - - - - ~ .< ,. . , ----.U

.-\

1 30. 31. public void serBalance(double balance) { 1 32. this.balance = bala~ce;

! 33. 1

35. public Date getCreationDate0 { return creationDate;

37. } I 38. 1 39. public void setCreationDate(Date creationDate) {

40. this.cr?ationDate = creationDate; 41. } 1 42. 43. @Override 1 44. public String tostring() { 1 45. return "Account [accno='! t accno + ", balance=" + balance 46. + ", creationDate=" + creationDate + ", name=" + name + " I " ; 47. } 1 48. I

Account. hbm.xml 1. <?xml version="l.O" encoding="UTF-8"?> 2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.O//ENU / 3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

1 4. <hibernate-mapping schema="SYSTEM" >

1 5. <class name="com.sekharit.hibernate.bean.Account" table="ACCOUNT"> <id name="accno" type="longU >

<column name="ACCNOU length="SU not-null="true" ></column> </id> <property name="nameU type="stringM >

10. <column name="IUAMEU length="2OV not-null="trueV ></column> 11. </property> 12. <property name="balanceU type="doubleU > 13. <column name="BALN precision="8" scale="2" not-null="trueN ></column? 14. </property> 15. <property name="creationDate" type="dateM > 16. <column name="CREATION-DT" not-nllll="true" ></column> 17. </property> 18. </class> 19. </hibernate-mapping>

AccountDAO.iava 1. package com.sekharit.hibernate.da0; , 2. 3. import 0rg.hibernate.HibernateException; 4. import org.hibernate.Session; 5. import 0rg.hibernate.Transaction;

1 :: import com.sekharit.hibernate.bean.Account; 1 8. import com.sekharit hibernate.util.5essionUtil;

llaresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

--- An I S 0 9001 : 2000 Certified Company - - - . - - -- -

Page 4 http://javabynataraj.blogspot.com 16

Page 17: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

- - Hi . .- bernate-CRUD Application . By Mr. SeltharReddy wi.e-ii-ii-l - --

9. 10. pcrbl~c class AccountDAO { 3 1. (~ubl lc Account get(long accno) { 12. 13. Sess1011 session = null;

, 14. Account account = null; 15. try {

I 16. session = SessionUtil.getSess~on(); I 17. account = (Account) session.get(Account.class, accno); , 18. } catch (HibernateException e) { I 19. e.printStackTrace();

20. } f~nally { 1 21. SessionUtil.closeSession(session);

22. 1 1 23.

24. return account; j 25. }

26. 27. publ~c v o ~ d ~nsert(Account account) {

i 28. 1 29. Session session = null; I 30. try { 7 31. session = SessionUtll.getSession();

I 32. session.getTransaction().begin(); 33. session.save(account);

1 34. session.getTransaction().cornm~t(); 35. } catch (HibernateException e) {

1 36. session.getTransaction().rolIback(); 37. e printStackTrace0;

1 38. } f~nally { 39. SessionUtil.cl~seSession(session);

1 40. } I 41. }

42. I 43. publ~c void update(Acc0unt account) {

44. Session session = null; I 45. try {

46. session = SessionUtil.getSession(); 1 47. sess~on.getTransact~on(). beg~n();

48. session.update(account); 1 49. session.getTransaction().comrnit();

50. } catch (HibernateException e) { ( 51. session.getTransaction().rollback(); -- 52. e.printStackTrace();

I 53. } f~nally {

54. SessionUtil.closeSession(session); 55. 1

I 56. } 57.

1 58. public void delete(long accno) {

I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

-- An IS0 9001 : 2000 Certified Company - -

PagT5- http://javabynataraj.blogspot.com 17

Page 18: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

-. - - - . - - - - - - . - -- . -- - . -. . - - - - -. -

Hibernate-CRUD Application B Mr. Sel<harRecldy --

Session session = null; Tramaction transaction = null;

try I session = SessionUtil.getSession(); transaction = session.beginTransaction(); Account account = (Account) session.get(Account.class, accno); session.delete(account); transaction.commit();

} catch (HibernateException e) { transaction.rolIback(); e.printStackTrace();

} finally { SessionUtil.closeSession(session);

1

i AccountService.iava 1. package com.seltharit.hibernate.service; I 3. import java.util.Date;

5. import corn.sekharit.hibernate.bean.Account; I 6. import corn.sel~harit.hibernate.dao.AccountDA0;

1 7. / 8. public class Accountservice { 9. public static void main(String[] args) { -

I 10. AccountDAO dao = new AccountDAO(); 11. 12. // Retrieve Account 13. Account rAccount = dao.get(90001); 14. Svstern.out,println("Account details ....");

Systern.out.println("Accno : " + rAccount.getAccno()); 1 ::: System.out.println("Name : " + rAccount.getName()); 17. System.out.println("8alance : " + rAccount.getBalance()); 18. Systern.out.println("Creation Date: " + rAccount.getCreationDate()); 1 19. 20. // Create Account 21. Account cAccount = new Account(); 22. cAccount.setAccno(90005); 23. c~ccount.set~ame("sekhar"); 24. cAccount.setBalance(6899); 25. cAccount.setCreationDate(new Date());

1 26. dao.insert(cAccount); 1 27. System.out.println("Account created successfully");

28. 29. // Update Account I 30. Account uAccount = new Account(); 31. uAccount.setAccno(90003); 32. uAccount.setName("sekhareddy");

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An IS0 9001 : 2000 Certified Company ---

Page 6 http://javabynataraj.blogspot.com 18

Page 19: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

I --, Hibernate-CRUD Application - -- - - - -- . . . . . . . -- . . . . . . By Mi-. Sel;ha~-Reddy

!

33. uAccount.setBalance(4500); 34. uAccount.setCreationDate(new Date()); 35. dao.update(uAccount); 36. System.out.println("Account updated successfully"); 37. 38. // Delete Account 39. dao.delete(90002); 40. System.out.println("Account is deleted successfully"); 41. 42. } 43. }

After Execution ACCOUNT TABLE : ,-*. . ? ;;. ,-.c c- 1.10 Il.,\li.lE E:AL CREhT 101 I-UT

t I:i.:a>, ?:-eddy 69541.03 5: 29,'21:1!::

9l:ll:lOj ~e\ ; t l l l l -ed j j ' 45i10 j!Z?jLI:l]z !21:11:105 5el:hal- 6Sgg 529 j iC112

1 Q.) Rewr i te t h e above application, using annotat ions instead o f mapp ing f i le?

d . . * ' cctn.r tkb~ar i t .h ih~rnatr .ut i I

:.i . . : Ser-~ian!JtiI,~a~.~a . . , .

r-:. :,.-J. JRE S y . ~ t i i i ~ L i b r a y ,...;;a::,:. . ,

- - H i t x r n a t e 3 .3 Anncta t ion ' : F,t Entit!. I:;lanagel ......

i , . Hitlel-nate 3.3 C n r e Librar ies

LI ~ i j R e f e r ~ t i c e d Lihrariel: 080 c<clbclJ,jar

l i b 3 . . ,.

1 hibernate.cfg.xml . .

: 1. <?xml version='l.O' encoding='UTF-8'?> 1 2. <!DOCTYPE hibernate-configuration PUBLIC 3 . -- "-//Hibernate/Hibernate Configuration DTD 3.0//ENn 4. "http://hibernate.sourceforge.net/hibernate-configuration-3.O.dtd"~

I 5 . 6. <hibernate-configuration>

8. <session-factory> 9. <property .... />

............

! Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An IS0 9001 : 2000 Certified Company

Page I http://javabynataraj.blogspot.com 19

Page 20: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

~ . - .. -

i 1 - Hibernate-CRUD Application By Mi-. Sekhal-lieddy. - -: , --

/: -. . -.'%-*au#A&.Lcas* -*=--&= i

I ~' -,

; 23. 1 24. 'A

! 25. public void setAccno(1ong accno) { j 26. this.accno = accno; ,,

' 27. } 1 28.

I?

! 29. @Column(name = "NAME", nullable = false, length = 20) ,.

30. public String getName() { ,--..

31. return name; 32. }

! 33. , . I : 34. public void setName(String name) { 1 35. this.name = name;

~. j 36. } ! i 37. I

I 38. @Column(name = "BAL", nullable = false, precision=8, scale=2) \. I 1 39. public double getBalance() { I

) 40. return balance; \

41. } 1 / 1 42. , j

I 1 43. public void set~alance(double balance) { I

44. this. balance = balance; -

45. } I

1 46. ., \

I x.

47. @TemporaI(TemporaIType. DATE) I ! I 48. @Column(name = "CREATION-DT", nullable = faise) ,. \

\ , 1 49. public Date getSreationDate() { i 50. return creationDate; 1 I .

51. } i- 52. 1,

h :. 53. public void setCreationDate(Date creationDate).{ , I* .

54; !

this.creation[>ate = creationDate; 1.- 55. } 56.

I

i 1 57. @Override 1

58. public String tostring() { 1 59. return "Account [accno=" t accno + ", balance=" + balance 1, 1 60. t ", creationDate=" + creationDate + ", name=" + name + "I"; 61. }

l~ i 1 62.

, 63. 1 Account.hbm.xml

I 1: ---NOT REQUIRED--- \ -

I , AccountDAO.java !

I , ---Same As Above--- I -

i I

AccountService.iava I ! ---Same As Above--- 1 ' -

/ I / r I

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 i An I S 0 9001 : 2000 Certified Company I I \

-- _ _ _ _ 1

Page 9 http://javabynataraj.blogspot.com 20

Page 21: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

-. - - - - - -. -- -- --- - -- - - -- - - - -- - - -- - - - - - ---

H ibernate-CRUD Application B v MI-. ~ e l t h a r ~ e c l d v -

Hibernate - The type Annotationconfiguration is deprecated I

I Problem

I Working with Hibernate 3.6, noticed the previous "org.hibernate.cfg.Annotat~onConf~gu~-at~on", 1s marked a s "deprecated".

Code snippets ...

org.hibernate.cfg.AnnotationConfiguration;

private static SessionFactory buildSessionFactory() {

t ry 1 return new AnnotationConfiguration().configure().buildSessionFactory(); 1

} catch (Throwable ex) {

The code is still working, just keep displaying the deprecated warning message, is there any replacement for I "AnnotationConfiguration" ? I

I

! -

I

-

i Solution

System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionlnlnitializerError(ex);

1 . I

Q In Hibernate 3.6, "org.hibernate.cfg AnnotationConfigurat~on" is deprecated, and all its functiona!~ty has been ! moved to "org.hibernate.cfg.Conf~gurat~on".

I 4 SO, you can safely replace your "AnnotationConfiguration" with "Configuration1' class.

I Code s n i ~ ~ e t s ... import org.hibernate.cfg.Configuration;

! / I...

System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionlnlnitializerError(ex);

1

I

1 I

I I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

An IS0 9001 : 2000 Certified Company Page 10

private static SessionFactory buildSessionFactory() {

t r y 1 return new Configuration().configure().buildSessionFactory();

} catch (Throwable ex) {

http://javabynataraj.blogspot.com 21

Page 22: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

-- .- - - - - - - - - - _-- _ _ _ . , ,

Hibernate-CRUD Application -. - ___a

By Mr. SeltharRedciy - -- - - - . -- - - -.

-'-4- I

A

Account" />

SessionUtil.java . .

1. package com.sekharit.hibernate.uti1; I ," -

' 2, import org.hibernate.Session; 3. import org.hibernate.cfg.AnnotationConfiguration; , i . 4. public class SessionUtil { % .

I

5. I ,'

6. private static final ThreadLocal<Session> threadLocal = new ThreadLocaI<Session>(); 7. private static org.hibernate.SessionFactory sessionFactory; 8.

, I 9. static { I

' 10. t ry { ! 11. sessionFactory = new AnnoationConfiguration().configure( : 12. "com/sekharit/hibernate/config/hibernate.cfg.xmI").buildSessionFactory(); - :I , 13. } catch (Exception e) { I

14. e.printStackTrace(); ,"

15. } -

1 16. } I I , \

1 17. ........................... 1 18. ........................... r

Account.iava 1. package com.sekharit.hibernate.bean; 2. 3. import-java.util.Date; 4. 5. import javax.persistence.Column;

I 6. import javax.persistence.Entity; 1 7. importjavax.persistence.ld; I 8. importjavau.persistence.Table; 1 9. import javax.persistence.Tempora1; ' 10. import javax.persistence.TemporalType; i 11. @Entity 1 12. @Table(name="ACCOUIVT") . 1 13. public class Account { 1 14. private long accno;

15. private String name; 16. private double balance; 17. private Date creationDate; 18.

' 1 9 . @Id

20. @Column(name = "ACCNO", nullable =true, length=5) 21. public long getAccno() { 1 22. return accno;

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An IS0 9001 : 2000 Certified Company

. . . . . . . . . .- . . . . . . . . . . . . . . . . . . . - .... - -. .- . -- - -.

~a g e8. ' http://javabynataraj.blogspot.com 22

Page 23: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

' ' Hibernate-Arcl~itect~~ral Elements

, Q.) Explain more about hibernate.cfg.xml (configuration file)? I I .

3 This xml file used to specify locations of mapping files/Entities I > In projects we don't give the database details(ur1, username, password, driverclass) in the

I configuration file, instead of that, we give JNDl name of DatatSource.

<property name="connection.datasource"~myDataSourceI\lame~/property~

I

9 Hibernate slupports default connection pooling but which will not be used in projects We use always

1 server provided connection pooling.

I I) connection.pool-size: Used to configure hibernate provided connection pooling in hibernate.cfg.xml :

I I I 2) show-sql: if the 'show-sql' value is t rue we can view all the hibernate generated queries in the

I console. <property name="show~sql"~ t rue~ /proper ty~

I -- 3) use-sql-comments : To add SQL comment t o the SQL query generated by Hibernate

I <property name=" use~sql~comments">true~/property~ I

-

1 4) format-sql : Format the SQL ql;ery, so that easy to read <property name format-sqln>true</property>

5) hbm2ddl.auto: It has two values

I a. create or create-drop

b. update

I

a,) Create: If its value is create while running the application

! Case 1: table does not exist

i Create new schema based on the mapping file configurations

i Case 2: table exists

Drop the existing schema and create a new schema based on the mapping file configurations

I b.) Update: If its value is update while running the application

I Case 1 : table doesn't exist

Create a new schema based on the mapping file configura.tions

I Case 2 : table exists -

i Use the existing schema

1 > If i t s value is 'create' while running the application hibernate will drop the old schema and it wil l

I create the new schema. (Based on HBlVl file)

I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

-. - -- An IS0 9001 : 2000 Certified Company - - - - - --

P a g e 1 http://javabynataraj.blogspot.com 23

Page 24: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

I 3 If its value is 'update', hibernate will check for schema existence. If schema doesn't exist it will I I

create the new schema. If the schema already exists it uses the existing schema for persistence

operations.

Q.) What do you know about dialect in Hibernate?

P Dialect class is a simple java class, which contains mapping betweerr java language data type and database data type.

i

/ P Dialect class contains queries format for predefined hibernate methods I 2 Hibernate generates queries for the specific database based on the Dialect class. If you want t o shift 1

f rom one database t o another just change the Dialect class name in hibernate.cfg.xml file. 1 I

1 9 All Dialect classes must extend 'Dialect' (abstract) class i ! 1 9 Hibernate supports almost 30 dialect classes.

9 I f we want we can write our own dialect by extending Dialect class

I

I Dialect class i s used convert HQL queries into database specific queries.

I I \

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 1 An I S 0 9001 : 2000 Certified Company I .

--- - - -- -1 Page 2 http://javabynataraj.blogspot.com 24

Page 25: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hibernate-Arcl~itectural Elements

I MySQL with InnoDB 1 org.hibernate.dialect.MySQL5lnnoDialect

DB2 AS1400

DB2 05390

PostgreSQL

1 MySQL

I I Oracle (any version) org.hibernate.dialect.Oracle8iDialect I

-

org.hibernate.dialect.DB2400Dialect

org.hibernate.dialect.DB2390Dialect

org.hibernate.dialect.PostgreSQLDialect

org.hibernate.dialect.MySQL5Dialect

1 Sybase 1 org.hibernate.dialect.SybaseDialect

' oracle 9i

1 1 oracle l o g

org.hibernate.dialect.Oracle9;Dialect

org.hibernate.dialect.Oracle10gDialect

1 I Microsoft SQL Server / org.hibern; te.dialect .~~~server~ialect

'/

> Sybase Anywhere

TI Microsoft SQL Server 2008 I org.hibernate.dialect.SQLServer2008Dialect I I I

org.hibernate.dialect.SybaseAnywhereDialect 1 I

I I SAP DB 1 org.hibernate.dialect.SAPDBDialect , 8 !

I I!

HypersonicSQL 1 org.hibernate.dialect.HSQLDialect 1 1 I I -I I I lngres

Mckoi SQL -1 I

I org.hibernate.dialect.MckoiDialect I

org. hibernate.dialect.lngresDialect

org.hibernate.dialect.ProgressDialect 1 I

I

Q.) Explain more about Hibernate mapping fi le? I

I

Progress

I lnterbase

FrontBase

1 / Firebird

> Each hibernate mapping file must contain only one <id> (or relevant tag <composite-id>)

> Java object identi f ied uniquely by the <id> tag property.

org.hibernate.dialect.lnterbaseDialect 1 !

i org.hibernate.dialect.FrontbaseDialect

org.hibernate.dialect.FirebirdDialect ..A

I > <id> tag property corresponding column can be primary key or non-primary key in the database

org.hibernate.dialect.PointbaseDialect Pointbase

I

I > In mapping file class names and property names are case sensitive. But Table names and column

I

I

I names are no t case sensitive. !

1

1 I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 !

An IS0 9001 : 2000 Certified Company -- PTe- 2-.. .-

http://javabynataraj.blogspot.com 25

Page 26: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

, ~ ~~ . - ~ ~ . .~ ~ . ~ ~ ' ,

Hibernate-Archi tectul-a1 Elements j -~ . . . . . . . . -- Mr.SekharRecidy -La,D . - .

i - \

I \

I i P When the property name and column name both are same we no need t o give 'column' a t t r i bu te :,-

r When the Pers~stent class name and table name both are same we no need to give 'table' a t t r~bu te

r Generally we write one mapping f ~ l e per one domain object. But i t allows writing multiple objects - mapping information wi th in the same mapping file. Per each class mapping we need t o write one <class> tag.

I r Databases have different ways t o organize i t s tables. Some database places all tables in a different

"schemas", some database places all tables in a different "catalogs". If we want we can specify this in <class> tag of the mapping file

i 9 In mapping file we write fully qualified name of the entity class in "name" attribute of <class> tag. Instead of that we can write package name separately using "package" attribute of <hibernate- mapping> tag

P In the mapping file we no need t o map all the properties of the entity and all the columns of table. As per our requirement we configure required properties of the entity and columns of the table

1 Q.) Explain about annotations which are used in our application t o map entity t o table?

I P In our examples i f we observe, we used the following annotations

I I o @Column ---we----

I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An IS0 9001 : 2000 Certified Company

Page 4 http://javabynataraj.blogspot.com 26

Page 27: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

~ pppp-.- ..... . .

Hibernate-AI-chitectural Elements .......................

8 _nl..x&r ... -~ .. , . .I

~ r . ~ e k l ~ a i - ~ e c l d y - -. -

-

o @GeneratedValue

o @Temporal

/- All the above annotations we are taking from java.persistence package. Actually this paclcage is not

the part of hibernate API. This paclcage is f rom .IPA(Java Persistence API).

> These annotations also given by hibernate. But we don't prefer t o use hibernate given annotations.

We prefer t o use .lPA annotations. Reason for this is, Hibernate is a specific API, where as ]PA is a

specification.

If we use JPA annotations we have t o flexibility t o change the implementation vendor wi thout

changing application code.

i > .IPA is an APl(from SUN), its not the implementation. There are mult iple implementations are there

for ]PA. Some of famous implementation of ]PA are Open.lPA, Hibernate, Toplink Essentials, Eclipselinlc

... etc.

' 4.) What is Configuration object?

> Object Oriented representation of hibernate configuration file along w i t h mapping file is known as - Configuration object

- 3 By default Hibernate reads configuration file wi th name "hibernate.cfg.xml" which is located in 1

"classes" folder

I

9 If we want t o change the file name or i f we want change the location of "hibernate.cfg.xml" then we need to pass user given configuration file name (along with path) t o "configure()" method of

1 Configuration class

1 P Configuration object Stores the configuration file data in different variables. Finally all these variables are grouped and create one high level hibernate object called SessionFactory object.

I P So Configuration object only meant for creating SessionFactory object

I > If we want we can provide the configuration information programmatically, without writ ing

I configuration fi le.(But it wi l l become Hard coding, so not advisable)

1 Programmatic configuration

I Adding mapping files t o configuration object programmatically

-- Configuration cfg = new Configuration() 1 .addResource("ltem.hbm.xml")

.addResource("Bid.hbm.xml");

I - . -

Adding Entities(anrl0tated persistent classes) t o configuration object programmatically

I

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An I S 0 9001 : 2000 Certified Company I . . . . .. . . . . .

Page 5 http://javabynataraj.blogspot.com 27

Page 28: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

-- - - . ~. - ..-~- -. . - - - .- . - - - .. - - - -. - -. . -. I Iiibel-nate-AI-chitectul-a1 Elements

. - -- -- --- --- - . - -- .. - - - . . ,- . . . . . - , . - . - MI-.SekharRectciy

1 - . . .. . .- . .. . ~ . - m.JI,X,

I ,. ,

Configuration cfg = new Configuration() ..

.addClass(org.hibernate.auction.ltem.class)

.addClass(org.hibernate.auction.Bid.class); i i ) To add hibernate properties t o Configuration object programn~atically

Configuration cfg = new Configuration()

.addClass(org.hibernate.auction.ltem.class)

.addClass(org.hibernate.auction.Bid.class)

.setProperty( 'hibernate.diaIect", "org.hibernate.dialect.MySQL11~noDBDialect")

.setProperty("hibernate.connection.datasource", " java:comp/env/jdbc/test")

.setPr~perty("hibernate.order~updates", "true");

This is not the only way t o pass configuration properties to Hibernate. Some alternative options include:

1. Pass an instance of java.utiI.Properties t o Configuration.setProperties().

2. Place a file named hibernate.properties in a root directory of the classpath.

3. set System properties using java -Dproperty=value.

4. Include <property> elements in hibernate.cfg.xm1 (this i s discussed later).

If you want t o get started quickly hibernate.properties is the easiest approach.

The org.hibernate.cfg.Configuration i s intended as a startup-time object that will be discarded once -

aSessionFactory I S created.

I Q.) What i s SessionFactory?

SessionFactory is an interface and SessionFactorylmpl is the implimented class It is factory of Session objects It is heavy weight object that has t o be created only once per application. SessionFactory object provides lightweight Session objects. SessionFactory is not singleton. Lets create it only once using Util/Helper class SessionFactory is a Thread safe object. You need one SessionFactory object per database. So if you are using multiple databases then you would have to create multiple SessionFactory objects. SessionFactory is also responsible for second-level caching.

Q.) In one appl~catlon, how many SessionFactory objects I can use ? > ASessionFactory is pretty heavyweight, so, we recommend creat~ng one and caching it in a singleton type of

way. Then, you can create as many Session objects from it as you like.

Q.) Why SessionFactory is heavy weight? P SessionFactory encapsulates Session objects, Connections, Hibernate-properties, cashing and

mappings.

- -- - - - - - - - - - - - - - - - - - - - - -- -- - - -

Naresh i Technologies, Opp. Satyarn Theatre, Arneerpet, Hyderabad, Ph: 040-23746666,23734842

-- An IS0 9001 : 2000 Certified Company

- - ~ a g e 6 - http://javabynataraj.blogspot.com 28

Page 29: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hi bernate-Architectural Elements

Q.) What do you know Session object?

Session is an interface and Sessionlmpl is implemented class, both are given in orghibernate."; r Session object is called persistent manager for the hibernate application. r It i s a single-threaded(not-thread safe), short-lived object

> It Wraps a JDBC connection

r The Hibernate Session operates using a single JDBC connection which can be injected by the

hibernate while constructing session object. I

> It has convenience methods t o perform persistent operations.

r It is a factory for Transaction objects

r Holds a mandatory (first-level) cache of persistent objects I

Note: After we complete the use of the Sesslon, ~t has to be closed, t o release all the resources such as

associated objects and wrapped JDBC connection.

, 4.) What i s Transaction ? - - ..

r Transaction used by the application t o specify atomic units of work (Transaction management). - i Using Session Object we can create Transaction object in t w o ways.

o Transaction transaction =Session.getTransaction(); o Transaction transction = session.beginTransaction();

> Transaction object i s unique per session object.

> Transaction interface defines following methods to deal w i th transactions.

o transaction.begin() {Transaction beginning) o transaction. commit(); { successful transaction ending ) o transactin.ro!lback(); {un successful transaction ending )

> Default auto commit value is false in Hibernate. r Default auto commit value is true in JDBC 3 In hibernate even t o execute one DML operation also we need t o implement Transactions.

> Hibernate supprots

o JDBC Transaction.

o jTA Transaction.

o Spring Transaction

- Sample transaction code is as follows ... I

- 1. Session = sessionFactory.openSession(); I 2. Transaction t x = null;

3. tv { 4. tx = session.beginTransaction();

I 5 . // DML operations

6. tx.commit(); I 7. ) catch(Exception e) {

- 1 I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

. . . - .. - - . . . . - - .. -. .. - - .- - . . . . . - . . - -. - - An IS0 9001 : 2000 Certified Company -- --

Page 7 http://javabynataraj.blogspot.com 29

Page 30: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

1 1 Hibernate-Architectural Elements . , Mr.Se1tharRecldy --=A. -- - - s -

1 Q.) Why we have wri t ten SessionUtil class? C When some common logic i s repeat~ng across the rnul t~ple classes of an application, ~t IS better to

1 move the common logic into some uti l class. Where ever we need that common logic we make use of i util class. I ! i I 0 SessionFactory is heavy weight and it's not singleton, so we should make one SessionFactory per 1 database. i

i 0 Using Util /Helper class we read the configuration file only once and we create one SesisonFactory . I and we are providing fac~l i ty to get session object and t o close session object. I

/ Hibernate complete architecture Read

! !

I

class

i'i.ypl.

I

configure a database driver in eclipse: !:

> Launch or open MyEclipse Database Explorer prospective. In the DB Browser window right click on

1 the white place and select "new " option. iL

.mEC' .- , C'scatc A

TJses i

Scssiorl Factor?. I 1 DAI~I~: ,SC L<cr\,c.i . . -1::. -

. - v

1

I / O When we choose the new option, i t wil l launch database driver dialog box. Now we need t o fill the

Creates

cation 1

/ I - -

I following options in the dialog box. I

......... _ ....

Sess ion

/ > Select driver template as oracle(thin driver), i f we are using oracle database.

3' ......

--

-.. ......... ................ --- ...................-.....-.........-... - . --

Give the driver name (logical name, which is used t o refer this configuration) 1 I

1 Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 I

1

An I S 0 9001 : 2000 Certified Company Page 8

J http://javabynataraj.blogspot.com 30

Page 31: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hibernate-Architectural E l e i ~ ~ e i ~ t s

3 Give the connection url. I

3 Give the username and password. I

> Click on Add Jars button, then se!ect classes.jar fi le !

I- Click on save password

> CIick on finish

Hibernate Reverse engineering > Open Myeclipse database explorer prospective.

i Select t he database driver which w e have created and r igh t click o n i t and select open connection 1 i It wi l l display a dialog box. Fill t he required username and password. 1

I r Select appropriate schema where our tables are stored

> Right click o n the table and select "hibernate reverse engineering"

'i The above operat ion wi l l display a dialog box i n t ha t

I > w e need t o select the "java source folder (src)"

> select t he java package and click on finish I

1 Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

-. An IS0 9001 : 2000 Certified Company

Page 9 http://javabynataraj.blogspot.com 31

Page 32: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

; Hibernate-Persiste~~t Object Lifecycle . . ." Mr.SekharReddy - I - - - , -

1 , , I

Persistent Object l i fe cycle

1 Persistent Object has three life cycle states 1. Transient state

! 2. Persistent state I 3 . Detached state I

I (-"]new - - . - . - instance

: 'L- Transient State

--A - - - - I Session.get()

I j Session.load() Session.save() ; Session.delete() Session.iterate() ! Session.saveOrUpdate() i Session. uniqueResult() Sc.ssion.persist()

arb age collection I

1. B Session.scroll() 1 : : Session.merge() i f i

1 I

: Session.evict() Session.update() 1 ! Session.saveOrUpdate() i : Session.clear() i

t Session.merge() ~arbage'col lect ion i : Session.close() 1 Session.lock()

I j Session.replicate() ,,(. '

! /.',.

i ; :

Detached State ,

/ Persistent state

Note:

Life cycle\object description

Transient state

Object associate w i t h session

NO

I I Detached state I I

- 3 Object is associated w i th session means object reference is available to the session object

Object present i n the database

YES

N 0

9 Object present in the database means object identifier value i s available in database primary key column (Non identifier column values are not matter)

YES

YES

Note: We can find the different diagrams for the persistent object life cycle as follows

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An IS0 9001 : 2000 Certified Company

Page 1 http://javabynataraj.blogspot.com 32

Page 33: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hibernate-Persistent Object Lifecycle - - - .- - -. - - -. - -. -.

MI-.SekharReddy I -

I

, .--- ,-, ;<;, 2;:

.\ _ ,_.A,.. _ ..- - - r \ ..- -

/_/- - - __-- -- ! ,2 ; /# ; I . . . , . - -- - _-- ,.,,-,.,, ::, I!.!,;I;,~~ I'~I.IcI(;I~ ~ ! ? r a t . ~ ~ ~ P I ~ by------- I I ',., - --- /~,lill ,~: i;~i:l~~;) a ~ ( ! c l ~ , 2 ~ [ l :$?::!, '-I ?PI'~~~IPI'I!

IT^^-^.. . - . .--/ .. , I i ' 1 1 lrjl; . 31il.e~ ' - 1 1 , 1 ,A 2 .p:#:111r -:--tdL,.\

.%.., I I '-7r..'

I 1 Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842

7- 4 . --_ -- --- Ada!:ltpd from "Hlt:~prr!atp iij 4:ti:y.i' ;

-

I /by I Ballet' 4 G King , I

An IS0 9001 : 2000 Certified Company 1 Page 2

D ~ t a c h e d

http://javabynataraj.blogspot.com 33

Page 34: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

I .. -- .. .. -- - . --,

I Hibernate-Persistent Object Lifecycle -- ~ r . ~ e k h a r ~ e d d T - . I - I _ m _ _ < - w - S %

.. . -- ,.- i

Transient state: An object is said t o be in transient state, when i t is not associated with session and not present in

data base.

Example: Table

ACCOUNT

1 ACCNO / NAME / BALANCE 1 1001 kesavareddy 1500 1 1002 1 Sekhar 2 0 0 0 1

I I

i Appl icat ion code:

1. Account account = new Account(); 2. account.setAccountld(1003); 3. account.setName("yellareddy");

1 4. account.set8alance(l500);

> In the above example account object is not associated with session and there is no matching record in the ACCOUNT table. So we can say that account object is in transient state.

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842

-- An IS0 9001 : 2000 Certified Company

-- --

,

Page 3 -- http://javabynataraj.blogspot.com 34

Page 35: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

' Hiberna te -~e r s i s t e l~ t Obiect Lifecvcle

i 3 In this state object is non-transactional. 1.e. object is not synchronized wi th record. 1.e. IVlodifications done to

1 1 entity, doesn't save into database.

( Persistent state: An object is said to be in persistence state, when it is associated wi th session as well as object present

in database. I

- ' Example: Table

i ACCOUNT

ACCNO ( NAME 16iiEF kesavareddy ( 1500 ' ~ - y

1 Sekhar

I

' Application code:

I Account account = (Account) session.get(Account.class,1002);

P In the above example account object is associated with session and there is a matching record in ACCOUNT ! table. So we car: say that account object is in persistent state.

I P In this state object is transactional. 1.e. the object is synchronized with database record. I P Changes made t o objects in a persistent state are automatically saved t o the database without invoking session

1 persistence methods

' USE CASE: Explains Persistent state I

Session session =SessionUtil.getSession(); 1 session.getTransaction()begin();

! // 'transient' state - Hibernate i s NOT aware tha t it exists

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An I S 0 9001 : 2000 Certified Company

-- - Page 4. http://javabynataraj.blogspot.com 35

Page 36: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

- - - -- -- - -

1 Hibernate-Pel-sistei~t Obiect Lifecvcle Mr.SekharReddv 1 / Account account = new Accoui;t(); 1

! //transition t o the 'persistent' state. Hibernate is N O W 1 // aware of the object and will save i t to the database I session.save(account);

1 // modification of the object will automatically be // saved because the object is in the 'persistent'state account.setBalance(500);

i // commit the transaction session.getTransaction().co~nrnit();

I USE CASE: Explains Transient state

/ Session session =SessionUtil.getSession(); sess~on.getTransaction().begin();

1 // retrieve account with id 1. account is returned i n a 'persistentJ state

, Account account = (Account) session.get(Account.class, 1);

// transition to the 'transientJ state. Hibernate deletes the // database record, and no longer manages the object I session.delete(account);

// modification is ignored by Hibernate since it is in the 'transient' state account.setBalance(500);

// commit the transaction session.getTransaction().comrnit();

// notice the Java object is s t i l l alive, though deleted from the database. // stays alive unti l developer sets t o null, or goes out of scope

I System.out.println(account.getBalance());

Detached state: An object is said to be in detached state, when the object is not associated with session but present in

data base.

Example: Table

ACCOUNT

I ACCNO I N A M E I BALANCE 1 1001 1 kesavareddy / 15001

I 1002 . / Sekhar 2 0 0 0 I I I J

Application code :

1. Account account = new Account(); 2. account.setAccountld(1004); 3. account.setName("cherry");

IVaresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 An IS0 9001 : 2000 Certified Company

- . - -. - -- - - - - - -. - - -- -- Page 5 http://javabynataraj.blogspot.com 36

Page 37: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hibernate-Persistent Object Lifecycle -- Mr.Selt11arReddy I L" - - ~~-~~ -. .----A -

4. account.setBalance(2100); 5. / /Now the account object is said t o be in transient state 6. session.save(account); 7. // NOLV the account object is said to be in persistence state

. -,-

I Sess ion . . . . . . . .....

... .. ..................

........

. . .....> __ I

i I LOU2

lOUJ -

9. // Now the account object is said to be in detached state.

account

......... . . . . . . . . . . . . . . . . . . .

......

. . . . .,' . . ,

-

I => In the above example after callingsession.close() method, account object is moved to Detached state from persistent

state. As session i s garbage collected, i f we try t o perform some modifications t o entity object those changes wil l not be / stored into database.

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An IS0 9001 : 2000 Certified Company -- --

Page 6 http://javabynataraj.blogspot.com 37

Page 38: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

- ~ . .~ p-p-p-.-.----..... ~ . -~ ~. -- .. ~ .. . . . ,

Hibernate-Persistent -- -. --- Object Lifecycle Mr.SeltharReddy ... .... . . -... - -_ _.ii_-../i

,-, => In this state object is non-transactional. Means object is not in sync with database. So Changes made to detached

'

objects are not saved to the database. -,

I i USE CASE: Explains De tached state 1 I , // retrieve account wi th id 1. account is returned i n a 'persistent' state / Account accoilnt = session.get(Account.class, 1);

i // transition to the 'detached' state. Hibernate no longer manages the object I i session.close(); 1 I

// modification is ignored by Hibernate since it is in the //'detached1 state, but the account sti l l represents a r o w i n the database account.setBalance(500);

i // commit the transaction session.getTransaction().commit();

1 USE CASE: Explains De tached s ta te

/ Session session1 =SessionUtil.getSession();

i // retrieve account wi th i d 1. account is returned i n a 'persistent' state Account account = sessionl.get(Account.class, 1);

I

i // transit ion t o the 'detached' state. Hibernate no longer manages the object I Sessionl.close(); I I

// modification is ignored by Hibernate since it is i n the //'detached1 state, but the account sti l l represents a r o w i n the database / account.setBalance(500);

// re-attach the object to an open session, returning it t o the //'persistent1 state and allowing i ts changes t o be saved t o the database Session session2 =SessionUtil.getSession(); Session2.getTransaction(). begin(); session2.update(account);

I 1 1 // commi t the transaction . " j'

Saving Changes to the Database

r3 Session methods do NOT save changes t o the database - save(); - update(); -- delete();

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842

.- An IS0 9001 : 2000 Certified Company

page-7- http://javabynataraj.blogspot.com 38

Page 39: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

-- -. ~ -. -. ~- . - . - - - . - - -

: - Hibernate-Persistent Object Lifecycle Mr.Selc11al-Reddy I .. --. .- . -. i

a These methods actually SCHEDULE changes t o be made to the database O n c e Transaction committed, all the queries will be pushed t o the database

- session.getTransaction().commit();

The Persistence Context

4 Each Session object contains one Persistentcontext. It might be containing the follow things:

' Graph of managed persistent instances

i List of SQL statements t o send t o the database i

I ' ~ l u s h i n g the Context

,! Submits the stoied SQL statements t o the database Occurs when: , - transaction.commit() is called

1 - session.flush() is called explicitly

1 USE CASE : Scheduled Changes Session session =SessionUtil.getSession();

( Session.getTransaction().begin();

// 'transient' state - Hibernate is NOT aware that it exists Account account = new Account();

/ /Transi t ion t o t h e 'persistent' state. Hibernate is NOW // aware o f the object and //schedules the insert statements t o create the object i n t he database session.save (account);

// modif icat ion o f t he object wi l l automatically be saved scheduled //because the object is i n the 'persistent' state // (actually alters the ini t ia l insert statement since it hasn't been sent yet) account .setBalance(500);

I // f lushes changes t o t h e database and commit the transaction session.getTransaction().commit();

1 Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 - An IS0 9001 : 2000 Certified Company

rage tr http://javabynataraj.blogspot.com 39

Page 40: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

- --..- - - -. -- --- -. -

I H [be1 nate-Session Methods Mr.SeltharReddv -

i I

Session m e t h o d s

1 28. }

i : public void setName(String name) { 1 31. this.name = name;

1 I a m going to use the fol lowing ent i ty to explain the session methods. ; 1, 9ackage corn.sekharit.hibernate.entity; ! , 2. j 3. import javax.persistence.Column; , 4. ~ lnpo i t javax.pers~stence.Entity; I i 5. import javax.persistence.ld; 1 6. import javax.persistence.Table; ! 7. 1 8. @Entity

9. @Table(name = "ACCOUNT") 1 10. p~tblic class Account ( 11. private int accountld; I 12. private String name; 1 13. private double balance;

i 14.

@Column(name = "BALANCE") public double getBalance() {

return balance;

I

,

public void setBalance(double balance) ( this.balance = balance;

1

' 15. @Id 16. @Column(name = "ACCNO") 17. public int getAccountld() ( 18. return accountld; 19. } 20.

@Override public String tostring() {

return "Account [accountld=" t accountld t ", name=" t name t ", balance=" t balance t "I";

public void setAccountld(int accountld) ( this.accountld = accountld;

25. @Column(name = "NAME") 1 26. public String getName() ( , 27. return name;

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

An IS0 9001 : 2000 Certified Company 1 : - Page 1 http://javabynataraj.blogspot.com 40

Page 41: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

4.) What are the differences between load() and get() methods?

Hibernate Session provides two method to access object e.g. session.get() and session.load(). Both looked quite similar

t o each other but there are many differences between load and get method which can affect performance of our

application.

1.) Throws "org.hibernate.0bjectNotFoundException' if object is not found in cache as well as on database.

:Type hierarchy of 'org.hibernate.(3bjectNotFounilExcepti~ri ' :

- > As we can see the ObjectNotFoundException hierarchy, we can say this is un-checked exception. .. .. So we no need to

write try-catch block t o handle this exception. -

/ 2) It is lazy loading, rrieans when we call session.load(Class, identifier) method i t will not return entity object, it will ,

return proxy object. When we try t o access the non-identifier properties from the proxy object, at that time it will hit 1 i the database and load the entity object.

i 3) As Session.load()return proxy instance, so it is not fully available in any future detached state.

I 4) Use this method if i t is sure that the objects exist.

5) It is just like EntityManager.getReference0 method of .lPA i

I

1) It will return 'null'value, if object is not found on cache as well as on database.

I 2) It is early loading, Means when we call session.load(Class, identifier) method it will hit the database immediately and

i load entity object and return entity object. I

3) As Session.get() returns a fully initialized instance, so i t is fully available in any future detached state. I

, 4) Use this method if i t is not s u e that the objects exist. I I

5 ) It is just like EntityManager.find() method of JPA 1 ' NOTE: If working with detached objects is not needed, load() or getReference() can be used to have better

1 performance.

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An IS0 9001 : 2000 Certified Company

Page 2 http://javabynataraj.blogspot.com 41

Page 42: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

H i bei-nate-Session Methods -,

I NOTE: Session.load() or EntityManager.getReference() should be used i f a fully initialized instance is not needed, wh i ch I

, saves a database roundtrip i f nothing other than creation of an association is done, wi th the proxied instance in --

rnailaged state

NOTE: load() method exists prior t o get() method which is added on user request.

.',

4.) HOW to call get and load methods ? : 50. public void callload(){

51. Session session = SessionUtil.getSession(); j _ 52. session.beginTransaction(); 53. try { i

1 54. Account account = (Account) session.load(Account.class,9001); 1 55. / / ~ t this line put Break.point ... Now observe the console, After this line executed, i

I 56. / /we can't find any select statement. And i f observe on the variables window, account object not initialized. ' 57. // Now account is just a proxy object.

! 58. i 1 59. System.out.println(account.getName()); I 60. //After this line yo" can find select query on the console, And now account object is initialized with database data. 1 1 61. ( . 62. } catch (ObjectNotFoundException e) { 1

// System.out.println(account.getName{)); //This would fail!!!

publicvoid callGet() { Session session = SessionUtil.getSession(); session. beginTransaction0; Account account = (Account) session.gct(Account.class,9001); // At this line put ~ r e a k .p'oint... Now observe the console, After this line executed, / /we can find select statement. And if observe on the variables window, //account object initialized with database data

// System.out.println(account.getName()); // no problem!!!

W h e n t o use Session ~ e t 0 and load0 i n Hibernate

1. i f object present we have t o implement some logic, i f not we need t o implement some other logic.

I get(): i f the object is not there, it returns null. Then we can implement above requirement as follows I if(object == null){

//some code

I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

L -- -- - -- An IS0 9001 : 2000 Certified Company I J -

Page 3 http://javabynataraj.blogspot.com 42

Page 43: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

~ ~ ~p p~ - .... . -

. . Hibernate-Session Methods Mi-.Sel<hai-Reddy !

//some other code I

I

load(): i f the object is not there it throws an exception. So we can't implement this requirerne~it using load()

For the above requirement we go for get() method.

2. If you we want to use the JavaBean that you are retrieving from the database after the database transaction has been conimitted, you'll want to use the get method, and quite frankly, that tends to be most of the time. For example, i f you load a User instance in a Servlet, and you want t o pass that instance to a Java Server Page for display purposes, you'd need to use the get method, otherwise, you'd have a LazylnitializationException in your JSP.

3. get() method could suffer performance penalty i f only identifier method like getld() is accessed. So consider using

load() method i f your code doesn't access any method other than identifier or you are OK with lazy initialization of

object.

Overloaded load0 methods (Hibernate 4 .x )

Overloaded get() met hods (Hibernate 4 . x )

* c r . getQClasl: clazz; S~l.islizatl:lc iclj : c;t,-icct - Sesric1.1

7 . . . .- .

<::a c~ct(5tring entit:,:l;lstj~~, C.,e1.ializ3t:le il:l,! : l ! - j t , ~~c t . > c ~ j ! : . . : - .. . c..: gct(Clas5 clarz, S~1.13l i rabl t id: LI=CI.:I'~.:~C!C~E Icckka;ior.le) : Object ,-. ..*:. get(Clar.5 clarz,. Serislisable id,, Lccki?l;tion: Icck0pticn.l : Ot:~!cct . .

:..:"c~et(Gring tntit;l;,I21-17~ 5~1-isl iz~1:; lc i::II Lcckl;~~lccle Icckhlocle) : Ot.:icct

i:.) gtt(Stl.it~g ~ t~ t i t : , ' l ' l a r r~~ . Sel.islizablc iil, Lccl;:Options lc1ck0l:tjct1:> : Object

Q) When update() method has to call ?

Transient state?

Transient state means the object is not associated with session and not presented in database. When there i s no record

in the database, no question of updating the record: So when the object is in transient state we can't call update()

method -

Persistent state?

Persistence state means the object is associated with session as well as presented in the database. If the object is in the

persistent state then the object is said to be synchronized with database. 50 whatever modifications done to the object,

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

- An IS0 9001 : 2000 Certified Company Page 4 http://javabynataraj.blogspot.com 43

Page 44: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

. . - - -- . ~ . -~ ~. . -- - -.. . - . . - - > . : Hibernate-Session Methods Mr.Sel<harReddv , ' :

/ those changes will be updated in the database and vice versa. So we no need t o call update() method when object is in 1

I persistent state. I

' \

, Detached state? I

I

Detached state means the object IS not assocrated with session but presented In the database In this state i f we want t o 1 , ' do any n~odif ications t o the object we should call update() method. Because in thls state the object is not synchron~zed

i w i th database.

I I public void saveOrUpdate(0biect object) throws HibernateException; I I I I f t he record is not there in the database ~t wrll try t o insert the record. If the record is there in the database i t wil l t ry t o , ! update the record.

1 Pseudo code o f saveorupdate():

1. class Sessionlmpl implements Session{ 1 2. public void saveOrUpdate(0bject object){ i 3. 1 4. //SELECT THE RECORD

5. Object obj = session.get(object);

j t: / / I F RECORD EXIST If( obj != null){

// UPDATE THE RECORD 1 :: updatejobj); , 10. ) else{ // IF RECORD NOT EXIST 11. // INSERT THE RECORD

I 12. save(obj); 13. /

1 Ex: Table ACCOUNT

Application code:

1. Session session = SessionUtil.getSession(); 2. session.getTransaction().begin(); 3. 4. Account account = new Account(); 5. account.setAccountld(1001); . 6. account.setName("sekhar"); 7. account.setBalance(6800.00); 8.

9. session.saveOrUpdate(account); 10. 11. session.getTransaction().commit(); 12. 13. //Now saveorupdate() internally calls save(), because record with 9001 id is not available in the database.

Naresh i Technologies, Opp. Satyam Theatre, Arneerpet, Hyderabad, Ph: 040-23746666, 23734842 l1

IS0 9001 : 2000 Certified Company - Page 5 http://javabynataraj.blogspot.com 44

Page 45: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Application code:

~ .- -...-p---p-pp-.-..p..-- .

Hibernate-Session Methods . , . . - -.

Mr.SeltharRecidy ---- . . . .. w

Table: ACCOUNT

1. Session session = SessionUtil.getSession(); 2. session.getTransaction().begin(); 3.

i 4. Account account = new Account(); I 5. account.setAccountld(1001);

6. account.setNarne("selthar Reddy"); I

1 7. account.setBala1ice(8200.00); 8. 9. session.saveOrUpdate(accour~t); ' 10. 11. session.getTransaction().commit();

I 12. ! i

13. //Now saveorupdate() internally class update(). Because the record with 9001 id i s already exists in the database. i

!=NO

, I -

Table: i

I ACCOUNT

I 1001 6800 1 1

NAME

I ACCNO / NAME I BALANCE )

B AL

1 1001 I rekhar Reddy 1 8200 1

I public Connection close0 throws HibernateException;

I

I

Once the transaction is completed we need t o close the session. When we close the session all the associated objects I

! w i th the session will be de-associated f rom session and associated JDBC connection also closed. It is not strictly necessary to . close the session but you must at least disconnect() it.

i

' I public void clear(); I

This method is used t o de-associate all the objects f rom session.

1 Table: ACCOUNT

1002 Kesavareddy 9500

1 Application code:

1. Session session = SessionUtil.getSession(); 1 2. session.getTransa~tion(/begin(); - 3.

4. Account accountl = (Account)session.get(Account.class,1001); 1 5. Account account2 = (A~~ount)session.get(Account.cla~~,1002~;

I 6. // Now accountl and account2 objects are in persistent state.

1 7. 8. accountl.setName("new sekhar");

1 9. account2.~etName("new kesavareddy"); 10.

1 Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

I An IS0 9001 : 2000 Certified Company

-- A Page G http://javabynataraj.blogspot.com 45

Page 46: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

~ pp ~~ .~ / Hibernate-Session Methods - . ..

-. , . Mr.SekharReddy --:: I ---- !

-.

1 11. session.clear(); I

I 12. //Now account1 and account2 objects are in detached state. ! - ! 13. / 14. session.getTransaction().conimit();

1 ~,

1. Session session = Sess~onUtil.getSession();

2. session.getTransaction().begin(); 3. 4. Account accountl = (Account)session.get(Account.class,1001); 5. Account account2 = ~Account)session.get(Account.class,1002); 6. // Now accountl and account2 objects are in persistent state. 7. 8. session.clear(); 9. //Now accountl and account2 objects are in detached state. 10. 11. accountl.setName("new sekhar"); 12. account2.setName("new kesavareddy"). 13. 14. session.getTransaction().commit();

Af ter execution:

ACCOUNT

ACCNO BALANCE

sekhar

kesavareddy

1 I i i n the above example, when w e call session.clear() method, account l and account2 objects wil l be de-associated ) f rom the session object. i.e. account1 and account2 objects are moved f rom persistent state t o detached state. I

9 Now accoun t l and account2 are in non-transactional state. So even we are committ ing the transaction the modif ied I

values o f account1 and account2 are not updated i n the database. i I

/ publ ic void evict(0biect object) throws HibernateException:

i This method is used de-associates the specified object f rom session.

Table: ACCOUNT

I ACCNO BALANCE

1 I 1 001 sekhar

1002 kesavareddy 9500 1 I I I I

Application code:

1. Session session = SessionUtil.getSession(); r

4. Account account1 = (Account)session.get(Account.class,1001); 1 , 5. Account account2 = (Account)session.get(Account.class,1002);

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 I 1

An IS0 9001 : 2000 Certified Company Page 1 - I - http://javabynataraj.blogspot.com 46

Page 47: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

H ibei-i~ate-Session Methods I - - __I.

-- -- Mr.SeltharRedcly .

1 u r i

6. // Now accountl and account2 objects are in persistent state. I 7. ' 8. accountl.setName("new sekhar");

1 9. acco~1nt2.setName{"1iew kesavareddy"); 10.

, 11. session.evict(account1); 1 12. // Now accountl in detached state and account2 in persistent state.

13. j 14. session.getTransaction().commit();

i Af ter Execution: ACCOUNT

I ACCNO I NAME 1 BALANCE I 1 1001 I sekhar 1 8400 1

I

'i In the above example when w e call session.evict(account1) account l object wi l l be de-associated f rom sesslon ,

I

I object.

- 9 After calling transaction.commit(), only account2 object will be updated. Because i t is in persistent state.

i 'i evict() is used to de-associate specified object f rom the session object.

1002 1 new kesavareddy

- ! 1 public boolean contains(0bject obiect);

9500 ~

I

It is used t o check whether the object is associated with session or not. I

I I I Application code: I

I

1. Session session = SessionUtil.getSession(); I 2.

3. Account account = (Account)session.get(Account.class,1001); I 4. System.~ut.print ln(~'After calling get() method1'); ' 5. \ 6. if(session.contains(account)){ . , 7. System.out.println("account Is associated with session");

8. } else{

I 9. System.out.println("account i s not associated with session"); 10. }

I 11.

12. session.clear(); 13. System.out.println("After calling clear() method"); 1 14. 15. if(session.contains(account)){

1 16. Systeni.out.println("account Is associated with session"); 17. } else{ 1 18. System.out.println("account is not associated with session");

- 19. }

I i

publ ic boolean isConnected(L

I To check weather there is a connection is associated wi th the session or not.

1 Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

An IS0 9001 : 2000 Certified Company >

Page 8 http://javabynataraj.blogspot.com 47

Page 48: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

.- ~ .p..-p---p--.----... . . . . - .~.~- ~- -.~ Hibernate-Session Methods Mr.Sel<hai-Reddy - .

1. Session session = SessionUtil.getSession(); 2. if(session.isConnected()){

3. System.out.println("connected"); 4. }else{ 5. System.out.println("not connected"); 6. ? 7. session.close(); 8. if(session.isConnected()){ 9. System.out.println("connected"); lo. }else{ 11. System.out.println("not connected"); 12. }

public void flush() thicws HibernateException;

This method is used to synchronize session data with database.

1 Application code: I

1. Session session = Sess~onUt~l.getSession(); -

2. session.getTransact~on().begin(); I

3.

4. Account account = (Account)session.get(Account.class,1001); I

I 1 5. account.~etName(~'new sekhar"); ( 6. account.setBalance(9500); i

I 7. session.flush(); 8.

9. System.out.pr~ntln("Breank.. Point and observe the conscle.."); 10.

11. session.getTransaction().commit(); I

I 3 In the above example when we call session.flush(), Hibernate checks or compares account object data and ,I

corresponding record database. If i t finds difference, it will execute update query to update object data into the [ database record. I

9 When transaction.commit() is called it will also check object data and corresponding record data. If it f~nds I I

different ~t will update object data into database.

9 So after transaction.commit(), we should not call sessioll.flush() because when we call transaction.cornrnit() I session is in sync w ~ t h database

I , Batch Processing i 9 The execution of series of programs is called batch processing. Batch processing is the process of read~ng data --

I from a persistent store, doing something with the data, and then storing the processed data in the persistent 1 store

9 Usually we run Batch process, when computer resources are less busy.

9 We are using flush() and clear() methods of the Session API for the batch insert process.

I When you need t o upload a large number of records into our database by using hibernate we are using the below code. ! ~ - - -- - -

~ a r e s i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 i 1 An IS0 9001 : 2000 Certified Com~anv I ---. - a , --.,

Page 9 http://javabynataraj.blogspot.com 48

Page 49: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

_ Hi bel-nate-Session Methods I _

Mr.SeltharReddy . - --

1 Eg:

Session session = SessionUtil.getSession(); Transaction tx = session.beginTransaction();

for ( int i=O; i<1000GO; i++ ) { Enlployee employee = new Employee(.....); session.save(employee);

1

The prime step for using the batch processing feature is t o set hibernate.jdbc.batch-size as batch size t o a number

i either at 20 or 50 depending on object size. This shows the hibernate container tha t every X rows t o be inserted as

batch. I

Eg: - I. Session session = SessionFactory.openSess~on();

- 2. Transaction tx = sess~on.beginTransaction(); / 3.

- 4 for ( int i=O; ic100000; i++ ) { 1 5. Ernployee employee = new Employee(. ..); I 6. session.save(employee); 1 7. i f ( i % 50 == 0 ) { // Same as the JDBC batch size I 8. //flush a batch o f inserts and release memory:

I 9. session.flush(); I 10. session.clear();

11. }

I 12.1 13.

; 14. tx.commit(); i 15. session.close();

I Advantage:- Batch processing helps t o resolve the problem o f OutOfMemoryException. I I

public void flush() throws HibernateException; I I

This method is used t o synchronize the database data with session data. To understand the importance o f refresh()

I method observe the following scenarios.

Casel: w i t h single session, single t ime calling get() method:

I Table: -

I

I

I Application code:

ACCOUNT

ACCNO BALANCE

sekhar

1 1. Session session = SessionUtil.getSession(); 2. session.getTransaction(). begin();

i IVaresh i Technologies, Opp. Satyam Theatre, Arneerpet, Hyderabad, Ph: 040-23746666,23734842 An IS0 9001 : 2000 Certified C o m ~ a n v

L -- . .

Page 10 http://javabynataraj.blogspot.com 49

Page 50: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

. - -. - - - - -

Hibernate-session Methods ~ i - . ~ e l t h a r ~ e d c i y -\

3.

4. Account account = (Account) session.get(Account.class, 1001); 5. System.out.println("Before updating the database..."), 6. System.out.pr~ntln("Name : " + account.getNanie()); 7. System.out.println("Balance : " + account.getBalance()); 8. , 9. // Break .point. go t o database and modify the data 10. ACCOUIVT

I 1 1001 sekhar new 1 9500 7 / ACCNO ( NAME I 1

11. System.out.println("After updating the da t~base ..."); 12. System.out.println("Name : " + account.getName()); 13. System.out.println("Balance : " + account.getBalance()); 14. 15. session.getTransaction().commit(); 16.

17. session.close();

BALANCE 1

1 Output:

Before updaticg the database ... Name : sekhar Balance : 8400.0 After ~~pda t i ng the database ... Name : sekhar Balance : 8400.0

1 Explanation:

> When we call the get() on session object, it will h ~ t the database and get the data from the database and creates -

entity object and assign the retrieved data t o entity object. And finally that entity object will be cached on the

session object. I

When we update the data o n the database i t will not get the updated data. Just it always shows session cached I

data. , I

I CaseZ: w i th single session, multiple t imes calling get() method:

Table: ACCOUNT

I I ACCNO 1 NAME 1 BALANCE

L . , -- Page 11

I

Application code:

1. Session session = SessionUtil.getSession(); 2. session.getTransaction().begin(); 3.

4. Account account = (Account) session.get(Account.class, 1001); 5. System.out.println("Before updating the database...");

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An IS0 9001 : 2000 Certified C o m ~ a n v

I I

1001 sekhar 8400

http://javabynataraj.blogspot.com 50

Page 51: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hibernate-Session Methods - - - - --- - - MI-.SeltharReddy --

li

8.

9. // Break ..p oint ... go to database and mod~fy the data 10. ACCOUNT

m] NAME I 1 BALANCE 1

/-tsekhar new 1

9500

/ 11. account = (Account) session.get(Account.class, 1001); 12. System.out.println("After updating the database ...") ;

' 13. Systcm.out.println("Name : " + account.getName()); 14. System.out.println("Balance : " + account getBalance0);

I 15.

16. session.getTransaction().cornmit(); I 17.

18. session.close();

- Output:

I I Before updating the database ... Name : sekhar

-1 Balance : 8400.0 After updating the database ...

I Name : sekhar Balance : 8400.0

/ Explanation:

> When we call the get() on session object(second time), it will check whether the object is available in session or

not. If the object is available in session, it will not hit the database.

> In above example with Accno 1001 already account object i s already available in session object. That's why even

we call get() method on session object 2nd time, it will not hit the database. That's why it didn't display the

updated record data of database, instead it displayed previous data only.

Case 3: creating multiple sessions.

Table: ACCOUNT

1 ACCNO 1 NAME 1 BALANCE 1 ) 1001 I sekhar 1 8400 1 I I I I

Application code:

1. Session session1 = SessionUtil.getSession(); 2. Session session2 = SessionUtil.getSession(); 3.

4. Account account = (Account) sessionl.get(Account.c~ass, 1001); 5. System.out.println("Before updating the database..."); 6. Systern.out.println("Name : " + account.getName()); 7. Systern.out.println("Balance : " + account.getBalance());

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An IS0 9001 : 2000 Certified Company

http://javabynataraj.blogspot.com 51

Page 52: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

~ - - - . - - -- --- - -- . . - . . . . .. -- - . - ~ . ~- .-.

I Hibernate-Session Methods Mr.Sel<hal-Reddv 1

8. I 9. // Break ..p oint ... go to database and modify the data

ACCOUNT

1 1001 sekhar new 9500 1 I I I

10. account = (Account) session2.get(Account.class, 1001); I 11. System.out.println("After updating the database ...") ; I 12. System.out.println("Name : " + account.getName()); '

13. System.out.println("Balance : " + account.getBalance()); 1

I I

I Output: I

j Before updating the database ... / IVame : sekhar ; Balance : 8400.0 :

After updating the database ... ' Name : jekhar new I Balance : 9500.0

i Explanation:

i

! r In the above example, session2 object doesn't have any associated objects. That's why when we call get()

I method on session2, i t hit the database and executes the select query and retrieve the record and display the I i updated record of database.

i i But here every time we are creating new session object t o get the updated Record. To solve the above problem 1 I

1 we can use refresh() method.

Case4: using refresh()

Table:

1 I

ACCOUNT

1 ACCNO ) NAME / BALANCE 1 I I

I 1001 / sekhar 1 8400

I Application code: 1 I / 1. Session session = SessionUtil.getSession();

I :: Account account = (Account) session.get(Account.cIass, 1001); 4. System.out.println("Before updating the database..."); 5. System.out.println("Name : " + account.getName()); 6. System.out.println("Balance : " + account.getBalance());

8. // Break ..p oint ... go t o database and modify the data ACCOUNT

1 Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 I ACCNO

I An I S 0 9001 : 2000 Certified Com~anv I, I_ . .

-- I

Page 13

I NAME BALANCE

http://javabynataraj.blogspot.com 52

Page 53: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hibernate-Session Methods - - -- -- - --- - - - .., Mr-SekharReddy

' -2

v-1 sekhar new 1 9500 I

9. session.refresh(account); I lo. System.out,println("After updating the database ...");

11. System.out.println("Name : " + account getName()); 12. System.out.println("Balance : " + account getBalance0);

! Output: I

I Before updating the database ... I

I Name : sekhar Balance : 8400.0 ' After updating the database ..

, Name : sekhar new 1 Balance : 9500.0

I ' Explanation:

I > In the above example when we call refresh(), Hibernate compares database data and object data. If it finds any 1 - difference it will again execute select query and update the object data.

-

i public Obiect mergejobiect obiect) throws HibernateException;

Consider the following example,

Table: ACCOUNT

Application Code:

ACCNO

1001

1. session.getTransaction().begin(); 2.

3. Account accountl=(Account)session.get(Account.class, 1001); 4.

5. Account account2= new Account(); 6. account2.setAccountld(1001); 7. account2.setName("cherry"); 8. account2.setBalance(6500); 9.

10. session.update(account2); 11.

12. session.getTransaction~).commit();

, Output: org.hibernate.NonUnique0bjectException: a different object with the same identifier value was already

NAME

sekhar

1 associated with the session: [com.sekharit.hibernate.entity.Account#lOOl] I

BALANCE

8400

1 Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23745666,23734842

I- An IS0 9001 : 2000 Certified Company ---- -. -- .-

Page 14 http://javabynataraj.blogspot.com 53

Page 54: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

- - - - -. .- -- - -~ -p--.--p---..---.-.---..p.- ~. .. - -p -. -- - .- ~~ < Hibernate-Session Methods Mi-.Sel<harRedciy

i > In the above example, by calling get() method account1 object with identifier '1001' will be there in session. And

by calling update() method account2 object with identifier '1001' is also trying t o come into session object. It is I

I the problem. To avoid this we will go for merge().

:z e :% 15: 1 1 1 1 rl .#:I - ~t 1:: .:I .

3: e :z: 5. I 13 i-1 -1-4 111 114 ate 1:: 11 I

I

I

I

I > In the above example, If we use merge() method instead of update() method, we won't get exception. Just I 1

I I

i 9 We can't place two different objects(of same type) with the same identifier in the sesslon object.

-- _-------- -- ---- .- /-

I: .3 11: I: CI I-A r~t .I I: -1 111 111 -1 ;I 'I--. '-._

/- .->' -'-. --,,-

----.. -- - _-- ''------

---- -- ,/-- --. -. ( 13i:~ilL.~rlt2<-l IIIUI 2 :y ... <.--- --/--- '------ c- \-. -- --- -

I I account2 object data will be updated into database. i

1 > merge() method behave differently in different scenarios. merge() method can insert, update, merge the data. -

1 I

i To understand more clear about merge() method consider the following cases. !

- I

1 Case 1: merge() method insert the data I

j Table: ACCOUNT ! I ! BALANCE

I sekhar

Application Code: 1. Session session = SessionUtil.getSession(); 2. session.getTransaction().begin();

4. Account account = new Account(); 5. account.setAccountld(1002); 6. account.setName("cherry"); 7. account.setBalance(4500.00); 8.

9. session.merge(account); 10.

1 After execution: I

ACCOUNT

1 ACCNO I NAME 1 BALANCE 1 ( 1001 1 Sekhar 1 8400 1

1002 1 cherry 1 4500 / 1 I I

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 1 An IS0 9001 : 2000 Certified Company

Page 15 http://javabynataraj.blogspot.com 54

Page 55: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

- .- - - - - - - - - - -- - -- - - - - - - . - -- -

Hibernate-Session Methods Mr.Sel<harRec!dy

I 3 In the above example, when we call merge() method, first i t will try to load Account object with identifier 1002,

As we don't have a record in ACCOUNT table with ACCNO#1002, it will insert Account(1002, cherry, 4500.00j

object into database.

. Case 2: merge() method update the data I

Table: ACCOUNT

ACCNO IVAM E

Sekhar

1002 cherry 4500

Application Code: 1. Session session = SessionUtil.getSession(); 2. session.getTransact~on().begin(); 3.

4. Account account = new Account(), 5. account.setAccountld(1002); 6. account.setName("yeIlareddy"); 7. account.setBalance(5600.00); 8.

9. session.merge(account); 10. 11. session.getTransaction().commit(); 12.

13. session.close();

1 After executiori: ACCOUNT

I ACCIVO NAME I BALANCE ( Sekhar

yellareddy 5600 i 1 P In the above example, when we call merge() method, first i t will try to load Account object with identifier 1002,

As we have a record in ACCOUNT table with ACCNO#1002, i t will try t o update with latest Account(1002,

- 1 yellareddy, 5600.00) object into database. I

I Case 3: merge() method merge the detached object data into persistent object

Table: ACCOUNT

1 ACCNO 1 NAME 1 BALANCE 1 Sekhar

yellareddy

Application Code: 1. Session session = SessionUtil.getSession(); 2. session.getTransaction().begin(); 3. 4. . Account accountl=(Account)session.get(Account.class, 1001);

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 An IS0 9001 : 2000 Certified Company

........... . . . . . . . . . . . . . . . . . . . . . . . ....... .. .......................... ..... page-%- http://javabynataraj.blogspot.com 55

Page 56: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

, ..__ .- . . ---.--~-- - .-- .~,

' Hibernate-Session Methods I -

Mr.SekharReddy .-

.L - , : I

I ,-,

1 1 5.

1 6. Account account2= new Account(); - ..

1 7. account2.setAccountld(1001); i 8. account2.setNarne("kesavareddy"); . ~

9, account2.setBalance(6500); i I 10. /--. , 11. session.merge(account2];

12. I . . i 13. session.getTransaction().commit(); j 14. session.close();

1 After execution: ACCOUNT

ACCNO BALANCE

yellareddy

I I , In the above example, Before llth line; accountl is in Persistent state, and account2 in detached state. I . - , - . ,

/ > In the above example, when we call merge() method it will check, weather there i i any object associated with

the session with same identifier(1001). -

> In our example, accountl#1001 object is already associated with session, So merge() method now, Copy the I < - .

state of accoun2#1001 object state into accountl#1001 object. After llth line also, account1 is in Persistent ,

j state, and account2 in detached state.

1 3 When the transaction is committed, As acountl#lOOl(Persistent-state) data is modified, so i t will hit the update

I !

query, t o update session data with database.

Q) What is the difference between merge and update? i

i update () : When the session does not contain an persistent instance with the same identifier, and if i t is sure use update I for the data persistence in hibernate.

i I

merge (): Irrespective of the state of a session, i f there is a need t o save the modifications at any given time, use I

merge(). !

, public Serialiiable getldentifieriobiect object) throws HibernateException; I

To know the object identifier value at the runtime, we need to call getldentifierfobject object)

I Application code: 1

I Account account = (Account)session.get(Account.class,1001);

I Serializable id = session.getldentifier (account);

System.out.println("Identifier of Account is : "+ id); '1 1

Transaction methods: I

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 1 An I S 0 9001 : 2000 Certified Company --- I-

Page 17- http://javabynataraj.blogspot.com 56

Page 57: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

-- -- - - - - - -- - - - - -pp.--p-- -

- Hi bernate-Sessio~~ Methods Mr.Sel<harRedcl y

I We can apply Transaction management by using transaction object I I

We can get the Transaction object in 2 ways.

Transaction transaction = session.beginTransaction();

I Transaction transaction = session.getTransaction();

beginTransaction0 return different transaction objects. For each and every request transaction object creates a ~ l c l

begins new transaction context.

I

getTransaction0 return same transaction object for every request. We need to call begin() on transaction objecl l o

begin the transaction

public void persist(0bject object) throws HibernateException;

3 This method is same as save(), but save(object) returns identifier and persist(object) doesn't return any value. I i > When we are using generator classes to generate the identifier, At that time i f we want to know identifier value -

which is generated by generator class, then we can go for save() method.

1 3 When we don't want t o know generated identifier, then i e can fo i persist() method.

. 1 . ' M e t hod Signatures:

public void replicate(0bject object, ReplicationMode replicationMode) throws HibernateException;

This method is used to move the object from detached state to persistent state.

ReplicationMode has attributes described below.

P ReplicationMode.0VERWRITE : this mode reads the processing request and affect the result in database. After

committing the transaction the results are stored in database.

P ReplicationMode.lGN0RE : this mode ignores the processed request. ~ e a n s i t doesn't affect the result in

datadase.

r ReplicationMode.LATEST-VERSION : this mode reads the processing request and affect the result in database.

P ReplicationMode.EXCEPTl0N : this mode reads the processing request and affect the result the database.

1 Application Code: 1. Session session = SessionUtil.getSession();

I ;: session.getTransaction(). begin();

I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

I An IS0 9001 : 2000 Certified Company

- - -- Page 1g http://javabynataraj.blogspot.com 57

Page 58: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

-- - -- . . - -. -

Hibernate-Session Methods MrSekharReddv --'

Account account = (Account) session.get(Account.class, 1001); System.out.println("After get() method"); if (session.contains(account)) {

Systeni.out.println("associated"); 1 else i

System.out.println("not-associated");

1

session.evict(account); System.out.println("After evict() method"); if (session.contains(account)) {

System.out.println("associated"); } else {

System.out.println("not-associated");

}

session.replicate(account, ReplicationMode.LATEST-VERSIOIV); Systern.out.println("After replicate() method"); i f (~ession.contains(account)) {

System.out.println("associated"); } else {

System.out.println("not-associated");

1 public void IockiObiect obiect, LockMode IockMode) throws HibernateException; i I If we are updating some group of tables no other person is allowed to update the records on the same table until our

I work is completed. So using lock(), i f we lock the record i t doesn't allow updating from different users till we commit the

I transaction.

1 Hibernate defines Several lock modes

I P LockMode.NONE : Don't go to the database unless the object isn't in either cache. I

I 3 LockMode.READ : Bypass both levels of cache, and perform a version check to verify the object in memory is

the same version as that currently exits in the databse. !

1

P LockMode.UPGRADE: Bypass both levels of cache, and perform a version check and obtain a database-level I I I pessimistic loc upgrade lock, i f that is supported. I I

I P LockMode.UPGRADE-NOWAIT: same as UPGRADE , but use a SELECT .... FOR UPDATE NOWAIT on Oracle.

This disables waiting for concurrent lock releases, thus throwing a locking exception can't be obtained. I

I - 9 LockMode.WRITE: Is obtained automatically when Hibernate has written t o a row in the current Transaction.

I This is an internal mode and can't bespecified explicitly. 1

I NOTE: this method got deprecated in Hibernate 4.x version I I

I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842 i h. An IS0 9001 : 2000 Certified Company I -

pa e 1 F ' http://javabynataraj.blogspot.com 58

Page 59: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

. ~ ~

- ~ ~ . A ~ ~ - . ~ - . ~

Hibernate-Multi Database Communication By Mr. SeltharReddy

1 Q.) How to work with MYSQL database? !

I

install the MYSQL database. I C? Select All Programs 3 MYSQL 3 MYSQL 5.0 3 mysql command line client

I

Give password i 4. In the MYSQL prompt give the following comr-riands

o Create database mydb I o Use mydb I !

! 6 Now perform database operations normally. I

C When you open mysql command line client again just give password, and give use mydb command. (don't give !

create database mydb) i I I

' Q.)How t o connect t o mul t ip le Databases using Single Configuration File in Hibernate? I

I OracleDataBase Table: 1 I

I SQL> desc account;

i Name Null? TY pe

I - - - - - _ - - - - _ - - - _ - - - - -- - - - - - - - - - - - - - - - - - - - - _ _ _ _ _ - _ - _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ -

1 ACNO IVUMBER(5)

i BAL NUMBER(8,2)

1 IVaresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842

I An I S 0 9001 : 2000 Certified Company -

Page http://javabynataraj.blogspot.com 59

Page 60: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

, ~~~ .- ~ ~ ~ ~. ~ ~ .

I Hibel-nate-Multi Database Commu~~ication I ---

By Mr. SeltharReddy - . . . .a . .'i -\ 1 M y S Q L D a t B e Table

; + ----.-. + -.-----.-- + ----.- +- - - - - +-- --------- + ---<- --+

I I I Field I Type ( Null I Key ( Default I Extra ( I

I 1 acno 1 int(5) 1 YES 1 1 NULL 1 I i I 1 name I c h a r ( l 5 ) j Y E S I I NULL ( 1

Account.iava 1. package coin. neo. hibernate . VO; 2. 3. public class Account (

4. prlvate ~ n t accno; * - 5. prlvate Strlng name; 6. privatedoublebalance; 7. 8. publlc int getAccno0 { I 9 . return accno; 10. 1 j ll. 12. publlc void seiAccno (lnt accIlo) (

13. this.accno = accno; 14. 1 15. / 16. public Strrng getName() (

17. return name; 1 18. I 19. 20. public vold setName (String name) [

21. this.name = name; 22. I 23. 24. public double getBalance ( ) [

25. return balance; 26. I 27. 28. public void setBalance(doub1e balance) {

29. thls.balance = balance; 30. I

1 31.

I Naresh i Technologies, Opp. Satyam Theatre, ~ r n e e r ~ e t , Hyderabad, Ph: 040-23746666,23734842 1

An I S 0 9001 : 2000 Certified Company I - Page 2 http://javabynataraj.blogspot.com 60

Page 61: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

~. .~ .~ ...................................... . . ~~ - -. . . - - ~

- ~ Hibernate-Multi Database Communication 7 By Mr. SekharReddy I

1. package com.neo.hibernate.dao; 2 . 3. import crg.hibernate.Session; 4. lrilport org. hibernate. SessionFactory; 5. import org. hibernate. cfg . C ~ n f iguration; 6. 7. import com.neo.hibernate.util.Conn~ctionUti1; 8. import com.neo.hibernate.vo.Account; 9. 10. public class PracticeDao { 11. public static void main(String[] args) {

12. 13. Configuration configuration = new Configuration(); 14. configuration.configure("com/neo/hibernate/config/hibernate.cfg.xml"); 15. SessionFactcry factory = configuration.buildSessionFactory(j; 16. / / Oracle 17. Sesslon oracleSession =

18. factory.openSession(ConnectionUtil.getOracleConnecti~n()); 19. Account oracleAccount = (Account) 20. oracleSession.get(Account.class, 1001); 21. System.out.println("0racle Account table details . . . . " ) ;

22. System.out.println("Accno : "+oracleAccount.getAccno()); 23. System.out.println("Name : "+oracleAccount.getName()); 24. System.out.println("Ba1ance : "+oracleAccount.getBalance() ) ;

25. //Mysql 26. Session mysqlSession =

27. factory.openSession(ConnectionUtil.getMysqlConnection() ) ;

28. Account mysqlAccount= (Account)mysqlSession.get(Account.class, 1001); 29. System.out.println("Mysq1 Account table details . . . . " ) ; 30. System.out.println("Accno : " -1 -mysq lAccoun t .ge tAccno( ) ) ;

31. System. out. println ("Name : "+mysqlAccount. getName ( ) ) ;

32. System.out.println("Balance : "+mysqlAccount.getBalance()); 33. 34. 1 35. ) 36.

ConnectionUtil.iava 1. package com.neo.hibernate.ut11; 2. 3. import java . sql .Connection; 4. import java.sql.DriverManager; 5. lmport java.sql.SQLException; 6. 7. public class ConnectionUtil { 8. static {

9 . try { 10. Class.forName("oracle.jdbc.driver.OracleDriver~'); 11. Class.forName("com.mysql.jdbc.Driver"); 12. 1 catch (Exception e) { 13. e.printStackTrace0; 14. 1 15.

I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 i An IS0 9001 : 2000 Certified Company I

1.- Page 3 http://javabynataraj.blogspot.com 61

Page 62: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

.- ~~ ~ - ~- .

( Hibernate-Multi Database Coi~~munication -- By Mr. SekharReddy --- - -- .- ..-?I 1 , ., .

': 16. 1 ,I

public static Con~ectioc get0racleConnection() ( Connection ~ j i 1 i i - j ~ ~ i , 3 : i = 11~11;

try ( connection = Driv?rManager.getConnection(

"jdbc:oracle: t h i r : : Plocalhost: 1521:XEW, "system", } catch (SQLExcepcion e) (

e. printStaekTrac? ( ) ; 1

return connection;

1

public static Connection ge~MysqlConnection() { Connection connection = null;

try { connection = DriverManager.getConnection( "jdbc:mysql://loca1host:33O6/mydb", "root",

) catch (SQLException e) { e . printStackTrace ( ) ;

1

I 37. return connectlon; 1 3 8 . ( 39. ' 4 0 . 1 I

"tiger") ; 'I I I

i Account.hbrn.xm! 1 1. c?xml version="l. 0" encoding="UTF-8"3'. !

1 2. < ! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3 . O / / E l l r ' ! "http://hibernate.sourceforge.neL/!i1berate-mapping-3.O.dtd" >

3. 4 . <hibernate-mapping> 5 . <class name= "com. neo. hiberi~a te. vo. Accountr' table= f'ACCOUNT"> 6. <id name="accno" column="ACNO"></id> 7. <property name="name"></property> 8 . <property name="balai?ceM column= "BAL"></property> 9. </class> 10. </hibernate-mapping>

hibernate.cfg.xml 1. <?xml version='l.Or encoding='UTF-6'?> 2 . <!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Conflguratlon DTD

3. @ / / E N u 3. "http://hibernate.sourceforge.net/hibernate-configuration-3.O.dtd"> 1 4. <hibernate-configuration> 5. <session-factory> I 6. <property name="dialect">org.hibernate.dialect.OracleDialect</property> - I

7. <mapping resource="com/neo/h~bernate/mapping/Account.hbm.xmlf' /> 8. </session-factory> I 9. </hibernate-configuration>

I I

Q.)How to connect to multiple Databases using Multiple Configuration Files in Hibernate? I I

IVaresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 I An IS0 9001 : 2000 Certified Company I . . . . . . . . . . . . ~ . .. . ... - .- -. . -- 'I

Page 4-' http://javabynataraj.blogspot.com 62

Page 63: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

~ i b e r n a t e - ~ u l t i Database Con~munication Bv M r . SelcharReddv

~ r a c l e ~ a t a ~ a s e Table: i

SQL> desc account; 1 Name Null? TY i

1

......................................... -------- -----------------

ACNO NUMBER(5)

NAME VARCHAR2(10)

BA L NUMBER(8,2)

1 ( Field I Type I Null I Key ( Default I Extra (

+ ------- + ---------- + ------ + ----- + --------- + ------- +

I I acno 1 int(5) I YES I I NULL 1 I

I ( name ( char(l5) I YES ( ( NULL I 1 I

( bal 1 f loat 1 YES I I NULL 1 1

' Account.iava

! Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

I An IS0 9001 : 2000 Certified Company Page 5- http://javabynataraj.blogspot.com 63

Page 64: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

. . . . . - . . . ~ -.,

I Hibernate-Multi Database C o ~ ~ ~ ~ ~ ~ u i ~ i c a t i o n - .. .. - . . - - --- By -- Mr. SeltharReddy - -1 - , - . . -- I

,,I 1 . package corn. ne2. h ibe rna t e . i-c; 2 . 3 . p u b l i c c l a s s Account {

4. p r i v a t e i n t accno; 5 . p r i v a t e S t r i n g n a m ? ;

: 6 . p r i v a t e double ba lance ; 7 . 8 . p u b l i c i n t gethccno ( ) i

1 9 . r e t u r n accno; i

1 0 . i 1 1 . / 1 2 . p u b l i c void set,?ccnc ( i n t ?:cn.:?) :

1 3 . t h i s . accno = -::I::: ;

1 4 . ? ; 1 5 . 1 1 6 . p u b l i c S t r i n g getName() {

1 1 7 . r e t u r n name; 1 1 8 . )

1 9 . : 2 0 . p u b l i c void setName ( S t r i n g nan~e j {

j 2 1 . this .name = nasa; i 2 2 . 1 i 2 3 . 1 2 4 . p u b l i c double ge tBa l ance0 (

! 2 5 . r e t u r n belance; i 2 6 . 1 i 2 7 . j 2 8 . p m l i c void setBalance (double i ialance) i i 2 9 . t h i s . balance = halance; 1 3 0 . 1 : 3 1 . 1 3 2 . )

PracticeDao.iava 1. package com.neo.hib?rnate.dao; 2 . import 0rg:hibernate. Sessj-on; 3. import com.neo.hibernate.util.SessionUti1; 4. import com.neo.hibernate.vo,Account; 5 . 6 . public class PracticeDao {

7 . public static void main(String [ I args) { 8. / / Oracle 9. Session oraclesession = SessionUtil.getOracleSession(); 1 0 . Account oracleAccount = (Account)oracleSession.get(Account.class, 11. 1001) ; 1 2 . System.out.println("Oracle Account table details . . . . " ) ; 1 3 . System. out. println ("Accno : "toracleAccount. getAccno ( ) ) ; 14. System.out.println("Name : "toracleAccount.getName()); 1 5 . System.out.println("Ba1ance : "toracle~ccount.getBalance()); 1 6 . //Mysql 1 7 . Session mysqlSesslon = SessionUtil.getMysqlSession(); 1 8 . Account mysqlAccount= (Account)mysq1Session.get(Account.c1ass, 1001); 19. System.out.println("Mysq1 Account table details . . . . " ) ; 2 0 . System.out.println("Accno : "tmysqlAccount.getAccno());

1

1 Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 1 I-.

An IS0 9001 : 2000 Certified Company --- -- i

Page 6 http://javabynataraj.blogspot.com 64

Page 65: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

.~ . ~ -- ~ -. ~ ~. . ~ ~ ~~ .~

,~ Hibernate-Multi Database Colnmunication By Mr. SeltharReddy

, 21. System. out .prlntln ("Name : "tmysqlAccount. aetl.!a:ne ( ) ) ;

, 22. System.out.pr~1ltln("5alance : "tmysqlAccount.qer.Balance() ) ;

23. 1 2 4 . 1

I SessionUtil.java - 1. package corr,. neo. hibernate. util;

2. 1 3. import 01-9. hibernate. S-ssion; 4. import org.hibernate.SessionFactory;

1 5. import org. hibernate. cfg . Configuration; i 6. import org . j a:<en. Eunction . Conca tFunction;

1 7. 8. public class SessionUtil {

9. 1 10. private static SessionFactory oraclFactory; 11. private static SessionFactory mysqlFactory;

1 12. I stacic ( 13. n r ? c l Factory = new Configuration i : . ranf igure (

. I ;;: "com/neo/hibernate/config/~racle.hibernate.cfg.xml") -- .buildSessionFactory();

' 1 16. mysqlFactory = new configuration() .configure( , I 17. "corn/neo/hibernate/config/~nys~ql. hibernate. cfg. xml") - 18. .buildSessionFactory(!;

1 19. 1 20.

\ I ;;: public static Session getOracleSession() [ return oraclFactory.openSession();

23. 1 1 24.

25. public static Session getMysqlSession() { 1 26. return mysqlFactory.openSession();

27. 1 28. public static void main(String[] args) { 1 29. System.out.println(getMysqlSession() ) ;

30. 1 ' 31, !

1 Account.hbm.xrnl 1. <?xml version="l. 0" encoding="UTF-8Ir?>

1 2. <!DOCTYPE hibernate-rnapplng PUBLIC "-//Hibernate/Hlbernate Mapping DTD 3.O//ENU I "http://h~bernate.sourceforge.net/hibernate-mappng-3.0td" > 3. 4. <hibernate-mapping> 5. <class name= "corn. neo. hibernate. vo. Accoun t" table= "ACCOUNT ">

I 6 - <id name="accno" column="ACNO"></id>

- 7. <property narne="name"></property> 8. <property name= "balance" column="BAL1'></propert y> 1 9. </class>

I 10. </hibernate-mapping>

I I I Naresh I l.echnolog~es, Opp. Satyam Theatre, Ameerpet, ~ ~ d e r a b a d , Ph: 040-23746666, 23734842 I

An I S 0 9001 : 2000 Certified Company I I _ _ I

Page 7 http://javabynataraj.blogspot.com 65

Page 66: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hibernate-Multi Database Comn~unication Bv Mr. SeltharReddv : - 2. <!DOCTYPE hibernate-configuration P U B L I C M - / / H i b e r n a t o , i S i b e r n a ~ : e C3:lfiguration DTD 1 3 . O//EN1' 3 . lqhttp: //hiberliate. soilrc?forge . n e t / h i b e r n a t e - c o n f i g u r a ; i : ~ ; - . C . 5L?":,

1 4 . - ,

i 5. <hiberna~-3--;l:~i?i- iil;icat i~:i'. / 6. <session-f act~ory;

. .

I 7 . <proL2;+rL:,: ;:,;fie- ' ' j ~ ~ , ~ ~ ~ ">erg. l-liberllate. di315~;;. ; . i . . i ~ > i i [ ~ ~ - ~ ~ ~ < / p r c p e r t ) / > ' 8. <property !?are= "zci~~~eccisn. url ">jdbc:mysql : //loca?i~ss::: -- . .. .. - - . . - > j C ; G . ' r i ~ - . . - ~ ' - .- .-.,>,</property> ~ -- 9. <property name= "coi~nection. usernan~e">root</prope~- t ;~ : ; , I 10. <prcpert;: n ~ r ~ , ~ - - " ~ ~ ~ : ~ ! ~ i 3 z t 1 i ? ~ . p ~ ~ ~ ~ ~ ~ - d " > t i g e r < / ~ r ~ p e r - ~ : ~ , : ~ ~

/ 11. <property !??me= "connection. c'river~class">com .n~ysql. i d b e . D~:I.:;ar</property> 12. <rnappi!?g rescurile= "co!ii/neoihiberna te/nlappii~g...~.?z~i~ci? :r. ?!hi!. .<rill " / > 1 13. </session-factor!:; 14. </hibernate-c3r.f iauratio~n>

oracle.hibernate.cfa.xml 1. <?xml version= '1.0' encoding= 'UTF-8 ' ?> 2. <!DOCTYPE hibernate-configuration PUBLICu-//Hibernate/Hiberna~e Configuration DTD

3. O//EMV 3. "http://hibernate.scurceforqe.net/hibernate-co11figuration-3.O.dtd"> 4. < h i b e r n a t e - c c n f i g u r a t i o n > 5 . <session-factory> 6. <property n-1ln~="dia1ect">crg.h~ibernate.dialect.Orac?e9Cialect</property>

i 7 . <property name="cor1nection.url">jdbc:oracle.:thin:@localhcst:1521:XE</property> --

8. . " ~ ' . . ' , " - L . , .- -,.^- ! I - - . > . - , , . . I . ; - .,<. ,,-. i3!ne11>S\,Stem.',/ F:v . , . . - . . . . > - i - : . ' - . . . ., . . . . . . . . . :-. . L ' . ' - L . ' ..., P - . L .. . '

<property name= "con~~ection .password">tiger</property> 10. . <property

name=rfconnection.driver~classf'>oracle.jdbc.driver.OracleDriver</property> 12. <mapping resource= "corn/neo/hiberna te/rnappinq/Accouli t . hbrii. xml " />

14. </hibernate-configuration>

I

Naresh i Technologies, Opp. satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 An IS0 9001 : 2000 Certified Company I -

page-g--.- http://javabynataraj.blogspot.com 66

Page 67: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hibernate-Generators using XML -- - - - -- -- - - . .

Mr.SekharReddy I -- - . - -.

-riWI

Generator classes

> Generator classes are used to generate the 'identifier' for a persistent object. i.e. While saving an object into the

I database, the generator Informs to the hibernate that, how the prlrllaly key value for the new record is golng t o

generate

3 Hibernate using different primary key generator algorithms, for each algorithm internally a java class is there for its

1 implementatiorl

i ' .

3 All Generator classes has to implement 'org.hibernate.id,ldentifierGeneratorU interface, And has to override

i generate() metliod. The logic t o generate 'identifier' has to write in this method

I > In built-in ger\e~ator classes, identifier generation logic has implemerited by using JDBC.

1 > If we want we can write the user defined generator class and it should implement

'org.hibernate.id.ldentifierGenerator' interface and has to override generate() method.

- > To configure generator class we can use <generator /> tag, which is ttie sub element of <id/> tag

- > <generator/> tag has one attribute called "class" with which we can specify generator class-name. I i

9 While configuring <generator /> tag in mapping file, if we need to pass anv parameters to generator class then we

! can use <param /> tag, which i s the sub element of <generator/> tag,

1 Example: HEM

<hibernate-niapp~ng> 1

I <class .. > I ~ <Id .... >

I 1 <generator class="generator-class-namet'> I

<param name="param-nameH>param-value </param> I

I </generator>

I </rd>

i 1

</class> I </hibernate-mapping>

I I I I

1 The following are the list of main generators we are using in the hibernate framework I i

1 1. sequence

1 2 . assigned

I 3. increment

I 5. seqhilo

I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666,23734842

-- An IS0 9001 : 2000 Certified Company - -- -

P a F I - http://javabynataraj.blogspot.com 67

Page 68: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

1 6, identify \

7. native

8. uuid

1 9 guid

10. select

11. foregin

I 1 In the above generators list, are used for int,long,short types of primary keys, and uuid, guid are used when the pri~nary

key column type is String type (varchar2)

1.) sequence (or~.hibernate.id.SequenceGenerator)

I ' > This generator class is database dependent i t means, we cannot use this generator class for all the database, we should know whether the database supports sequence or not before we are working with it -

-.

P Not has the support with MySq! I - ~

P Here we write a sequence and it should be configured in HBM file and while persisting the object in the database ,,

sequence is going to generate the identifier and it will assign to the Id property of persistent object, Then it will store ' :

the persistent object into Database.

NOTE: MYSQL even won't allow to create SEQUENCE Object in that database. Then where is the question of calling that

f rom hibernate applicat~on? 1

NOTE: When we configured generator class for an entity, then we no need to assign identifier value t o entity object /

whiie saving the entity. Even we assign the identifier value to entity, it will not consider our assigned value, it will use I

! / generator class generated value as identifier value. It applies to all generator classes. I

1 Steps to work with "sequence" Renerator I

Step 1: Create a sequence

1 SQL> CREATE SEQUENCE ACCNO-SEQ START WITH 1000 INCREMENT BY 1

To get next value

SQL> SELECT ACCNO-SEQ.NEXTVAL FROM DUAL;

To get current value

I SQL> SELECT ACCNO-SEQ-CURRVAL FROM DUAL;

Step 2: configure the sequence in hbm file.

Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 I

An I S 0 9001 : 2000 Certified Company -. I -

Page 2 http://javabynataraj.blogspot.com 68

Page 69: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

....... . . . . . . . . -- -- - -- ..................... . ....... ........ ... -- -

Hibernate-Generators using X M L ! \- . . . . . - - --- . . .

Mr.SekharReddp ., - ,

rims i

I I

1 <id name=" accountld " column="ACNO"> <generator class="org.hibernate.id.SequenceGenerator" >

! <param name="sequence">ACCNO-SEQ </param> </generator>

1 </id>

I (OR) <id name=" accountld " column="ACCNO">

- 1 <generator class="sequenceU />

</ld>

I 1 NOTE: If we don't configure any sequence name then i t will take default sequence name(HIl3ERNATE-SEQUENCE ). But 1 I hibernate won't create the sequence, i f already sequence i s available with name "HIBERNATE-SEQUENCE", then it is ! ! I ' used by hibernate. Otherwise hibernate raises the exception. I 1 NOTE: But remember, if we enable hbrn2ddl.auto property in hibernate configuration file, then hibernate will create the 1

. . - database objects i f they are not exist.

I

NOTE: It i s not advisable to use the default sequence, always prfer to create a different sequence to each enitity 1 I seperately. I I

1 Step 3: Create the entity and save it without assigning identifier. i 1

1. Session session = SessionUtil.getSession(); I 2 . session. getTransaction ( ) .begin ( ) ;

3.

1 4. Account account = new Account ( ) ;

5. account. setName ("sekhar") ;

1 6. account. setBalance (5000) ; - 7.

8. Serializable id = session. save (account) ; I 9 . 10. System. out. println (flAccount is created with accno : "+id) ;

( 11. session. getTransaction ( ) . commit ( ) ;

I Naresh i Technologies, Opp. Satyam Theatre, Arneerpet, ~ ~ d e r a b a d , Ph: 040-23746666, 23734842 I I

An IS0 9001 : 2000 Certified Company I

Page 3- 1

http://javabynataraj.blogspot.com 69

Page 70: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

-- - -- -- - -- - - -

; Hibei-nate-Generators using XML Mr.SekharRecici\,__

IVOTE: When we execute the above code, we can find the sequence execution query on the console, which is used to get

identifier for the saving enitity.

1 Internal Code

1 public class SequenceGenerator implements PersistentldentifierGenerator, Configurable {

I public static final String SEQUENCE = "sequence";

I . 1 public void configure(. .){

I sequenceName = PropertiesHelper.getString(SEQUENCE, params, "hibernate-sequence"); // default sequence name parameters = params.getProperty(PARAMETERS);

1

public Serializable generate(. . . ) { Preparedstatement st =. . ..prepareSelectStatement(sql); Resultset rs = st.executeQuery(); rs.next(); Serializable result = . . iterate results ...

return result;

1 1

I NOTE: \\ow onwards for the following generator classes I just give the HBM configuration, you can u;e the same entity saving logic(which we used in the above example as part of step-3) t o test them.

/ 9 This generator supports in all the databases I I 9 This is the default generator class used by the hibernate, i f we do not specify <generator/> element under <id/>

1 element, then hibernate by default assumes it as "assigned" generator class.

9 I f generator class is assigned, then the programmer is responsible for assigning the identifier value to entity before

saving into the database

I 1 . HBM:

<id name=" accountld " column="ACCNO"> <generator class="org.hibernate.id.Assigned" />

</id >

(OR)

! I Naresh i Technologies, Opp. Satyam 'Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 1

An I S 0 9001 : 2000 Certified Company , -

Page 4--' http://javabynataraj.blogspot.com 70

Page 71: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

--- ---- - . . ~ ~ . - ~ ~ ~ . ... - - - .~ --I

' Hi bernate-Generators using X M -- L -- Mr.SekharReddy . . - -- .- 1 , . . . -%a I

-

<id name=" accountld " column="ACCNO" />

Internal Code: I

public class Assigned implements Identif~erGenerator, Conf~gurable { public Serializable generate( ... ) {

final Serializable id = . . . get the developer glven id. i f (id==null) {

throw new Identif~erGenerat~onException( "ids for this class must be manually assigned before calling save(): " t entityName);

1 I

return id;

1 i }

I

NOTE. Whrle testing don't asslgne ident~fier value to entity and then try to save entity then ~t throws I - IdentifierGenerationException.

! NOTE: While testing with assigned generator class, identifier type in enity should be some object type rather than i

I I primitive type.

! I

' > This generator supports in all the databases, so i t is database independent generator class. I I This generator is used for generating the id value for the new record by using the formula

Max of id value in Database + 1 i

> If there is no record initially in the database, then for the first t ime this will saves primary key value as 1. 1 I i

. HBM:

<id name="accountld" column="ACCNO"> I I

<generator class="increment" /> </id>

I (OR) 1

<id name=" accountld " column="ACCNO"> I <generator class=" org.hibernate.id.lncrementGenerator " /> I </id>

1 Internal Code:

;:;+ -*!v-.5 *>:.,;. .;, ,x :, ~ :.,,<,;: ..,.. .-... --.- <!..:;.....-r@ I public class ~;@$@;@<~~tJj:$?~g.~$~~~$ implements IdentifierGenerator, Configurable { -

~ public synchronized Serializable generate(. . .){

I i f (sql!=null) { getNext( session );

I 1 return ...f i nal number after adding '1'

, - I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842

. . . -. - - -. - - .. . . . . .- . . . . . . .. . . . . . - . . . - -- An I S 0 9001 : 2000 Certified Company -~ ~ . - - - -. - P a g e s - http://javabynataraj.blogspot.com 71

Page 72: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

~ ~. ~ - ~ ~. . - -. . -..- --. - , -3

1 H i bernate-Generators using XML Mr.Sel<harReddy _-.,

public void configure(. . .) {

sql = "select max(" + column + ") from " + buf.toString();

I

private void getNext( Sessionlmplementor session ) { !

Preparedstatement s t = ....p repareSelectStatement(sql); Resultset rs = st.executeQuery(); i f ( rs.next() ) {

next = rs.getLong(1) + 1;

1

1 The HiLo Algorithm -

I The HiLo (High/Low) algor~thm knows how to generate unique number series using t w o values: the high and the low. I

-I he high value is used as a base for a series (or range) of numbers, while the size of this series is donated by the low 1 value. A unique series is generated using the following steps: I I ' 1) Load the and atomically increment the high value 1

2) Multiple the high value by the low value (max*low), the result is the first number (lower bound) of the current series 3) The las t number (higher bound) of the current series is donated by the following calculation: (max*low)+low-1 I 4) When a client needs to obtain a number the next one from the current is used, once the entire series has been / exhausted the algorithm goes back to step 1

6'

1 I I

I Example: suppose that the current high value in the database is 52 and the low value i s configured to be 32,767. When I

the algorithm starts is loads the high value from the database and increments it in the same transaction (the new high I

value in the database is now 53). The range of the current numbers series can now be calculated: 1

I Lower bound = 52*32767 = 1,703,884

I Upper bounds = 1,703,884+32,767-1= 1,736,650 1

All o f the numbers in the range of 1,703,884 to 1,736,650 can be safely allocated t o clients, once this keys pool has been 1 exhausted the algorithm needs to access the database again to allocate a new keys pool. This time the h i ih value is 53 (immediately incremented t o 54) and the keys range is: I

Lower bound = 53*32,767 = 1,736,651 Upper bounds = 1,736,651+32,767-1 = 1,769,417

And so on

I The big advantage of this algorithm is keys preallocation which can dramatically improve performame. Based on the low I

I I IVaresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 1 I- An IS0 9001 - : 2000 Certified Company _I-

Page 6 http://javabynataraj.blogspot.com 72

Page 73: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

-- -- - - - - - - - - - - - - . - - -- -- - - - - -- - - -- - - -- - - - -

Hibernate-Generators using XM L M1-.Seltl?arReddy ,

value we can control the database hit ratio. As illustrated using the 32,767 we hit the database only once in a 32,767 , ' generated keys. The downside (at least by some people - but in my opinion this is a none-issue) is that each time the

algorithm restarts it leaves a 'hole' in the keys sequence.

Hibernate has several HiLo based generators: TableHiLoGenerator, MuItipleHiLoPerTableGecierator,

, Seq uenceHiLoGenerator

TableHiLoGenerator

A simple HiLo generator, uses a table to store the HiLo high value. The generator accepts the following parameters

I o table - t he table name, defaults to 'hibernate-unique-key' I

o column - the name of the column to store the next high value, defaults t o 'next-hi'

o max-low - the low number (the range) defaults t o 32,767 (Short.MAX-VALUE) I i

A table HiLogenerator which can store multiple key sets (multiple high values each for a different entity). This is useful ! when we need each entity (or some of the entities) has its own keys range. It supportsthe following parameters: I

o table - the table name, default t o 'hibernate-sequences' 1 o primary-key-column - key column name, defaults to 'sequence-name'

o value-column - the name of the column to store the next high value, defaults to 'sequence-next-hi-value'

, o primary-key-value - key value for the current entity (or current keys set), default to the entity's primary table

name

/ o primary-key-length - length of the key column in DB represented as a varchar, defaults t o 255 o max-low - the low numer (the range) defaults t o 32,767 (Short.MAX-VALUE)

I I

The generator uses a single table to store multiple high values (multiple series), when having multiple entities using the I same generator Hibernate matches an entity t o a high value using the primary-key-value which is usually the entity

name. A sample table can look like

I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 An IS0 9001 : 2000 Certified Company

I

Page 7 http://javabynataraj.blogspot.com 73

Page 74: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

.~ .~ ............ .-.-pp--p----.---pp- ........... .....

r Hibernate-Generators using XM L MI-.Sel<harRecldv '1

A simple HiLo generator but instead of a table uses a sequence as the high value provider.

o sequence - the sequence name, defaults t o 'hibernate-sequence'

o max-low - the low number (the range) defaults to 9.

, r This generator is database independent , r hilo uses a hi/lo alogorithm t o generate ~ d e n t ~ f ~ e r s . 1 r Hilo algorithm generate identifiers based on the given table and column(stores high value). Default table is

'hibernate-unique-key' column is 'next-hi'. I

HBM: I - I < ~ d name="accountld" column="ACCNO">

<generator class="hilo" > <param name="table">HIGH-VAL-TAB</param>

, <param ndme="column">HIGH-VAL-COL</param>

I Internal code ! class TableHiLoGenerator extends TableGenerator {

I I 1 class TableGenerator { I

i i public static final String COLUMN = "column";

public static final String DEFAULT-COLUMN-NAME = "next-hi"; I I

i public static final String TABLE = "table"; public static final String DEFAULT-TABLE-NAME = "hibernate-unique-key"; 1

3 It is just like hilo generator class, But hi lo generator stores its high value in table, where as seqhilo generator I stors its high value in sequence. I

IVaresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 I L. An IS0 9001 : 2000 Certified Company

I

Page 8 http://javabynataraj.blogspot.com 74

Page 75: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

. - - - - . - -. . . . ~~ ~ -~~ .~ ~~ -. -~ ~~ ~ . . . . .

. . , Hibernate-Gelieratol-s using X M L Mr.SeltliarReddg7

1 HBM: I -

<id name="accountld" column="ACNO"> <generator class="seqhilo" >

I <param n a m e = " s e q u e n c e " > ~ ~ ~ ~ ~ - S E Q < / p a r a m >

<param name="max-lo">S</param> </generator>

</ld>

(OR)

1 <id name=" accountld " coiumn="ACCNO"~ <generator class="seqhiloU >

<param name="org.hibernate.id.SequenceHiLoGenerator ">ACCNO-SEQ</param> i <param name="max-lo">5</param>

</generator> 1 </id>

Q.) How t o work wi th MYSQL database? a install the MYSQL database. c3 Select All Programs 3 MYSQL 3 MYSQL 5.0 3 mysql command line client a Give password

In the IMYSQL i iomp't give the following commands o create database mydb o use mydb

Now perform database operations normally. c3 When we login to database next time onwards don't give create database command, just give use command.

9 This is database dependent, actually it's not working in oracle. 9 Identity columns are support by DB2, MYSQL, SQL SERVER, SYBASE and HYPERSYNCSQL databases. 9 This identity generator doesn't needs any parameters to pass

Syntax t o create ident i ty columns in MYSQL database: CREATE TABLE STUDENT( SNO INT(10) NOT NULL AUTO-INCREMENT, COURSE CHAR(2O), FEE FLOAT, NAME CHAR(20), PRIMARY KEY (SNO)

1

HBM: 1 <id name=" accountld " column="ACNO"> --

<generator class="identity" /> 1 </id>

/ Example: To create identity columns in MYSQL database.

I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 I !

An I S 0 9001 : 2000 Certified Company : I

page9 -- http://javabynataraj.blogspot.com 75

Page 76: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

- . -. .- - -- - - - - - - - - -- -- - -- - - - Hibernate-Generators using XML ---- ~ i - . ~ e k h a r ~ e d d ~ '- . I

7.) native I 3 native i s not having any generator class because, it uses internally identity or sequence or hilo generator

classes. I P native picks up identity or sequence or hilo generator class depending upon the capabiliti2s of the underlying

* I

database. I -

H BM: <id name="accountld" column="ACIVO">

I IVaresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 I

An I S 0 9001 : 2000 Certified Company -1 Page 10 http://javabynataraj.blogspot.com 76

Page 77: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

Hibernate-Generators using; X M L

NOTE: test with niysql and oracle 1 C3 If we connect to mysql i t takes identity.

C3 If we connect to oracle it takes sequence. I

I d uuid uses a 128-b~t uuid algorithm to generate identifiers of type string.

I d uuid generated identifier i s unique with in a network. I c3 uuid algorithm generates identifier using IP address. . ,.

C3 uuid algor~thm encodes identifier as a string(hexadecima1 digits) of length 32. 1 C3 Generally uuld is used to generate passwords.

1 HBM: - <id name="accountld" column="ACNO"> ~ <generator class="uuid" >

- </generator> </id>

<id name=" accountld " column="ACCNO"> <generator class="org.hibernate.id.UUIDHexGenerator " > </generator>

1 </id>

'

select: select retrieves a primary key assigned by a database trigger by selecting the row by some unique key and I

1 retrieving the primary key value. I

I

1

I guid: uses a database generated guid string on MS-SQL and MYSQL. I

foreign: foreign uses the identifier of another associated object. Usually uses in conjunction with a <one-to-one>

I primary key association. I

- User Defined Generator class

- When we feel the existing generator classes are not fit for our requirement, then we will go for user defined

I I generator class.

1 Steps t o implement user defined generator class. i

i

1 Step 1: Take any java class and implement org.hibernate.id .IdentifierGenerator and override generate() method. In this 1 I method implement the identifier generation logic as per the requirement. I

I

I - I Naresh i Technologies, Opp. Satyam Theatre, Ameerpet, Hyderabad, Ph: 040-23746666, 23734842 I

I An IS0 9001 : 2000 Certified Company -. -

Page 11 http://javabynataraj.blogspot.com 77

Page 78: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 78

Page 79: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 79

Page 80: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 80

Page 81: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 81

Page 82: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 82

Page 83: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 83

Page 84: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 84

Page 85: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 85

Page 86: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 86

Page 87: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 87

Page 88: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 88

Page 89: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 89

Page 90: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 90

Page 91: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 91

Page 92: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 92

Page 93: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 93

Page 94: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 94

Page 95: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 95

Page 96: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 96

Page 97: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 97

Page 98: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 98

Page 99: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 99

Page 100: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 100

Page 101: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 101

Page 102: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 102

Page 103: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 103

Page 104: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 104

Page 105: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 105

Page 106: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 106

Page 107: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 107

Page 108: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 108

Page 109: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 109

Page 110: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 110

Page 111: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 111

Page 112: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 112

Page 113: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 113

Page 114: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 114

Page 115: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 115

Page 116: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 116

Page 117: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 117

Page 118: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 118

Page 119: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 119

Page 120: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 120

Page 121: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 121

Page 122: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 122

Page 123: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 123

Page 124: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 124

Page 125: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 125

Page 126: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 126

Page 127: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 127

Page 128: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 128

Page 129: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 129

Page 130: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 130

Page 131: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 131

Page 132: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 132

Page 133: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 133

Page 134: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 134

Page 135: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 135

Page 136: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 136

Page 137: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 137

Page 138: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 138

Page 139: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 139

Page 140: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 140

Page 141: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 141

Page 142: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 142

Page 143: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 143

Page 144: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 144

Page 145: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 145

Page 146: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 146

Page 147: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 147

Page 148: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 148

Page 149: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 149

Page 150: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 150

Page 151: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 151

Page 152: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 152

Page 153: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 153

Page 154: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 154

Page 155: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 155

Page 156: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 156

Page 157: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 157

Page 158: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 158

Page 159: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 159

Page 160: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 160

Page 161: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 161

Page 162: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 162

Page 163: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 163

Page 164: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 164

Page 165: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 165

Page 166: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 166

Page 167: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 167

Page 168: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 168

Page 169: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 169

Page 170: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 170

Page 171: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 171

Page 172: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 172

Page 173: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 173

Page 174: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 174

Page 175: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 175

Page 176: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 176

Page 177: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 177

Page 178: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 178

Page 179: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 179

Page 180: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 180

Page 181: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 181

Page 182: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 182

Page 183: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 183

Page 184: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 184

Page 185: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 185

Page 186: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 186

Page 187: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 187

Page 188: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 188

Page 189: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 189

Page 190: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 190

Page 191: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 191

Page 192: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 192

Page 193: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 193

Page 194: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 194

Page 195: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 195

Page 196: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 196

Page 197: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 197

Page 198: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 198

Page 199: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 199

Page 200: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 200

Page 201: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 201

Page 202: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 202

Page 203: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 203

Page 204: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 204

Page 205: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 205

Page 206: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 206

Page 207: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 207

Page 208: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 208

Page 209: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 209

Page 210: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 210

Page 211: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 211

Page 212: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 212

Page 213: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 213

Page 214: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 214

Page 215: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 215

Page 216: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 216

Page 217: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 217

Page 218: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 218

Page 219: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 219

Page 220: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 220

Page 221: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 221

Page 222: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 222

Page 223: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 223

Page 224: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 224

Page 225: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 225

Page 226: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 226

Page 227: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 227

Page 228: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 228

Page 229: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 229

Page 230: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 230

Page 231: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 231

Page 232: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 232

Page 233: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 233

Page 234: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 234

Page 235: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 235

Page 236: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 236

Page 237: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 237

Page 238: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 238

Page 239: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 239

Page 240: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 240

Page 241: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 241

Page 242: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 242

Page 243: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 243

Page 244: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 244

Page 245: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 245

Page 246: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 246

Page 247: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 247

Page 248: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 248

Page 249: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 249

Page 250: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 250

Page 251: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 251

Page 252: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 252

Page 253: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 253

Page 254: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 254

Page 255: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 255

Page 256: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 256

Page 257: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 257

Page 258: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 258

Page 259: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 259

Page 260: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 260

Page 261: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 261

Page 262: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 262

Page 263: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 263

Page 264: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 264

Page 265: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 265

Page 266: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 266

Page 267: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 267

Page 268: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 268

Page 269: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 269

Page 270: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 270

Page 271: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 271

Page 272: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 272

Page 273: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 273

Page 274: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 274

Page 275: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 275

Page 276: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 276

Page 277: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 277

Page 278: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 278

Page 279: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 279

Page 280: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 280

Page 281: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 281

Page 282: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 282

Page 283: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 283

Page 284: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 284

Page 285: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 285

Page 286: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 286

Page 287: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 287

Page 288: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 288

Page 289: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 289

Page 290: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 290

Page 291: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 291

Page 292: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 292

Page 293: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 293

Page 294: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 294

Page 295: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 295

Page 296: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 296

Page 297: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 297

Page 298: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 298

Page 299: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 299

Page 300: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 300

Page 301: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 301

Page 302: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 302

Page 303: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 303

Page 304: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 304

Page 305: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 305

Page 306: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 306

Page 307: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 307

Page 308: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 308

Page 309: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 309

Page 310: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 310

Page 311: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 311

Page 312: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 312

Page 313: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 313

Page 314: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 314

Page 315: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 315

Page 316: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 316

Page 317: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 317

Page 318: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 318

Page 319: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 319

Page 320: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 320

Page 321: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 321

Page 322: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 322

Page 323: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 323

Page 324: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 324

Page 325: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 325

Page 326: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 326

Page 327: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 327

Page 328: Hibernate Complete Notes by Sekhar Sir JavabynataraJ

http://javabynataraj.blogspot.com 328