jpa
एकल तालिका वंशानुक्रम रणनीति
खोज…
पैरामीटर
टिप्पणी | उद्देश्य |
---|---|
@Inheritance | उपयोग की गई वंशानुक्रम रणनीति के प्रकार को निर्दिष्ट करता है |
@DiscriminatorColumn | डेटाबेस में एक कॉलम निर्दिष्ट करता है जिसका उपयोग प्रत्येक इकाई को निर्दिष्ट निश्चित आईडी के आधार पर विभिन्न संस्थाओं की पहचान करने के लिए किया जाएगा |
@MappedSuperClass | मैप किए गए सुपर क्लास लगातार नहीं होते हैं और केवल अपने उपवर्गों के लिए राज्य धारण करते थे। आम तौर पर अमूर्त जावा कक्षाएं @MapperSuperClass के साथ चिह्नित की जाती हैं |
@DiscriminatorValue | @DiscriminatorColumn द्वारा परिभाषित कॉलम में निर्दिष्ट मान। यह मान इकाई के प्रकार को पहचानने में मदद करता है |
टिप्पणियों
एकल तालिका रणनीति का लाभ यह है कि संस्थाओं की पुनर्प्राप्ति और सम्मिलन के लिए जटिल जुड़ाव की आवश्यकता नहीं होती है, लेकिन दूसरी ओर यह डेटाबेस स्थान को बर्बाद कर देता है क्योंकि कई स्तंभों को अशक्त होने की आवश्यकता होती है और उनके लिए कोई डेटा नहीं होता है।
एकल तालिका वंशानुक्रम रणनीति
एकल पदानुक्रम रणनीति के लिए वाहन पदानुक्रम का एक सरल उदाहरण लिया जा सकता है।
सार वाहन वर्ग:
package com.thejavageek.jpa.entities;
import javax.persistence.DiscriminatorColumn;
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;
import javax.persistence.TableGenerator;
@Entity
@Table(name = "VEHICLE")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "VEHICLE_TYPE")
public abstract class Vehicle {
@TableGenerator(name = "VEHICLE_GEN", table = "ID_GEN", pkColumnName = "GEN_NAME", valueColumnName = "GEN_VAL", allocationSize = 1)
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "VEHICLE_GEN")
private int idVehicle;
private String manufacturer;
public int getIdVehicle() {
return idVehicle;
}
public void setIdVehicle(int idVehicle) {
this.idVehicle = idVehicle;
}
public String getManufacturer() {
return manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
}
TransportableVehicle.java पैकेज com.thejavageek.jpa.entities;
आयात javax.persistence.MappedSuperclass;
@MappedSuperclass
public abstract class TransportationVehicle extends Vehicle {
private int loadCapacity;
public int getLoadCapacity() {
return loadCapacity;
}
public void setLoadCapacity(int loadCapacity) {
this.loadCapacity = loadCapacity;
}
}
PassengerVehicle.java
package com.thejavageek.jpa.entities;
import javax.persistence.MappedSuperclass;
@MappedSuperclass
public abstract class PassengerVehicle extends Vehicle {
private int noOfpassengers;
public int getNoOfpassengers() {
return noOfpassengers;
}
public void setNoOfpassengers(int noOfpassengers) {
this.noOfpassengers = noOfpassengers;
}
}
Truck.java
package com.thejavageek.jpa.entities;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue(value = "Truck")
public class Truck extends TransportationVehicle{
private int noOfContainers;
public int getNoOfContainers() {
return noOfContainers;
}
public void setNoOfContainers(int noOfContainers) {
this.noOfContainers = noOfContainers;
}
}
Bike.java
package com.thejavageek.jpa.entities;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue(value = "Bike")
public class Bike extends PassengerVehicle {
private int saddleHeight;
public int getSaddleHeight() {
return saddleHeight;
}
public void setSaddleHeight(int saddleHeight) {
this.saddleHeight = saddleHeight;
}
}
Car.java
package com.thejavageek.jpa.entities;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
@Entity
@DiscriminatorValue(value = "Car")
public class Car extends PassengerVehicle {
private int noOfDoors;
public int getNoOfDoors() {
return noOfDoors;
}
public void setNoOfDoors(int noOfDoors) {
this.noOfDoors = noOfDoors;
}
}
टेस्ट कोड:
/* Create EntityManagerFactory */
EntityManagerFactory emf = Persistence
.createEntityManagerFactory("AdvancedMapping");
/* Create EntityManager */
EntityManager em = emf.createEntityManager();
EntityTransaction transaction = em.getTransaction();
transaction.begin();
Bike cbr1000rr = new Bike();
cbr1000rr.setManufacturer("honda");
cbr1000rr.setNoOfpassengers(1);
cbr1000rr.setSaddleHeight(30);
em.persist(cbr1000rr);
Car avantador = new Car();
avantador.setManufacturer("lamborghini");
avantador.setNoOfDoors(2);
avantador.setNoOfpassengers(2);
em.persist(avantador);
Truck truck = new Truck();
truck.setLoadCapacity(100);
truck.setManufacturer("mercedes");
truck.setNoOfContainers(2);
em.persist(truck);
transaction.commit();
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow