<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5336970567114925463</id><updated>2011-07-28T09:16:32.131-07:00</updated><title type='text'>Java Spots</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javaspots.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://javaspots.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Fatma</name><uri>http://www.blogger.com/profile/17918736985122359745</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5336970567114925463.post-3556348277014695031</id><published>2009-04-30T02:44:00.001-07:00</published><updated>2009-04-30T02:44:44.909-07:00</updated><title type='text'>Use of the same entity name twice</title><content type='html'>I faced an exception while using jpa:&lt;br /&gt;&lt;br /&gt;"Use of the same entity name twice"&lt;br /&gt;&lt;br /&gt;The exception occured due to the existence of two classes with @Entity have the same name&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@Entity ( name="BeanName")&lt;br /&gt;    The Entity annotation has attribute called name which is the name of the entity ,its default value is the class name&lt;br /&gt;@table( name="tableName")&lt;br /&gt;    The table annotation has attribute called name which is the name of the table ,its default value is the entity name ,and if there is no entity name,then the default will be class name&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So the problem in this exception that I used @Entity giving the two entities the same name,and there is problem in that because the container uses the entities names to uniquely identify them and therefore the solution is to use @table and make the two enties use the same table name but use different entity name.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5336970567114925463-3556348277014695031?l=javaspots.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaspots.blogspot.com/feeds/3556348277014695031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5336970567114925463&amp;postID=3556348277014695031' title='40 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/3556348277014695031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/3556348277014695031'/><link rel='alternate' type='text/html' href='http://javaspots.blogspot.com/2009/04/use-of-same-entity-name-twice.html' title='Use of the same entity name twice'/><author><name>Fatma</name><uri>http://www.blogger.com/profile/17918736985122359745</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>40</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5336970567114925463.post-2603964177401904098</id><published>2009-04-18T12:15:00.000-07:00</published><updated>2009-04-19T07:37:02.557-07:00</updated><title type='text'>EGJUG day</title><content type='html'>Today I have attended the EGJUG day.&lt;br /&gt;&lt;strong&gt;First session&lt;/strong&gt; by Ahmed Hashim was about the EGJUG and its objectives, &lt;strong&gt;JDC&lt;/strong&gt; (Java Developer Conference) and its objectives, how they arrange for it, etc …&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Second session&lt;/strong&gt; was about Spring Security (Acegi), the speaker talked about Spring Security which is a project that introduce services that enhance the jEE security&lt;br /&gt;Then he talked about Spring Security Features like&lt;br /&gt;-Web URL authentication&lt;br /&gt;- Method Authentication Invocation&lt;br /&gt;- Channel Security&lt;br /&gt;- Human user detection&lt;br /&gt;- LDAP support&lt;br /&gt;- JSP Tag Library support&lt;br /&gt;- Support for SSO&lt;br /&gt;- Integration with Servlet container Authentication&lt;br /&gt;Then he talked about Spring Security vs. JEE security. JEE security is container dependant, it is not easy for testing, and advanced authentication is missing.&lt;br /&gt;Then he made simple example using spring security in authentication by user name and password.&lt;br /&gt;Then he made another example about security on methods. This is done by using annotations.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Third session&lt;/strong&gt; was about Web UI- Dev tools.&lt;br /&gt;Speaker talked about the objectives of these tools which are, Inspecting HTML DOM, Debugging JavaScript, CSS issues, HTML sniffing , Fixing Errors.&lt;br /&gt;He introduced examples of Firefox tools such as &lt;strong&gt;FireBug&lt;/strong&gt; which is a great tool which enable us to test, debug and edit HTML, CSS and JavaScript files, &lt;strong&gt;ColorZilla&lt;/strong&gt; which display the color of the pixel currently under the mouse, &lt;strong&gt;JSView&lt;/strong&gt; which is a tool enable you to see the source code of external files like JS, CSS, etc, &lt;strong&gt;Measurelt&lt;/strong&gt; which draw a ruler across any web page to check the width, height, etc, &lt;strong&gt;LiveHttpHeaders&lt;/strong&gt; which is used for HTTP sniffing.&lt;br /&gt;And also he introduced an IE tool which is &lt;strong&gt;IE Dev toolbar&lt;/strong&gt; (Internet Explorer Developer toolbar).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Fourth session&lt;/strong&gt; was about &lt;strong&gt;AOP&lt;/strong&gt; (Aspect Oriented Programming).the speaker talked about the need for AOP and that it is used to enable separation of concerns. This is done by breaking down the program into separate parts which are concerns.&lt;br /&gt;He talked about the crosscutting problem. This is when some concern crosscut many parts in the system. Example of this is logging, security.&lt;br /&gt;OOP (Object Oriented Programming) fail with crosscutting problems.&lt;br /&gt;But AOP solve this problem by making separation of concerns.&lt;br /&gt;AOP also solves the problems of low cohesion and tight coupling.&lt;br /&gt;AOP saves the developer time in rewriting the same code.&lt;br /&gt;AOP is a concept and AspectJ is an implementation for that concept.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5336970567114925463-2603964177401904098?l=javaspots.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaspots.blogspot.com/feeds/2603964177401904098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5336970567114925463&amp;postID=2603964177401904098' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/2603964177401904098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/2603964177401904098'/><link rel='alternate' type='text/html' href='http://javaspots.blogspot.com/2009/04/egjug-day.html' title='EGJUG day'/><author><name>Fatma</name><uri>http://www.blogger.com/profile/17918736985122359745</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5336970567114925463.post-3619371869394859895</id><published>2008-12-22T23:35:00.001-08:00</published><updated>2008-12-22T23:35:52.769-08:00</updated><title type='text'>De facto Standards and De jure Standards</title><content type='html'>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Verdana;" &gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Verdana;" &gt;De facto Standards and De jure Standards:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Verdana;" &gt;&lt;span style="color:#330099;"&gt;De facto standard:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Verdana;" &gt;&lt;span style="color:#6600cc;"&gt; &lt;/span&gt;is a standard that is set because it is practically become dominant. It doesn't have formal approval, but widely accepted and followed by the community.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Verdana;" &gt;Struts is a de facto .It is an open source framework that is used to create web applications&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;although it is not&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;in the JEE specs of sun.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Verdana;" &gt;Other examples of de facto standards are Spring, Hibernate&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Verdana;" &gt;&lt;span style="color:#333399;"&gt;De Jure standard:&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Verdana;" &gt;&lt;span style="color:#333399;"&gt; &lt;/span&gt;it is rules or specifications that are officially set by an organization. It has formal approval.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Verdana;" &gt;JSF is a de jure (standard) because it is in JEE spec.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Verdana;" &gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;Advantage of being JSF a standard not an implementation is that many companies compete to make good implementation for it&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Verdana;" &gt;Other examples of de jure standards are EJB, JAF, JAX-WS, JDBC, JMS, JNDI, JPA and JSTL.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Verdana;" &gt;Finally, by combining some de facto standards and some de jure standards, we can a build a good system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5336970567114925463-3619371869394859895?l=javaspots.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaspots.blogspot.com/feeds/3619371869394859895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5336970567114925463&amp;postID=3619371869394859895' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/3619371869394859895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/3619371869394859895'/><link rel='alternate' type='text/html' href='http://javaspots.blogspot.com/2008/12/de-facto-standards-and-de-jure.html' title='De facto Standards and De jure Standards'/><author><name>Fatma</name><uri>http://www.blogger.com/profile/17918736985122359745</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5336970567114925463.post-6595691804030796579</id><published>2008-12-22T23:34:00.001-08:00</published><updated>2008-12-22T23:34:55.873-08:00</updated><title type='text'>Service granularity</title><content type='html'>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span class="subhead11"&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Georgiafont-family:Helvetica;" &gt;&lt;strong&gt;Service granularity&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Georgiafont-family:Helvetica;" &gt;&lt;br /&gt;Service granularity refers to the scope of functionality a service exposes. &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Georgiafont-family:Helvetica;" &gt;Fine-grained services&lt;/span&gt;&lt;/b&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Georgiafont-family:Helvetica;" &gt; might be services that provide a small amount of business-process usefulness, such as basic data access. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Georgiafont-family:Helvetica;" &gt;Coarse-grained services &lt;/span&gt;&lt;/b&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Georgia;color:black;"  &gt;offer a set of related business functions rather than a single function&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Georgiafont-family:Helvetica;" &gt; so they are constructed from lower-level services, components, and objects that are intelligently structured to meet specific business needs. These coarse-grained services can be created from one or more existing systems by defining and exposing interfaces that meet business-process requirements.&lt;/span&gt;&lt;span style="mso-bidi-language: AR-EG;font-family:Georgia;" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span class="subhead11"&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Georgiafont-family:Helvetica;" &gt;&lt;strong&gt;Services as composite interfaces&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Georgiafont-family:Helvetica;" &gt;&lt;br /&gt;Using coarse-grained interfaces, a system of services controls access to the objects referenced by each service. While each service may be implemented as an abstraction on a group of finer-grained objects, the objects themselves can be hidden from public access. Each service can be implemented by grouping objects, components, and fine-grained services, and exposing them as a single unit through the use of facades or interfaces.&lt;/span&gt;&lt;span style="mso-bidi-language: AR-EG;font-family:Georgia;" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="mso-bidi-language: AR-EG;font-family:Georgia;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span class="subhead11"&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Georgiafont-family:Helvetica;" &gt;&lt;strong&gt;Service composition&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Georgiafont-family:Helvetica;" &gt;&lt;br /&gt;Service composition allows you to compose applications and processes using services from heterogeneous environments without regard to the details and differences of those environments. Service composition is much more achievable if the services are constructed with coarse-grained interfaces. With effectively designed and composed coarse-grained services, a business expert can productively compose new business processes and applications.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="LINE-HEIGHT: 115%; FONT-FAMILY: Georgiafont-family:Helvetica;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="FONT-FAMILY: Georgia;font-family:Helvetica;" &gt;Finally regarding to Web Service s, I want to mention that &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-family:Georgia;color:black;"&gt;Web services technology provides a way of defining coarse-grained services that access the right amount of business logic.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5336970567114925463-6595691804030796579?l=javaspots.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaspots.blogspot.com/feeds/6595691804030796579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5336970567114925463&amp;postID=6595691804030796579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/6595691804030796579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/6595691804030796579'/><link rel='alternate' type='text/html' href='http://javaspots.blogspot.com/2008/12/service-granularity.html' title='Service granularity'/><author><name>Fatma</name><uri>http://www.blogger.com/profile/17918736985122359745</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5336970567114925463.post-5813184629472761443</id><published>2008-12-22T08:59:00.000-08:00</published><updated>2009-01-09T09:24:46.610-08:00</updated><title type='text'>Introduction to web services</title><content type='html'>&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;font-size:130%;color:#ff6600;"&gt;&lt;strong&gt;Life Before Web Services&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;Traditional distributed architecture before web service is not universally interoperable. Technologies before web service like DCOM or Object Request Brokers (ORBs) based on the CORBA specification were solutions to distributed issues but these technologies has some problems which led to trying to find new technology ,for example:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;COM is linked to Microsoft so we need a technology that is not related to any platform.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;Corba&lt;b&gt; &lt;/b&gt;usually has trouble with firewalls. &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;COM requires installation on the same machine and DCOM requires installation on the same network. So we need a more distributed model.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;Some of these traditional technologies are not suitable for heterogeneous environment. So we need a way of communication between heterogeneous applications.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;So there was a need to a technology that resolves these problems and enables application-to-application interaction on the Web. We need away to deal with different communication protocols. So web service uses a technology that solved these issues.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;If many applications need a piece of logic .Why make this over and over again? Why there is no such a thing that can offer applications some components that can be used many times. The solution for all that is &lt;b&gt;Web Services&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:Arial;font-size:130%;color:#ff6600;"&gt;&lt;strong&gt;Advantages of Web Services:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;&lt;i&gt;&lt;span style="color:#4f81bd;"&gt;1-Interoperability&lt;/span&gt;&lt;/i&gt;: This is done by giving different applications a way to link their data. Also any Web service can interact with any other Web services.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;&lt;i&gt;&lt;span style="color:#4f81bd;"&gt;2-Reusability: &lt;/span&gt;&lt;/i&gt;we don't have to recreate business logic that somebody else has already created so it helps us generate our application faster. &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;&lt;i&gt;&lt;span style="color:#4f81bd;"&gt;3-http-based:&lt;/span&gt;&lt;/i&gt; Web service based on http and most of the Internet's proxies and firewalls allow HTTP traffic.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;&lt;i&gt;&lt;span style="color:#4f81bd;"&gt;4-xml –based:&lt;/span&gt;&lt;/i&gt;&lt;span style="color:black;"&gt; Web services uses xml as a base in its technology, xml is a standard language and easy to use and learn and most widely used.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;&lt;i&gt;&lt;span style="color:#4f81bd;"&gt;5-loosely coupled:&lt;/span&gt;&lt;/i&gt;&lt;span style="color:black;"&gt; As it allows the web service to be in a place and the client in another. So changes in web service implementation don't affect the clients.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;o:p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;&lt;i&gt;&lt;span style="color:#4f81bd;"&gt;6-Platform and language independent:&lt;/span&gt;&lt;/i&gt; so we can use web service to communicate between any types of applications reside in different platforms&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;span style="color:#365f91;"&gt;Service:&lt;/span&gt;&lt;/b&gt;&lt;span style="color:black;"&gt; is the endpoint of a connection. It is a function that is well defined and does not depend on the state of other services.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;span style="color:#365f91;"&gt;Web services: &lt;/span&gt;&lt;/b&gt;is the integration of some services that are used to make them accessible using standard internet technology. So web service is a piece of software that can be exposed, discovered and consumed.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:Arial;font-size:130%;color:#ff6600;"&gt;&lt;strong&gt;The major web services technologies&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;1-xml (Extensible Markup Language)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;2-SOAP (Simple Object Access Protocol)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;3-WSDL (Web Service Definition Language)&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;4-UDDI (Universal Description, Discovery and Integration) Directory lookup for web service.&lt;/span&gt;&lt;/p&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:Arial;font-size:130%;color:#ff6600;"&gt;&lt;strong&gt;Steps in Web Services communication&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;1-The service Provider exposes a web service and publishes it to a directory of services (UDDI directory).It uses WSDL to define its web service.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;2-The service consumer searches for a service using the UDDI directory&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;3-The UDDI directory sends a WSDL document to the service consumer .This WSDL document contains information about the service, where to find it and how to call it.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;4-The service consumer sends a SOAP message using the xml in the WSDL document .This message contains a request to the service provider.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p dir="ltr" style="MARGIN-BOTTOM: 0pt"&gt;&lt;span style="font-family:arial;"&gt;5-The service provider send a response back to the service consumer.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" dir="rtl" style="MARGIN: 0in 0in 0pt"&gt;&lt;span dir="ltr" style="mso-bidi-language: AR-EG;font-family:arial;" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5336970567114925463-5813184629472761443?l=javaspots.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaspots.blogspot.com/feeds/5813184629472761443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5336970567114925463&amp;postID=5813184629472761443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/5813184629472761443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/5813184629472761443'/><link rel='alternate' type='text/html' href='http://javaspots.blogspot.com/2008/12/introduction-to-web-services.html' title='Introduction to web services'/><author><name>Fatma</name><uri>http://www.blogger.com/profile/17918736985122359745</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5336970567114925463.post-35809706635982051</id><published>2008-12-22T08:58:00.000-08:00</published><updated>2008-12-22T08:59:07.209-08:00</updated><title type='text'>Complete example on useing stored procedures with hibernate</title><content type='html'>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:CourierNewPSMT;font-size:10;"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#e36c0a;"&gt;An Outline of An Example&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#e36c0a;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;We want to represent a User in Java. we may define something like:&lt;/p&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;public class User {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;private String id;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;private String gender;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;protected final Logger log = LogManager.getLogger(this.getClass());&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;public User() {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;public void setId(String id) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;    &lt;/span&gt;log.info("Set id: " + id);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;    &lt;/span&gt;this.id = id;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;public String getId() {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;return this.id;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;public void setGender(String gender) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;    &lt;/span&gt;log.info("Set gender: " + gender);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;this.gender = gender;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;public String getGender() {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;return this.gender;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#e36c0a;"&gt;MySQL Schema Tables&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#e36c0a;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Pretty straightforward. Now, let’s say we have two tables in MySQL that collectively represent the User object:&lt;/p&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;DROP TABLE IF EXISTS User;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;CREATE TABLE User&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;(&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;id&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;VARCHAR (50) NOT NULL,&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;PRIMARY KEY(id)&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;); &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;DROP TABLE IF EXISTS Pref;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;CREATE TABLE Pref&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;(&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;User_id VARCHAR (50) NOT NULL,&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;gender VARCHAR (2) NOT NULL,&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;PRIMARY KEY (User_id),&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;FOREIGN KEY (User_id) REFERENCES User (id)&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;); &lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;Although the above example with the gender would be better as a 1-to-1 field within one table (i.e., the User table), one could imagine some other real-world examples using 1:N relationships using phone numbers, usernames, etc. So how can we &lt;i&gt;map and bind&lt;/i&gt; these two tables to one object using stored procedures?&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#e36c0a;"&gt;Hibernate 3.x Mapping File&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#e36c0a;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;First we must provide a mapping file to Hibernate. It looks like the following:&lt;/p&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;hibernate-mapping&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-tab-count: 1"&gt;        &lt;/span&gt;&amp;lt;class name=”User” table=”User”&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-tab-count: 2"&gt;               &lt;/span&gt;&amp;lt;id name=”id” column=”id” type=”java.lang.String”&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-tab-count: 3"&gt;                       &lt;/span&gt;&amp;lt;generator class=”assigned”/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-tab-count: 2"&gt;               &lt;/span&gt;&amp;lt;/id&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-tab-count: 2"&gt;               &lt;/span&gt;&amp;lt;property name=”gender” column=”gender” type=”java.lang.String”/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-tab-count: 1"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&amp;lt;loader query-ref=”getUser”&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-tab-count: 1"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&amp;lt;sql-insert callable=”true”&amp;gt;{call createUser (?,?)}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-tab-count: 1"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&amp;lt;sql-update callable=”true”&amp;gt;{call updateUser (?,?)}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-tab-count: 1"&gt;        &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&amp;lt;sql-delete callable=”true”&amp;gt;{call deleteUser (?)}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-tab-count: 1"&gt;        &lt;/span&gt;&amp;lt;/class&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-tab-count: 1"&gt;        &lt;/span&gt;&amp;lt;sql-query name=”getUser” callable=”true”&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;           &lt;/span&gt;&amp;lt;return alias=”user” class=”User”&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;              &lt;/span&gt;&amp;lt;return-property name=”id” column=”id” /&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;              &lt;/span&gt;&amp;lt;return-property name=”gender” column=”gender” /&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;           &lt;/span&gt;&amp;lt;/return&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;{ call getUser(?) }&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&amp;lt;/sql-query&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;/hibernate-mapping&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;For anyone who has read older documents on Hibernate notice the lack of OUT parameters to MySQL. Hibernate 3.x apparently uses JDBC and possibly some introspection to figure out row counts, etc.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#e36c0a;"&gt;MySQL Stored Procedures&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#e36c0a;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The stored procedures in the MySQL schema look like the following:&lt;/p&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;DELIMITER //&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;DROP PROCEDURE IF EXISTS getUser;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;/*&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt; * Get a user.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt; */&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;CREATE PROCEDURE getUser (IN inId VARCHAR(50))&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;SELECT u.id, p.gender FROM User AS u, &lt;?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /&gt;&lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;Pref&lt;/st1:city&gt; &lt;st1:state st="on"&gt;AS&lt;/st1:state&gt;&lt;/st1:place&gt; p WHERE u.id = inId AND p.User_id = u.id;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;END&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;DROP PROCEDURE IF EXISTS createUser;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;/*&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt; * Create a user profile.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt; */&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;CREATE PROCEDURE createUser (IN inGender VARCHAR(2), IN inId VARCHAR(50))&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;INSERT INTO User (id) VALUES (inId);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;INSERT INTO Pref (User_id, gender) VALUES (inId, inGender);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;END&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;DROP PROCEDURE IF EXISTS updateUser;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;/*&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt; * Update a user profile.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt; */&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;CREATE PROCEDURE updateUser (IN inGender VARCHAR(2), IN inId VARCHAR(50))&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;UPDATE Pref SET gender = inGender WHERE User_id = inId;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;END&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;DROP PROCEDURE IF EXISTS deleteUser;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;/*&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt; * Delete the user.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt; */&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;CREATE PROCEDURE deleteUser (IN inId VARCHAR(50))&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;BEGIN&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;DELETE from Pref WHERE User_id = inId;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;DELETE from User WHERE id = inId;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;END&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;//&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;So what does the code within our data access object in Java look like? Although it uses the Spring Framework HibernateDAOSupport class, more on that in a minute, here is the code:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#e36c0a;"&gt;DAO Java Code&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:#e36c0a;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;public boolean createUser(User user) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;boolean status = false;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Session session = this.getSessionFactory().openSession();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.clear();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.beginTransaction();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.save(user);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.getTransaction().commit();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.close();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;status = true;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;return status;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;/**&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;* Get a user.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;*/&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;@SuppressWarnings("unchecked")&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-tab-count: 1"&gt;        &lt;/span&gt;public User getUser(User user) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;User u = null;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Session session = this.getSessionFactory().openSession();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Query query = session.getNamedQuery("getUser");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;query.setString(0, (String)user.getId());&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;List result = query.list();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;if (result == null) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;log.info("Could not retrieve user.");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;} else {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;Iterator i = result.iterator();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;if (i.hasNext()) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;u = (User) i.next();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;if (i.hasNext()) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;log.fatal("DB returned too many users.");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;u = null;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.close();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;return u;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;} &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;/**&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;* Update a user profile.&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;*/&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;public boolean updateUser(User user) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;boolean status = false;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;User luser;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;String gender;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;if (user == null) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;log.error("Cannot process invalid user.");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;return status;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;gender = user.getGender();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Session session = this.getSessionFactory().openSession();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.clear();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.beginTransaction();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Query query = session.getNamedQuery("getUser");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;query.setString(0, (String)user.getId());&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;List result = query.list();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;if (result == null) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;log.error("Could not retrieve user.");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;session.close();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;return status;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;} &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Iterator i = result.iterator();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;if (i.hasNext()) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;luser = (User) i.next();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;} else {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;log.error("Could not retrieve user from list.");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;session.close();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;return status;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;luser.setGender(gender);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.update(luser);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.getTransaction().commit();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.close();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;status = true;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;return status;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;/**&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;* Delete&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;*/&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt; &lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;public boolean deleteUser(User user) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;boolean status = false;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;User luser;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;if (user == null) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;log.error("Cannot process invalid user.");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;return status;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Session session = this.getSessionFactory().openSession();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.beginTransaction();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Query query = session.getNamedQuery("getUser");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;query.setString(0, (String)user.getId());&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;List result = query.list();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;if (result == null) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;log.error("Could not retrieve user.");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;session.close();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;return status;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;} &lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Iterator i = result.iterator();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;if (i.hasNext()) {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;luser = (User) i.next();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;} else {&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;log.error("Could not retrieve user from list.");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;session.close();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;       &lt;/span&gt;return status;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;log.info("Now deleting user...");&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.delete(luser);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.getTransaction().commit();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;session.close();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;status = true;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;o:p&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;return status;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:CourierNewPSMT;font-size:10;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" dir="rtl" style="MARGIN: 0in 0in 10pt"&gt;&lt;span lang="AR-EG" style="FONT-FAMILY: Arial; mso-bidi-language: AR-EG; mso-ascii-font-family: Calibrifont-family:Calibri;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5336970567114925463-35809706635982051?l=javaspots.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaspots.blogspot.com/feeds/35809706635982051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5336970567114925463&amp;postID=35809706635982051' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/35809706635982051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/35809706635982051'/><link rel='alternate' type='text/html' href='http://javaspots.blogspot.com/2008/12/complete-example-on-useing-stored.html' title='Complete example on useing stored procedures with hibernate'/><author><name>Fatma</name><uri>http://www.blogger.com/profile/17918736985122359745</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5336970567114925463.post-7934431807345989618</id><published>2008-12-22T05:45:00.000-08:00</published><updated>2008-12-22T05:53:33.603-08:00</updated><title type='text'>Using stored procedures with Hibernate</title><content type='html'>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#e36c0a;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Introdunction&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#e36c0a;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;A shortcoming in earlier releases of Hibernate was the lack of support&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;for stored procedures. Hibernate 3 introduces support for queries via stored procedures and functions. The stored procedure/function must return a resultset as the first out-parameter to be able to work with Hibernate. An example of such a&lt;/span&gt;&lt;span style="font-family:Arial;"&gt; &lt;span style="color:black;"&gt;stored function in Oracle 9 and higher is as follows:&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;CREATE OR REPLACE FUNCTION selectAllEmployments&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;RETURN SYS_REFCURSOR&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;AS&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;st_cursor SYS_REFCURSOR;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;BEGIN&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;OPEN st_cursor FOR&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;SELECT EMPLOYEE, EMPLOYER,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;STARTDATE, ENDDATE,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;REGIONCODE, EID, VALUE, CURRENCY&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;FROM EMPLOYMENT;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;RETURN st_cursor;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;END;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;To use this query in Hibernate you need to map it via a named query.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;sql-query name="selectAllEmployees_SP" callable="true"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;return alias="emp" class="Employment"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;return-property name="employee" column="EMPLOYEE"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;return-property name="employer" column="EMPLOYER"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;return-property name="startDate" column="STARTDATE"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;return-property name="endDate" column="ENDDATE"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;return-property name="regionCode" column="REGIONCODE"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;return-property name="id" column="EID"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;return-property name="salary"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;return-column name="VALUE"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;return-column name="CURRENCY"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;/return-property&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;/return&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;{ ? = call selectAllEmployments() }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;/sql-query&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none; mso-list: l0 level1 lfo1"&gt;&lt;span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbolfont-family:Symbol;color:black;"  &gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 100% 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Arial;color:black;"&gt;Executing the stored procedure is the same as using a named HQL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;query:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;Query query = session.getNamedQuery("&lt;b&gt;selectAllEmployees_SP&lt;/b&gt;");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;List results = query.list();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none; mso-list: l0 level1 lfo1"&gt;&lt;span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbolfont-family:Symbol;color:black;"  &gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 100% 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Arial;color:black;"&gt;If your stored procedures take parameters, you can set them using the&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;Query.setParameter(int, Object) method. Your stored procedures&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;must return a result set to be usable by Hibernate. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none; mso-list: l0 level1 lfo1"&gt;&lt;span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbolfont-family:Symbol;color:black;"  &gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 100% 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Arial;color:black;"&gt;Notice stored procedures currently only return scalars and entities. &amp;lt;return-join&amp;gt; and&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&amp;lt;load-collection&amp;gt; are not supported.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:#e36c0a;"&gt;&lt;span style="font-size:130%;"&gt;Rules/limitations for using stored procedures with Hibernate&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:#e36c0a;"&gt;&lt;span style="font-size:130%;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:#e36c0a;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;To use stored procedures with Hibernate the procedures/functions have to follow some rules. If they do not follow those rules they are not usable with Hibernate. If you still want to use these procedures you have to execute them via &lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;session.connection()&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;. The rules are different for each database, since database vendors have different stored procedure semantics/syntax.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none; mso-list: l0 level1 lfo1"&gt;&lt;span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbolfont-family:Symbol;color:black;"  &gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 100% 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Arial;color:black;"&gt;Stored procedure queries can't be paged with &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;setFirstResult()/setMaxResults()&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none; mso-list: l0 level1 lfo1"&gt;&lt;span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbolfont-family:Symbol;color:black;"  &gt;&lt;span style="mso-list: Ignore"&gt;·&lt;span style="FONT: 100% 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span dir="ltr"&gt;&lt;span style="font-family:Arial;color:black;"&gt;Recommended call form is standard SQL92: &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;{ ? = call functionName(&amp;lt;parameters&amp;gt;) } &lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;or &lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;{ ? = call procedureName(&amp;lt;parameters&amp;gt;}&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;. Native call syntax is not supported.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;"&gt;There are rules to calling Stored Procedures. They are&lt;br /&gt;&lt;br /&gt;1. Only one return value allowed&lt;br /&gt;2. It must be the first out value.&lt;br /&gt;3. The out value must be a reference cursor (&lt;span style="color:black;"&gt;This out value returns a result set,in Oracle &lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;9 or 10 this is done by using a &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;SYS_REFCURSOR &lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;and&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;you need to define a &lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;REF CURSOR &lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;span style="mso-spacerun: yes"&gt;&lt;/span&gt;type&lt;/span&gt;&lt;span style="font-family:Arial;"&gt;).&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.25in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;&lt;span style="LINE-HEIGHT: 115%; mso-bidi-language: AR-EGfont-family:Arial;color:#e36c0a;"  &gt;Example on &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="LINE-HEIGHT: 115%;font-family:Arial;color:#e36c0a;"  &gt;Mapping Stored Procedure:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;strong&gt;&lt;span style="font-family:Arial;font-size:130%;color:#e36c0a;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;b&gt;&lt;span style="LINE-HEIGHT: 115%; mso-bidi-language: AR-EGfont-family:Arial;color:#e36c0a;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;1- SELECT_USER_BY_RANK procedure&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Arial;color:#3f7f7f;"&gt;database-object&lt;/span&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Arial;color:#3f7f7f;"&gt;create&lt;/span&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;create or replace procedure SELECT_USERS_BY_RANK&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;OUT_RESULT out SYS_REFCURSOR,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;IN_RANK in int&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;) as&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;begin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;open OUT_RESULT for&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;select&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;u.user_id as user_id,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;u.name as name,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;u.rank as rank&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;from&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;AppUser u&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;where&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;u.rank &amp;gt;= IN_RANK;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;end;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family:Arial;color:#3f7f7f;"&gt;create&lt;/span&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Arial;color:#3f7f7f;"&gt;drop&lt;/span&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#3f5fc0;"&gt;drop procedure SELECT_USERS_BY_RANK&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family:Arial;color:#3f7f7f;"&gt;drop&lt;/span&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family:Arial;color:#3f7f7f;"&gt;database-object&lt;/span&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;2- Mapping Configuration&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Arial;color:#3f7f7f;"&gt;sql-query &lt;/span&gt;&lt;span style="font-family:Arial;color:#7f007f;"&gt;name&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;=&lt;/span&gt;&lt;span style="font-family:Arial;color:#2a00ff;"&gt;"loadUserByRank" &lt;/span&gt;&lt;span style="font-family:Arial;color:#7f007f;"&gt;callable&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;=&lt;/span&gt;&lt;span style="font-family:Arial;color:#2a00ff;"&gt;"true"&lt;/span&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Arial;color:#3f7f7f;"&gt;return &lt;/span&gt;&lt;span style="font-family:Arial;color:#7f007f;"&gt;class&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;=&lt;/span&gt;&lt;span style="font-family:Arial;color:#2a00ff;"&gt;"core.AppUser"&lt;/span&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Arial;color:#3f7f7f;"&gt;return-property &lt;/span&gt;&lt;span style="font-family:Arial;color:#7f007f;"&gt;name&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;=&lt;/span&gt;&lt;span style="font-family:Arial;color:#2a00ff;"&gt;"id" &lt;/span&gt;&lt;span style="font-family:Arial;color:#7f007f;"&gt;column&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;=&lt;/span&gt;&lt;span style="font-family:Arial;color:#2a00ff;"&gt;"USER_ID"&lt;/span&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Arial;color:#3f7f7f;"&gt;return-property &lt;/span&gt;&lt;span style="font-family:Arial;color:#7f007f;"&gt;name&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;=&lt;/span&gt;&lt;span style="font-family:Arial;color:#2a00ff;"&gt;"name" &lt;/span&gt;&lt;span style="font-family:Arial;color:#7f007f;"&gt;column&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;=&lt;/span&gt;&lt;span style="font-family:Arial;color:#2a00ff;"&gt;"NAME"&lt;/span&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-family:Arial;color:#3f7f7f;"&gt;return-property &lt;/span&gt;&lt;span style="font-family:Arial;color:#7f007f;"&gt;name&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;=&lt;/span&gt;&lt;span style="font-family:Arial;color:#2a00ff;"&gt;"rank" &lt;/span&gt;&lt;span style="font-family:Arial;color:#7f007f;"&gt;column&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;=&lt;/span&gt;&lt;span style="font-family:Arial;color:#2a00ff;"&gt;"RANK"&lt;/span&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family:Arial;color:#3f7f7f;"&gt;return&lt;/span&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;{ call SELECT_USERS_BY_RANK(?, :rank) }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-family:Arial;color:#3f7f7f;"&gt;sql-query&lt;/span&gt;&lt;span style="font-family:Arial;color:#008181;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:black;"&gt;3- Stored Procedure Mapping Example&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:#7f0055;"&gt;public static void &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:Arial;color:black;"&gt;main(String[] args) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;Configuration config = &lt;/span&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:#7f0055;"&gt;new &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:Arial;color:black;"&gt;Configuration();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;SessionFactory factory = config.configure().buildSessionFactory();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;Session session = factory.openSession();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;Transaction tx = session.beginTransaction();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;Query q = session.getNamedQuery(&lt;/span&gt;&lt;span style="font-family:Arial;color:#2a00ff;"&gt;"loadUserByRank"&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;q.setParameter(&lt;/span&gt;&lt;span style="font-family:Arial;color:#2a00ff;"&gt;"rank"&lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;, &lt;/span&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:#7f0055;"&gt;new &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:Arial;color:black;"&gt;Integer(2));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;List result = q.list();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;System.&lt;/span&gt;&lt;i&gt;&lt;span style="font-family:Arial;color:#0000c1;"&gt;out&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family:Arial;color:black;"&gt;.println(&lt;/span&gt;&lt;span style="font-family:Arial;color:#2a00ff;"&gt;"Result=" &lt;/span&gt;&lt;span style="font-family:Arial;color:black;"&gt;+ result.size());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:#7f0055;"&gt;for&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:Arial;color:black;"&gt;(&lt;/span&gt;&lt;b&gt;&lt;span style="font-family:Arial;color:#7f0055;"&gt;int &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:Arial;color:black;"&gt;i=0; i&amp;lt;result.size(); i++) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;AppUser user = (AppUser)result.get(i);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;System.&lt;/span&gt;&lt;i&gt;&lt;span style="font-family:Arial;color:#0000c1;"&gt;out&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family:Arial;color:black;"&gt;.println(user.toString());&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;tx.commit();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;session.close();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-layout-grid-align: none"&gt;&lt;span style="font-family:Arial;color:black;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5336970567114925463-7934431807345989618?l=javaspots.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaspots.blogspot.com/feeds/7934431807345989618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5336970567114925463&amp;postID=7934431807345989618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/7934431807345989618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/7934431807345989618'/><link rel='alternate' type='text/html' href='http://javaspots.blogspot.com/2008/12/using-stored-procedures-with-hibernate.html' title='Using stored procedures with Hibernate'/><author><name>Fatma</name><uri>http://www.blogger.com/profile/17918736985122359745</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5336970567114925463.post-4273021632419625305</id><published>2008-12-22T05:38:00.000-08:00</published><updated>2008-12-22T05:44:54.348-08:00</updated><title type='text'>What is a Stored Procedure?</title><content type='html'>&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="LINE-HEIGHT: 115%;color:#e76f00;" &gt;&lt;span style="font-family:arial;"&gt;What is a Stored Procedure?&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;A stored procedure is a group of SQL statements that form a logical unit and perform a particular task, and they are used to encapsulate a set of operations or queries to execute on a database server. For example, operations on an employee database (hire, fire, promote, lookup) could be coded as stored procedures executed by application code. Stored procedures can be compiled and executed with different parameters and results, and they may have any combination of input, output, and input/output parameters. &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;Note: &lt;/b&gt;Stored procedures are supported by most DBMSs, but there is a fair amount of variation in their syntax and capabilities. For this reason, this simple example of what a stored procedure looks like and how it is invoked from JDBC &lt;b&gt;is not intended to be run.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;This simple stored procedure has no parameters. Even though most stored procedures do something more complex than this example, it serves to illustrate some basic points about them. As previously stated, the syntax for defining a stored procedure is different for each DBMS. For example, some use &lt;code&gt;&lt;span style="color:#990000;"&gt;begin . . . end &lt;/span&gt;&lt;/code&gt;, or other keywords to indicate the beginning and ending of the procedure definition. In some DBMSs, the following SQL statement creates a stored procedure:&lt;/span&gt;&lt;/p&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;create procedure SHOW_SUPPLIERS&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;as&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;from SUPPLIERS, COFFEES&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;where SUPPLIERS.SUP_ID = COFFEES.SUP_ID&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;order by SUP_NAME&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The following code puts the SQL statement into a string and assigns it to the variable &lt;code&gt;&lt;span style="color:#990000;"&gt;createProcedure&lt;/span&gt;&lt;/code&gt;, which we will use later:&lt;/span&gt;&lt;/p&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;String createProcedure = "create procedure SHOW_SUPPLIERS " +&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-tab-count: 3"&gt;                          &lt;/span&gt; "as " +&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-tab-count: 3"&gt;                          &lt;/span&gt; "select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME " +&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-tab-count: 3"&gt;                          &lt;/span&gt; "from SUPPLIERS, COFFEES " +&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-tab-count: 3"&gt;                          &lt;/span&gt; "where SUPPLIERS.SUP_ID = COFFEES.SUP_ID " +&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-tab-count: 3"&gt;                          &lt;/span&gt; "order by SUP_NAME";&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The following code fragment uses the &lt;code&gt;&lt;span style="color:#990000;"&gt;Connection&lt;/span&gt;&lt;/code&gt; object &lt;code&gt;&lt;span style="color:#990000;"&gt;con&lt;/span&gt;&lt;/code&gt; to create a &lt;code&gt;&lt;span style="color:#990000;"&gt;Statement&lt;/span&gt;&lt;/code&gt; object, which is used to send the SQL statement creating the stored procedure to the database:&lt;/span&gt;&lt;/p&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;Statement stmt = con.createStatement();&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;stmt.executeUpdate(createProcedure);&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The procedure &lt;code&gt;&lt;span style="color:#990000;"&gt;SHOW_SUPPLIERS&lt;/span&gt;&lt;/code&gt; is compiled and stored in the database as a database object that can be called, similar to the way you would call a method. &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h3 style="MARGIN: 12pt 0in 3pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="LINE-HEIGHT: 115%;color:#e36c0a;" &gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Calling a Stored Procedure from JDBC&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;JDBC allows you to call a database stored procedure from an application written in the Java programming language. The first step is to create a &lt;code&gt;&lt;span style="color:#990000;"&gt;CallableStatement&lt;/span&gt;&lt;/code&gt; object. As with &lt;code&gt;&lt;span style="color:#990000;"&gt;Statement&lt;/span&gt;&lt;/code&gt; and &lt;code&gt;&lt;span style="color:#990000;"&gt;PreparedStatement&lt;/span&gt;&lt;/code&gt; objects, this is done with an open &lt;code&gt;&lt;span style="color:#990000;"&gt;Connection&lt;/span&gt;&lt;/code&gt; object. A &lt;code&gt;&lt;span style="color:#990000;"&gt;callableStatement&lt;/span&gt;&lt;/code&gt; object contains a call to a stored procedure; it does not contain the stored procedure itself. The first line of code below creates a call to the stored procedure &lt;code&gt;&lt;span style="color:#990000;"&gt;SHOW_SUPPLIERS&lt;/span&gt;&lt;/code&gt; using the connection &lt;code&gt;&lt;span style="color:#990000;"&gt;con&lt;/span&gt;&lt;/code&gt;. The part that is enclosed in curly braces is the escape syntax for stored procedures. When the driver encounters &lt;code&gt;&lt;span style="color:#990000;"&gt;"{call SHOW_SUPPLIERS}"&lt;/span&gt;&lt;/code&gt;, it will translate this escape syntax into the native SQL used by the database to call the stored procedure named &lt;code&gt;&lt;span style="color:#990000;"&gt;SHOW_SUPPLIERS&lt;/span&gt;&lt;/code&gt;. &lt;/span&gt;&lt;/p&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;CallableStatement cs = con.prepareCall("{call SHOW_SUPPLIERS}");&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span style="font-family:arial;"&gt;ResultSet rs = cs.executeQuery();&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Note that the method used to execute &lt;code&gt;&lt;span style="color:#990000;"&gt;cs&lt;/span&gt;&lt;/code&gt; is &lt;code&gt;&lt;span style="color:#990000;"&gt;executeQuery&lt;/span&gt;&lt;/code&gt; because &lt;code&gt;&lt;span style="color:#990000;"&gt;cs&lt;/span&gt;&lt;/code&gt; calls a stored procedure that contains one query and thus produces one result set. If the procedure had contained one update or one DDL statement, the method &lt;code&gt;&lt;span style="color:#990000;"&gt;executeUpdate&lt;/span&gt;&lt;/code&gt; would have been the one to use. It is sometimes the case, however, that a stored procedure contains more than one SQL statement, in which case it will produce more than one result set, more than one update count, or some combination of result sets and update counts. In this case, where there are multiple results, the method &lt;code&gt;&lt;span style="color:#990000;"&gt;execute&lt;/span&gt;&lt;/code&gt; should be used to execute the &lt;code&gt;&lt;span style="color:#990000;"&gt;CallableStatement&lt;/span&gt;&lt;/code&gt; . &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The class &lt;code&gt;&lt;span style="color:#990000;"&gt;CallableStatement&lt;/span&gt;&lt;/code&gt; is a subclass of &lt;code&gt;&lt;span style="color:#990000;"&gt;PreparedStatement&lt;/span&gt;&lt;/code&gt;, so a &lt;code&gt;&lt;span style="color:#990000;"&gt;CallableStatement&lt;/span&gt;&lt;/code&gt; object can take input parameters just as a &lt;code&gt;&lt;span style="color:#990000;"&gt;PreparedStatement&lt;/span&gt;&lt;/code&gt; object can. In addition, a &lt;code&gt;&lt;span style="color:#990000;"&gt;CallableStatement&lt;/span&gt;&lt;/code&gt; object can take output parameters, or parameters that are for both input and output. INOUT parameters and the method &lt;code&gt;&lt;span style="color:#990000;"&gt;execute&lt;/span&gt;&lt;/code&gt; are used rarely. &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 10pt 0in 0pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="LINE-HEIGHT: 115%;color:#e36c0a;" &gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Stored procedure and Cursers:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;If you are used to Sybase or SQLServer, returning a result set from a stored procedure is easy. Just finish the procedure with a "select x,y,z from my_table", selecting whatever columns you wish to return.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Not so for Oracle. You need to use cursors.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 10pt 0in 0pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="color:#e36c0a;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;What is a REF CURSOR?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Cursors, as you know, help return recordsets/ resultsets. A cursor is a work area for a SQL statement that returns one or more rows. It allows you to fetch rows from the result set one by one. Cursors aren't particularly difficult to use, but to return a result set from a PL/SQL stored procedure, you must use a cursor variable. Cursor variables are basically pointers to cursors, and you use them to pass around references to cursors, such as a parameter to a stored procedure. The PL/SQL type of a cursor variable is REF CURSOR.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;To use cursor variables, you must define a REF CURSOR type. Treated just like a data type, your stored procedure takes REF CURSORS as &lt;code&gt;&lt;span style="color:#990000;"&gt;OUT&lt;/span&gt;&lt;/code&gt; parameters, and you can return a full recordset in each REF CURSOR parameter back to the caller. So you can include as many REF CURSOR parameters as you want - your stored procedure will have the ability to return that many recordsets.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Cursor type can be strong or weak. Strong types are tied to a specific set of a table's columns. This means a strong REF CURSOR type can only be used with queries (i.e. cursors) returning those columns. Weak types can refer to any cursor, and so are much more flexible. They do, however, sacrifice type safety.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The easiest way forward is to define a weakly typed REF CURSOR in a PL/SQL package. Packages are used in PL/SQL for partitioning functionality. Below, a weak REF CURSOR type called REF_CURSOR is defined in a PL/SQL package called types.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN-LEFT: 0.5in"&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;CREATE OR REPLACE PACKAGE types&lt;br /&gt;AS&lt;br /&gt;TYPE ref_cursor IS REF CURSOR;&lt;br /&gt;END&lt;/b&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;This definition can now be used in all stored procedures to declare a variable of type REF CURSOR.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;We can now write a stored procedure that returns a REF CURSOR, that in JDBC we can process as a result set.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 10pt 0in 0pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="color:#e36c0a;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Examples on Stored Procedure&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="LINE-HEIGHT: 115%;color:navy;" &gt;&lt;span style="font-family:arial;"&gt;Example 1:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Assume we start from a table defined as below.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN-LEFT: 0.5in"&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;CREATE TABLE STOCK_PRICES(&lt;br /&gt;RIC VARCHAR(6) PRIMARY KEY,&lt;br /&gt;PRICE NUMBER(7,2),&lt;br /&gt;UPDATED DATE )&lt;/b&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Here we have a table of stock prices, with the RIC (Reuters Instrument Code) as the primary key. We define a PL/SQL function that simply declares a cursor that returns all columns for stocks below a certain price.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN-LEFT: 0.5in"&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;CREATE OR REPLACE FUNCTION sp_get_stocks(v_price IN NUMBER)&lt;br /&gt;RETURN types.ref_cursor&lt;br /&gt;AS&lt;br /&gt;stock_cursor types.ref_cursor;&lt;br /&gt;BEGIN&lt;br /&gt;OPEN stock_cursor FOR&lt;br /&gt;SELECT ric,price,updated FROM stock_prices&lt;br /&gt;WHERE price &amp;lt; v_price;&lt;br /&gt;&lt;br /&gt;RETURN stock_cursor;&lt;br /&gt;END;&lt;/b&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="LINE-HEIGHT: 115%;color:navy;" &gt;&lt;span style="font-family:arial;"&gt;Example 2:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;This stored procedure takes an input parameter for lookup, and has &lt;b&gt;two OUT REF CURSORS&lt;/b&gt;. For simplicity of this example, both the REF CURSORS return a column (a single column). That is not a requirement in real life of course.&lt;span style="color:black;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre style="BACKGROUND: white"&gt;&lt;span class="code-keyword1"&gt;&lt;o:p&gt;&lt;span style="font-family:arial;color:#0000ff;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;span style="font-family:arial;"&gt;&lt;span class="code-keyword1"&gt;&lt;b&gt;&lt;span style="color:#0000ff;"&gt;CREATE&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;span class="code-keyword1"&gt;&lt;span style="color:#0000ff;"&gt;OR&lt;/span&gt;&lt;/span&gt; REPLACE&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;span style="font-family:arial;"&gt;&lt;span class="code-keyword1"&gt;&lt;b&gt;&lt;span style="color:#0000ff;"&gt;PROCEDURE&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt; GetEmpRS1 (p_recordset1 OUT SYS_REFCURSOR, &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-spacerun: yes"&gt;              &lt;/span&gt;p_recordset2 OUT SYS_REFCURSOR,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-spacerun: yes"&gt;              &lt;/span&gt;PARAM &lt;span class="code-keyword1"&gt;&lt;span style="color:#0000ff;"&gt;IN&lt;/span&gt;&lt;/span&gt; STRING) &lt;span style="color:#0000ff;"&gt;&lt;span class="code-keyword1"&gt;AS&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span class="code-keyword1"  style="font-family:arial;"&gt;&lt;b&gt;BEGIN&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span class="code-keyword1"&gt;&lt;span style="color:#0000ff;"&gt;OPEN&lt;/span&gt;&lt;/span&gt; p_recordset1 &lt;span style="color:#0000ff;"&gt;&lt;span class="code-keyword1"&gt;FOR&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span class="code-keyword1"&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt;&lt;/span&gt; RET1 &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span class="code-keyword1"&gt;&lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt;&lt;/span&gt; MYTABLE&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span class="code-keyword1"&gt;&lt;span style="color:#0000ff;"&gt;WHERE&lt;/span&gt;&lt;/span&gt; LOOKUPVALUE &amp;gt; PARAM;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;b&gt;&lt;o:p&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span class="code-keyword1"&gt;&lt;span style="color:#0000ff;"&gt;OPEN&lt;/span&gt;&lt;/span&gt; p_recordset2 &lt;span style="color:#0000ff;"&gt;&lt;span class="code-keyword1"&gt;FOR&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span class="code-keyword1"&gt;&lt;span style="color:#0000ff;"&gt;SELECT&lt;/span&gt;&lt;/span&gt; RET2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span class="code-keyword1"&gt;&lt;span style="color:#0000ff;"&gt;FROM&lt;/span&gt;&lt;/span&gt; MYTABLE&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span class="code-keyword1"&gt;&lt;span style="color:#0000ff;"&gt;WHERE&lt;/span&gt;&lt;/span&gt; LOOKUPVALUE &amp;gt;= PARAM;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;&lt;pre style="BACKGROUND: white; MARGIN-LEFT: 0.5in"&gt;&lt;span style="font-family:arial;"&gt;&lt;span class="code-keyword1"&gt;&lt;b&gt;&lt;span style="color:#0000ff;"&gt;END&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt; GetEmpRS1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 10pt 0in 0pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="color:#e36c0a;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Calling the stored procedure from Java&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;There are some Oracle-specific tricks to calling the above stored procedure from Java.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The query string can be in the Oracle format or the standard JDBC callable statement syntax. If you are using the Oracle syntax, the query string is:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;begin ? := sp_get_stocks(?); end;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;If you are using the JDBC syntax, the query string is: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;{ call ? := sp_get_stocks(?) }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;In each case the spacing is important - the query will not work otherwise.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Secondly, the out parameter must be registered to be of type OracleTypes.CURSOR.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;And finally, use getObject() to retrieve the result set.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;The code (without error handling) is illustrated below. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;span style="color:navy;"&gt;&lt;span style="font-family:arial;"&gt;Example 1:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN-LEFT: 0.5in"&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;String query = "begin ? := sp_get_stocks(?); end;";&lt;/b&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="MARGIN-LEFT: 0.5in"&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;CallableStatement stmt = conn.prepareCall(query);&lt;br /&gt;&lt;br /&gt;// register the type of the out param - an Oracle specific type&lt;br /&gt;stmt.registerOutParameter(1, OracleTypes.CURSOR);&lt;br /&gt;&lt;br /&gt;// set the in param&lt;br /&gt;stmt.setFloat(2, price);&lt;br /&gt;&lt;br /&gt;// execute and retrieve the result set&lt;br /&gt;stmt.execute();&lt;br /&gt;ResultSet rs = (ResultSet)stmt.getObject(1);&lt;br /&gt;&lt;br /&gt;// print the results&lt;br /&gt;while (rs.next()) {&lt;br /&gt;System.out.println(rs.getString(1) + "\t" +&lt;br /&gt;rs.getFloat(2) + "\t" +&lt;br /&gt;rs.getDate(3).toString());&lt;br /&gt;}&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2 style="MARGIN: 10pt 0in 0pt; DIRECTION: ltr; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;o:p&gt;&lt;span style="font-family:arial;font-size:100%;color:#4f81bd;"&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;&lt;b&gt;&lt;span style="color:navy;"&gt;&lt;span style="font-family:arial;"&gt;Example 2:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0.5in 10pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;create or replace function sp_ListEmp return types.cursortype&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;as&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;l_cursor types.cursorType;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;open l_cursor for select ename, empno from emp order by ename;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;return l_cursor;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;end;&lt;/b&gt; &lt;br style="mso-special-character: line-break"&gt;&lt;br style="mso-special-character: line-break"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="font-family:arial;"&gt;Or like this for a procedure:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;o:p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;create or replace procedure getemps( p_cursor in out types.cursorType )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;as&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;begin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;open p_cursor for select ename, empno from emp order by ename;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;end;&lt;/b&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-family:arial;"&gt;Here is an example:&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0.5in 10pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;create or replace package types&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;as&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;type cursorType is ref cursor;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;end;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;/&lt;/b&gt;&lt;b&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0.5in 10pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;create or replace function sp_ListEmp return types.cursortype&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;as&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;l_cursor types.cursorType;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;begin&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;open l_cursor for select ename, empno from emp order by ename;&lt;/b&gt;&lt;b&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;return l_cursor;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;end;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;/&lt;br /&gt;&lt;/b&gt;&lt;b&gt;create or replace procedure getemps( p_cursor in out types.cursorType )&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;as&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;begin&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="mso-tab-count: 1"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;open p_cursor for select ename, empno from emp order by ename;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;end;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 0pt 0.5in; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left"&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;/&lt;/b&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0.5in 10pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;o:p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0in 10pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;span style="font-family:arial;"&gt;And the java to use this could be:&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0.5in 10pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;import java.sql.*;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;import java.io.*;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;import oracle.jdbc.driver.*;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0.5in 10pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;class curvar&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;public static void main (String args [])&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;throws SQLException, ClassNotFoundException&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;String driver_class = "oracle.jdbc.driver.OracleDriver";&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;String connect_string = "jdbc:oracle:thin:@slackdog:1521:oracle8";&lt;/b&gt;&lt;b&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0.5in 10pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;String query = "begin :1 := sp_listEmp; end;";&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;Connection conn;&lt;/b&gt;&lt;b&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0.5in 10pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;Class.forName(driver_class);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;conn = DriverManager.getConnection(connect_string, "scott", "tiger");&lt;/b&gt;&lt;b&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0.5in 10pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;CallableStatement cstmt = conn.prepareCall(query);&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;cstmt.registerOutParameter(1,OracleTypes.CURSOR);&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;cstmt.execute();&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;ResultSet rset = (ResultSet)cstmt.getObject(1);&lt;/b&gt;&lt;b&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" style="MARGIN: 0in 0.5in 10pt; DIRECTION: ltr; LINE-HEIGHT: normal; unicode-bidi: embed; TEXT-ALIGN: left; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto"&gt;&lt;b&gt;&lt;span style="font-family:arial;"&gt;while (rset.next ())&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;System.out.println( rset.getString (1) );&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;cstmt.close();&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;}&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal" dir="rtl" style="MARGIN: 0in 0in 10pt"&gt;&lt;span lang="AR-EG" style="mso-bidi-language: AR-EG;font-family:arial;" &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5336970567114925463-4273021632419625305?l=javaspots.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaspots.blogspot.com/feeds/4273021632419625305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5336970567114925463&amp;postID=4273021632419625305' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/4273021632419625305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5336970567114925463/posts/default/4273021632419625305'/><link rel='alternate' type='text/html' href='http://javaspots.blogspot.com/2008/12/what-is-stored-procedure.html' title='What is a Stored Procedure?'/><author><name>Fatma</name><uri>http://www.blogger.com/profile/17918736985122359745</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
