Master java skills

Inheritance Mapping using annotations

Player.java

package com.javatrainingschool;

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 = "player_1")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "player_type", discriminatorType = DiscriminatorType.STRING)
@DiscriminatorValue(value = "player")

public class Player {
	
	@Id
	@GeneratedValue (strategy = GenerationType.AUTO)
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "Player [id=" + id + ", name=" + name + "]";
	}
	public Player(int id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	public Player() {
		super();
		// TODO Auto-generated constructor stub
	}

}

Cricketer.java

package com.javatrainingschool;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

@Entity
@DiscriminatorValue ("cricketer")
public class Cricketer extends Player {
	
	//inherited properties
	//id
	//name
	
	private String type;
	private String jerseyNumber;
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public String getJerseyNumber() {
		return jerseyNumber;
	}
	public void setJerseyNumber(String jerseyNumber) {
		this.jerseyNumber = jerseyNumber;
	}
	@Override
	public String toString() {
		return "Cricketer [type=" + type + ", jerseyNumber=" + jerseyNumber + "]";
	}
	public Cricketer(int id, String name, String type, String jerseyNumber) {
		super(id, name);
		this.type = type;
		this.jerseyNumber = jerseyNumber;
	}
	public Cricketer() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Cricketer(int id, String name) {
		super(id, name);
		// TODO Auto-generated constructor stub
	}
}

TennisPlayer.java

package com.javatrainingschool;

import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

@Entity
@DiscriminatorValue ("Tennis Player")
public class TennisPlayer extends Player{
	
	//inherited properties
	//id, name
	
	private int noOfMatches;
	private int wonMatches;
	
	public int getNoOfMatches() {
		return noOfMatches;
	}
	public void setNoOfMatches(int noOfMatches) {
		this.noOfMatches = noOfMatches;
	}
	public int getWonMatches() {
		return wonMatches;
	}
	public void setWonMatches(int wonMatches) {
		this.wonMatches = wonMatches;
	}
	public TennisPlayer(int id, String name, int noOfMatches, int wonMatches) {
		super(id, name);
		this.noOfMatches = noOfMatches;
		this.wonMatches = wonMatches;
	}
	public TennisPlayer() {
		super();
		// TODO Auto-generated constructor stub
	}
	public TennisPlayer(int id, String name) {
		super(id, name);
		// TODO Auto-generated constructor stub
	}
	@Override
	public String toString() {
		return "TennisPlayer [noOfMatches=" + noOfMatches + ", wonMatches=" + wonMatches + "]";
	}
	
}

Testing class

package com.javatrainingschool;

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;

public class TestingMainClass {

	public static void main(String[] args) {

		StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();
		Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build();

		SessionFactory factory = meta.getSessionFactoryBuilder().build();
		Session session = factory.openSession();

		Transaction t = session.beginTransaction();

		Player p1 = new Player();
		p1.setName("Neymar");

		Cricketer c1 = new Cricketer();
		c1.setJerseyNumber("18");
		c1.setName("Virat Kohli");
		c1.setType("Batsman");

		TennisPlayer t1 = new TennisPlayer();
		t1.setName("Rafael Nadal");
		t1.setNoOfMatches(143);
		t1.setWonMatches(101);

		session.persist(p1);
		session.persist(c1);
		session.persist(t1);

		t.commit();
		session.close();
		factory.close();
		System.out.println("Data saved successfully.");

	}

}