Many-to-one association between Product and Category entities

8 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$49.99
List Price:  $69.99
You save:  $20
€48.05
List Price:  €67.28
You save:  €19.22
£39.95
List Price:  £55.93
You save:  £15.98
CA$70
List Price:  CA$98.01
You save:  CA$28
A$77.04
List Price:  A$107.87
You save:  A$30.82
S$67.44
List Price:  S$94.42
You save:  S$26.98
HK$389.10
List Price:  HK$544.78
You save:  HK$155.67
CHF 44.44
List Price:  CHF 62.22
You save:  CHF 17.78
NOK kr556.72
List Price:  NOK kr779.46
You save:  NOK kr222.73
DKK kr358.40
List Price:  DKK kr501.79
You save:  DKK kr143.39
NZ$85.70
List Price:  NZ$119.98
You save:  NZ$34.28
د.إ183.61
List Price:  د.إ257.07
You save:  د.إ73.45
৳6,001.50
List Price:  ৳8,402.58
You save:  ৳2,401.08
₹4,222.56
List Price:  ₹5,911.93
You save:  ₹1,689.36
RM223.33
List Price:  RM312.68
You save:  RM89.35
₦84,537.08
List Price:  ₦118,358.68
You save:  ₦33,821.60
₨13,893.48
List Price:  ₨19,451.98
You save:  ₨5,558.50
฿1,729.40
List Price:  ฿2,421.30
You save:  ฿691.90
₺1,728.30
List Price:  ₺2,419.75
You save:  ₺691.45
B$290.56
List Price:  B$406.81
You save:  B$116.24
R904.38
List Price:  R1,266.21
You save:  R361.82
Лв93.87
List Price:  Лв131.43
You save:  Лв37.55
₩70,321.20
List Price:  ₩98,455.31
You save:  ₩28,134.10
₪186.14
List Price:  ₪260.61
You save:  ₪74.47
₱2,946.86
List Price:  ₱4,125.84
You save:  ₱1,178.98
¥7,723.73
List Price:  ¥10,813.84
You save:  ¥3,090.11
MX$1,023.24
List Price:  MX$1,432.62
You save:  MX$409.38
QR183.09
List Price:  QR256.35
You save:  QR73.25
P685.61
List Price:  P959.91
You save:  P274.30
KSh6,473.70
List Price:  KSh9,063.70
You save:  KSh2,590
E£2,483.19
List Price:  E£3,476.67
You save:  E£993.47
ብር6,258.40
List Price:  ብር8,762.26
You save:  ብር2,503.86
Kz45,623.90
List Price:  Kz63,877.12
You save:  Kz18,253.21
CLP$48,677.26
List Price:  CLP$68,152.06
You save:  CLP$19,474.80
CN¥362.39
List Price:  CN¥507.37
You save:  CN¥144.98
RD$3,026.05
List Price:  RD$4,236.71
You save:  RD$1,210.66
DA6,682.11
List Price:  DA9,355.50
You save:  DA2,673.38
FJ$113.79
List Price:  FJ$159.32
You save:  FJ$45.52
Q387.67
List Price:  Q542.77
You save:  Q155.10
GY$10,507.02
List Price:  GY$14,710.67
You save:  GY$4,203.65
ISK kr6,982.10
List Price:  ISK kr9,775.50
You save:  ISK kr2,793.40
DH502.26
List Price:  DH703.21
You save:  DH200.94
L911.81
List Price:  L1,276.61
You save:  L364.79
ден2,937.49
List Price:  ден4,112.73
You save:  ден1,175.23
MOP$402.62
List Price:  MOP$563.70
You save:  MOP$161.08
N$908.73
List Price:  N$1,272.29
You save:  N$363.56
C$1,838.13
List Price:  C$2,573.53
You save:  C$735.40
रु6,757.51
List Price:  रु9,461.06
You save:  रु2,703.54
S/190.76
List Price:  S/267.08
You save:  S/76.32
K202.16
List Price:  K283.05
You save:  K80.88
SAR187.70
List Price:  SAR262.80
You save:  SAR75.09
ZK1,384.85
List Price:  ZK1,938.90
You save:  ZK554.05
L239.10
List Price:  L334.76
You save:  L95.66
Kč1,219.85
List Price:  Kč1,707.89
You save:  Kč488.04
Ft19,758.62
List Price:  Ft27,663.65
You save:  Ft7,905.03
SEK kr556.42
List Price:  SEK kr779.03
You save:  SEK kr222.61
ARS$50,191.65
List Price:  ARS$70,272.32
You save:  ARS$20,080.67
Bs347
List Price:  Bs485.83
You save:  Bs138.82
COP$221,888.26
List Price:  COP$310,661.31
You save:  COP$88,773.05
₡25,529.79
List Price:  ₡35,743.76
You save:  ₡10,213.96
L1,269.10
List Price:  L1,776.85
You save:  L507.74
₲394,167.14
List Price:  ₲551,865.53
You save:  ₲157,698.39
$U2,140.09
List Price:  $U2,996.30
You save:  $U856.20
zł208.79
List Price:  zł292.33
You save:  zł83.53
Already have an account? Log In

