Exp 3
Exp 3
Hema Sundharam
ID NO : 2200030323
EXPERIMENT-3.1-----A Library System:
Book:
package com.klu.EXP3LMS;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue("book") // Discriminator value for Book subclass
public class Book extends Item {
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue("dvd") // Discriminator value for DVD subclass
public class DVD extends Item {
import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
@Entity
@Table(name="items")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) // Using SINGLE_TABLE strategy for Table
per Class Hierarchy
@DiscriminatorColumn(name="item_type", discriminatorType = DiscriminatorType.STRING) //
Discriminator column to distinguish subclasses
@DiscriminatorValue("item") // Discriminator value for Item base class
public class Item {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int itemId;
@Column(name="title")
private String title;
// Getters and Setters
public int getItemId() {
return itemId;
}
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
transaction.commit();
session.close();
System.out.println("Inserted Data");
}
}
OUTPUT:
EXPERIMENT-3.2----- Vehicle
Vechile.java
package com.klu.EXP3Vechile;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) // Table per Concrete Class strategy
public abstract class Vehicle {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int vehicleId;
@Column(name = "model")
private String model;
@Entity
public class Car extends Vehicle {
@Column(name = "seats")
private int seats;
@Column(name = "fuel_type")
private String fuelType;
import javax.persistence.Column;
import javax.persistence.Entity;
@Entity
@Column(name = "type")
@Column(name = "engine_capacity")
return type;
this.type = type;
return engineCapacity;
this.engineCapacity = engineCapacity }
}
App.java:
package com.klu.EXP3Vechile;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
SessionFactory sf = md.getSessionFactoryBuilder().build();
car.setModel("Toyota Corolla");
car.setSeats(5);
car.setFuelType("Petrol");
session.save(car);
bike.setModel("Yamaha MT-07");
bike.setType("Sport");
bike.setEngineCapacity(689);
session.save(bike);
transaction.commit();
session.close();
System.out.println("Inserted Data");
OUTPUT:
Experiment-3.3—STORE
Product.java:
package com.klu.EXP3Store;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;
@Entity
@Table(name="product")
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "name")
return productId;
this.productId = productId;
return name;
this.name = name;
}
}
Clothing.java
package com.klu.EXP3Store;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
@Entity
@Table(name="clothing")
@Column(name = "size")
private String size;
@Column(name = "material")
return size;
this.size = size;
}
public String getMaterial() {
return material;
this.material = material;
Electronics.java:
package com.klu.EXP3Store;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;
@Entity
@Table(name="electronics")
@PrimaryKeyJoinColumn(name="productId") // Foreign key to Product table
public class Electronics extends Product {
@Column(name = "warranty")
private int warranty;
@Column(name = "brand")
private String brand;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
System.out.println("Inserted Data");
}
}
OUTPUT: