Labels

.NET Job Questions About Java Absract class Abstract class Abstract Class and Interface Aggregation ajax aop apache ofbiz Apache ofbiz tutrial Association authentication autocad basics batch Binary Tree bootstrap loader in java build Builder design pattern C++ Job Questions caching CallableStatement in java certifications Chain of responsibility Design pattern charts check parentheses in a string Classes classloader in java classloading concept code quality collage level java program Composition concurrency Concurrency Tutorial Converting InputStream to String Core Java core java concept core java interview questions Core Java Interview Questions Core Java Questions core java tutorial CyclicBarrier in Java data structures database Database Job Questions datetime in c# DB Db2 SQL Replication deserialization in java Design Patterns designpatterns Downloads dtd Eclipse ejb example/sample code exception handling in core java file handling injava File I/O vs Memory-Mapped Filter first program in spring flex Garbage Collection Generics concept in java grails groovy and grails Guice Heap hibernate Hibernate Interview Questions how-to IBM DB2 IBM DB2 Tutorial ide immutable Interceptor Interface interview Interview Questions for Advanced JAVA investment bank j2ee java JAVA Code Examples Java 7 java changes java class loading JAVA Classes and Objects Java Classloader concept Java classloading concept java cloning concept java collection Java collection interview questions Java Collections java concurrency Java CountDownLatch java definiton Java design pattern Java EE 5 Java EE 6 Java Exceptions Java file Java Garbage Collection Java generics Java Glossary java hot concept java immutable concept Java Interface Java interview Question java interview question 2012 java interview question answer Java Interview Questions Java Interview Questions and Answers java interview topic java investment bank Java Job Questions java multithreading java multithreading concept java new features Java Packages java proxy object java questions Java Serialization Java serialization concept java serialization interview question java session concept java string Java Swings Questions java synchronization java threading Java Threads Questions java tutorial java util; java collections; java questions java volatile java volatile interview question Java Wrapper Classes java.java1.5 java.lang.ClassCastException JavaNotes javascript JAX-WS jdbc JDBC JDBC Database connection jdk 1.5 features JDK 1.5 new features Concurrent HashMap JMS interview question JMS tutorial job JSESSIONID concept JSESSIONID interview Question JSF jsp JSP Interview Question JSP taglib JSTL with JSP Junit Junit Concept Junit interview question.Best Practices to write JUnit test cases in Java JVM Linux - Unix tutorial Marker Interfaces MD5 encryption and decryption messaging MNC software java interview question musix NCR java interview question Networking Job Questions news Object Serialization Objects ojdbc14.jar OOP Oracle Oracle SQL Query for two timestamp difference orm own JavaScript function call in Apache ofbiz Packages Palm Apps patterns pdf persistence Portal Portlet Spring Integration Prime number test in java programs Rails Reboot remote computers REST Ruby Sample application schema SCJP security Senior java developer interviews servlet3 servlets session tracking singleton design pattern Spring Spring 2.5 Framework spring ebook Spring framework concept spring MVC spring pdf Spring Security Spring Security interview questions SQL SQL performance SQL Query to create xml file Sql Query tuning ssis and ssrs StAX and XML string concept string immutable string in java strings struts Struts2 Struts2 integration synchronization works in java Technical Interview testing tips Tomcat top Tutorial Volatile in deep Volatile working concept web Web Developer Job Questions web services weblogic Weblogic Application Server websphere what is JSESSIONID xml XML parsing in java XML with Java xslt


Tuesday, 2 July 2013

Relationship Elements in hibernate