Transcript

To understand the many to one and one to many associations between entities, let's go first create a new entity class called product. So I'm going to right click on the entity package, new class here, call it as product. Press Enter. This is also a plain ordinary Java object. I'm going to have some variables here called private integer product ID, private string product name, it also will have some kind of a quantity per unit. Let's give it a price.

Double unit price. A product also belongs to a category. So the association between a product and category here would be like many products belong to one category. Hence the association is many to one. As a general rule of thumb, if you have a foreign key in a table that is represented using a many to one Association To say that the product has association with a category. Let's create a variable here called category of type category.

Let's also add a constructor here. And then generate getters and setters by going to source menu, generate getters and setters. Select All, say, OK, and let's also add a two string by going to source generate to string and then say, Okay, we got the two string, representing even the category also, in order to map this to a table called products. Let's first add at the rate entity. And then at the rate table, name equals two products. Since we don't have this particular table called products, because of HBM to DDL dot auto equals to update, hibernate will automatically add this table that's imported.

Let's also artists as at the rate ID at the rate generated value. Once again. In the previous case, we'll add the same strategy, which is identity, which means there will be an auto increment added to this particular field. We'll also say that this is mapped to a column whose name is product underscore ID. This is going to be a product name with an underscore. This is going to be a quantity underscore or underscore unit unit underscore price.

And this one is not a column mapping. If you just leave the category without any column mapping, hibernate will automatically assumes that this is a column in your table and it tries to create such a column because we have given HBM to DDL auto but this is not a scalar type, which means there is no data type called category in an RDBMS. So we have to say that this is not a column by itself, but this corresponds to a foreign key called category underscore ID. So we're going to say here at the rate many to one. And then we say, at the rate join column, we say name equals to category underscore ID. What it does is it's going to create a new column called category underscore ID in products table makes it as a foreign key to the primary key of the table corresponding to this category, which is category stable.

Now that we have this product class, we also have to tell in hibernate util that there is another class that hibernate should manage by adding this CFG dot add annotated class entry. So CFG dot add annotated class of product class. Now hibernate is aware that there is another entity class. Now if you run any of the previous programs, hibernate will automatically synchronize the entity classes and the tables It's going to create the products table as well. But to see if this association works, let's go and create a new Java class. Under the programs package, I'm going to call this as x 05 package, called the class as mean.

Also add the main function over here. Let's fullscreen this, delete the to do, and then I'm going to paste this snippets which we used earlier as well, I'm going to import the packages. So we got the session and we have begun the transaction. So I'm going to create a new product object here and then associate that with our existing category called beverages. So first I'll give the category called beverages by typing c one equals to session dot get. And then I type your category class ID is one and then this C one has to be created as a category object.

Let's also create a new product object by typing product, p one equals two new product. Let's give some values to that P one dot set product name of, let's say, p one dot set quantity per unit, let's say 10 boxes into 20 bags. Let's give it a price of let's say for example, eating point zero dollars, ID is automatically generated. But I'm going to say p one dot set category of C one. And now if I come down here and say session dot persist, p one, p one will now be inserted with the primary key value of c one as its category ID. So I'm going to type your system dot out dot print ln, new product saved with ID and then I type your P one dot get product ID.

Save this run the same and you will see that There is a new CREATE TABLE command with ALTER TABLE also here because there is a foreign key being added over here. This is to retrieve the category object. And then we have an insert into products with all these values and say new products here with ID one. Let's go and have a look at the same. So first I go here and refresh this, you will see that there is a products table. I'm going to click on the products here.

So select star from products appears. I click on Run, and you will see that there is a new product ID auto generated ID here, the values have come but importantly category underscore ID is one. And that's because we did an association mapping over here, many to one also brings us other features. For example, if I retrieve a product object based on the ID, the corresponding category also will be retrieved to demonstrate the same Let's take another program. So I go to this package, new class. And then I type your package names six The program name is mean.

Let's also add the main function fullscreen this, get rid of this, I will also add the basic code snippet that we have been using. And now we don't need a transaction this time because we're only going to retrieve the data. So I'm going to type your P one equals to session dot get, and then say product dot class ID of one, that's the newly added product. And p one is going to be a product object, we close the session and then I'm going to type your sis out p one, you will see that the product object comes with not only the data from the products table, but also from the corresponding category table. So if I save this and run the same, you should see that the product along with the category has been returned over here and it says your category ID is one name is beverages description is so on.

So, you can see that it has achieved that by using the joint statement here. So it is Join the products table with the categories table. This kind of retrieval of one entity based on another entity is called as eager fetch, because we only asked for a product object, but hibernate went ahead and brought the corresponding category also. There is also another concept called lazy fetch, where you ask for one entity, even though there are other entities that this entity refers to. hibernate will only fetch the Ask the entity which is called lazy fetch. By default, many to one is an eager fetch and one to many is lazy fit

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.