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


Wednesday, 3 July 2013

Hibernate Mapping example

One-to_One

Hibernate one-to-one mapping, this is a simple business. One entity linked to one and only one other entity. Not in the practical world scenario, but if we continue our previous example, then one customer having only one address. This is how the rule will be defined at the three places of our concern.
Database:
Customer needs to be linked with one and only one address and vice versa. Customer table will have the address id column with unique constraint. Our table creating scripts will be like –
TAB_CUSTOMER
 CUSTOMER_ID - Number - Not NULL Primary Key
 ADDRESS_ID - Number - Not NULL, unique Foreign Key From tab_address table

TAB_ADDRESS
 ADDRESS_ID - Number - Not NULL Primary Key
Simple, isn’t it? Let us take this to one level above, i.e. hibernate mapping layer.
Hibernate Mapping:Just check the many-to-one mapping used with unique constraint on reference column.
 
We cannot do much to implement one to one relationship. See below.
Java:
Only constraint that we can ensure is – the customer is linked to one address but not uniquely.
public class Customer {
private Long id;
private Address address;
// getter/setter for id & address fields
}
public class Address {
private Long id;
//getter/setter for id
}
There is one more way to implement this relation, which is using one – to – one mapping on primary keys of two tables.
Database:Scripts may look weird but this will work -
TAB_CUSTOMER
 CUSTOMER_ID - Number - Not NULL Primary Key

TAB_ADDRESS
 CUSTOMER_ID - Number - Not NULL Primary Key Foreign key from tab_customer
Hope you have noticed the primary key of address table is also customer id.
Hibernate Mapping:
address
One-to-Many

In continuation to previous article, here we focus on next association in Unidirectional context. One – to – Many links one entity with many other entities. To explain it better, let us take an example. One customer can have one permanent address, one temporary address and one work address. Thus one customer is linked to many addresses.


In database this can be handled in very unusual way, by providing foreign key reference of customer (primary key) in address table. Thus One customers – is linked to – Many addresses.


Let us put our example in code.
This is how our table’s primary columns look:

TAB_CUSTOMER
CUSTOMER_ID - Number - Not NULL Primary Key
TAB_ADDRESS
ADDRESS_ID - Number - Not NULL Primary Key
CUSTOMER_ID - Number - Not NULL Foreign Key From tab_Customer table
One – to – Many mapping of above scenario will look like this.
 
Now the Java code should also map to our this mapping definition.
public class Customer {
private Long id;
private Set address;
// getter/setter for id & address fields
}

public class Address {
private Long id;
// getter/setter for id field
}
Point(s) to Remember:
This is unusual way of association mapping on foreign key and it is not recommended.
Many-to-One

Many – to -one is a unidirectional relation i.e. it establishes relation amongst many entities with one entity. It will be clear with this example. Suppose there are 5 people staying in a house. Each of them wants to buy a mobile phone and they give same address to the service provider. Now the service provider’s database will have same address linked to these 5 people. This is exactly the scenario where many entities (customers) are linked to one entity (address).


In database this is handled by providing foreign key reference of address (primary key) in customer table. But this column in customer table will not contain unique values of customer.
Thus Many customers – are linked to – one address.


Let us put our example in code.
This is how our table’s primary columns look:

TAB_CUSTOMER
CUSTOMER_ID Number Not NULL Primary Key
ADDRESS_ID Number Not NULL Foreign Key From Address table

TAB_ADDRESS
ADDRESS_ID - Number Not NULL Primary Key
Many – to – one mapping of above scenario will look like this.
  Point(s) to Remember:
Foreign Key reference column does not contain unique key constraint.

No comments:

Post a Comment

LinkWithin

Related Posts Plugin for WordPress, Blogger...