One of Java’s most widely used features is associating one class with another through composition or
some other means. For example, you might have an employee object that contains a social security
object. You need to be able to map these relationships in the database. In this section, we aren’t talking
about situations where you have a vector of another class as an attribute.
Hibernate’s mapping document uses two relationship elements: <many-to-one> and <one-to-one>. In
this section, we’ll describe the mappings;
<many-to-one> Element
In the course of object mapping, in some situations many objects associate to a single object. This is a
many-to-one relationship; you use the <many-to-one> element for the mapping. The format of the ele-ment
is as follows:
<many-to-one
name="string"
column="string"
class="string"
cascade=- [all] [none] [save-update] [delete]"
outer-join="[true] [false] [auto]"
update=" [true] [false]"
insert="[true] [false]"
property-ref="associated class" [optional]
access=" [field] [property] [component class name]"
/>
This element has the following attributes:
❑name: Specifies the name of the Java attribute associated with the relationship.
❑column: Specifies the name of the database column for the mapping. This is an optional
attribute; the default is the name attribute value.
❑class: Specifies the name of the class that is part of the relationship. Hibernate uses reflection if
this attribute isn’t included.
❑cascade: See the description in our discussion of the <hibernate-mapping> element.
❑outer-join: Determines whether an outer join should be used when pulling this object from the
database row. This attribute is optional; the default is auto. The possible values include auto,
true, and false. If the value is auto, an outer join is used if the related class isn’t using
a proxy.
❑update: Determines whether this specific attribute should be used in an UPDATE SQL query.
This is an optional attribute; the default is true.
❑insert: Determines whether this specific attribute should be used in an INSERT SQL query. This
is an optional attribute; the default is true. Note that if both the update and insert attributes
are false, then you must assume this attribute will be filled by another attribute or possibly by
a database trigger.
❑property-ref: In most relationships, the related class’s primary key is stored in this mapped col-umn.
In some databases, the relationship from the primary class to the related class isn’t based
on the primary key but on some other column. Since Hibernate attempts to use the identifier of
the related class, you need to specify the exact column to use. The property-ref attribute
specifies the exact column. (You’ll see an example in Chapter 5.)
❑access: See the description in our discussion of the <id> element.
<one-to-one> Element
In the course of object mapping, in some situations one object is associated with a single object. This is a
one-to-one relationship; you use the <one-to-one> element for the mapping. The format of the ele-ment
is as follows:
<one-to-one
name="name"
class="class"
cascade=" [all] [none] [save-update] [delete]"
[optional - default none] constrained=" [true] [false]"
outer-join=" [true] [false] [auto]"
property-ref="property other than primary key of mapped table"
[optional] access=" [field] [property] [component class name]"
/>
This element has the following attributes:
❑name: Specifies the name of the Java attribute associated with the relationship.
❑class: Specifies the name of the class that is part of the relationship. Hibernate uses reflection if
this attribute isn’t included.
❑cascade: See the description in our discussion of the <hibernate-mapping> element.
❑outer-join: Determines whether an outer join should be used when pulling this object from the
database row. This attribute is optional; the default is auto. The possible values include auto,
true, and false. If the value is auto, an outer join is used if the related class isn’t using a
proxy.
❑constrained: Determines that a foreign key constraint exists with the primary key of the
mapped table.
❑property-ref: In most relationships, the related class’s primary key is stored in this mapped col-umn.
In some databases, the relationship from the primary class to the related class isn’t based
on the primary key but on some other column. Since Hibernate attempts to use the identifier of
the related class, you need to specify the exact column to use. The property-ref attribute
specifies the exact column. (You’ll see an example in Chapter 5.)
❑access: See the description in our discussion of the <id> element.
<component> Element
The <component> element is designed to allow a property to be saved in the current object’s mapping
from another class. The format of the element is:
<component
name="name"
class="class"
update="true | false" [optional - defaults to true]
insert="true | false" [optional - defaults to true]
access="field | property | class" [optional - defaults to property]
<property/>
<many-to-one/>
/>
This element has the following attributes:
❑name: Specifies the name of the property to map.
❑class: Specifies the child class where the named property appears.
❑update: Determines whether this specific attribute should be used in an UPDATE SQL query.
This is an optional attribute; the default is true.
❑insert: Determines whether this specific attribute should be used in an INSERT SQL query. This
is an optional attribute; the default is true. Note that if both the update and insert attributes are
false, then you must assume this attribute is filled by another attribute or possibly by a
database trigger.
❑access: See the description in our discussion of the <id> element.
For all the properties in the child class that need to be mapped, you need to include <property> ele-ments.
You can also add appropriate relationships to the <component> element.
<subclass> Element
When an inheritance relationship is defined for your Java classes, the hierarchy needs to be defined.
Since Hibernate recommends the table-per-class-hierarchy mapping, you should define all subclasses
with the <subclass> element. Subclass definitions include attributes as well as the properties that have
been added to this specific subclass.
The format of the element is as follows:
<subclass
name=”name”
discriminator-value="value" [optional - defaults to name value]
proxy="interface" [optional]
lazy="true ( false" [optional]
dynamic-update="true | false"[optional - defaults to false]
dynamic-insert="true | false" [optional - defaults to false]
<property/>
/>
This element has the following attributes:
❑name: Specifies the name of the Java class this mapping document is designed to represent.
Hibernate expects a fully qualified class name in this attribute if you don’t have the package
attribute in the <hibernate-mapping> element.
❑discriminator-value: Specifies the value used to distinguish between different classes in an
inheritance hierarchy. The default is the class name.
❑proxy: Tells Hibernate whether to use lazy initialization for objects of this mapping type. Lazy
initialization allows Hibernate to basically stub out the data in an object. If you’re using lazy ini-tialization,
you create objects and load them just as in the example application in Chapter 3, but
Hibernate won’t populate or make a call to the database for data until the object is used. The
proxy attribute requires you to provide a class that is used for the lazy initialization; this should
normally be the class name used in the name attribute.
❑dynamic-update: If true, then when Hibernate updates a row in the database for a class
attribute that has changed, it generates an UPDATE SQL statement at runtime during the
update() method call on the session and only include the columns of the table that have been
updated. This is an optional attribute; the default is false.
❑dynamic-insert: The same as dynamic-update in principle; but Hibernate dynamically creates
an INSERT SQL statement with only those columns that aren’t null values. This is an optional
attribute; the default is false.
Once the attributes have been defined for the subclass, you need to define all the new attributes that
should be persisted. Use the <property> element to define each attribute.
<joined-subclass> Element
If you don’t want to use the recommended inheritance mapping, you can choose the table-per-subclass
mapping. Each subclass must have its own <joined-subclass> element. You include all
the usual elements like <property>, <key>, and so on for this subclass.
The format of the element is as follows:
<joined-subclass
name="name"
proxy="interface" [optional]
lazy="true | false" [optional]
dynamic-update="true | false" [optional - defaults to false]
dynamic-insert="true | false" [optional - defaults to false]

No comments:

Post a Comment

LinkWithin

Related Posts Plugin for WordPress, Blogger...