Mega Code Archive

 
Categories / Java / Hibernate
 

ClassHierchy Mapping Table Per Sub class

///////////////////////////////////////////////////////////////////////// <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE hibernate-mapping      PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"      "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping>   <class name="Book"          table="cd">      <id name="id"          type="integer"          unsaved-value="0">        <generator class="increment"/>      </id>   <property name="title"/>          <property name="artist"/>          <property name="purchasedate" type="date"/>          <property name="cost" type="double"/>   <joined-subclass name="SpecialEditionBook"                    table="secd">     <key column="id"/>     <property name="newfeatures" type="string"/>   </joined-subclass>   <joined-subclass name="InternationalBook"                    table="icd">     <key column="id"/>     <property name="languages"/>     <property name="region"/>   </joined-subclass>   </class> </hibernate-mapping> ///////////////////////////////////////////////////////////////////////// import java.io.*; import java.util.*;   public class Book {     int id;     String title;      String artist;     Date  purchaseDate;      double cost;     public Book() {     }     public Book(String title, String artist, Date purchaseDate, double cost) {       this.title = title;       this.artist = artist;       this.purchaseDate = purchaseDate;       this.cost = cost;     }     public void setId(int id) {        this.id = id;     }     public int getId(){        return id;     }     public void setTitle(String title) {        this.title = title;     }     public String getTitle() {        return title;     }     public void setArtist(String artist) {         this.artist = artist;     }     public String getArtist() {        return artist;     }     public void setPurchasedate(Date purchaseDate) {        this.purchaseDate = purchaseDate;     }     public Date getPurchasedate() {        return purchaseDate;     }     public void setCost(double cost) {        this.cost = cost;     }     public double getCost() {        return cost;     }   } ///////////////////////////////////////////////////////////////////////// <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC     "-//Hibernate/Hibernate Configuration DTD//EN"     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>     <session-factory>         <!-- Database connection settings -->         <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>         <property name="connection.url">jdbc:hsqldb:data/tutorial</property>         <property name="connection.username">sa</property>         <property name="connection.password"></property>         <!-- JDBC connection pool (use the built-in) -->         <property name="connection.pool_size">1</property>         <!-- SQL dialect -->         <property name="dialect">org.hibernate.dialect.HSQLDialect</property>         <!-- Echo all executed SQL to stdout -->         <property name="show_sql">true</property>         <!-- Mapping files -->         <mapping resource="Book.hbm.xml"/>     </session-factory> </hibernate-configuration> ///////////////////////////////////////////////////////////////////////// import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil {     public static final SessionFactory sessionFactory;     static {         try {             // Create the SessionFactory from hibernate.cfg.xml             sessionFactory = new Configuration().configure().buildSessionFactory();         } catch (Throwable ex) {             // Make sure you log the exception, as it might be swallowed             System.err.println("Initial SessionFactory creation failed." + ex);             throw new ExceptionInInitializerError(ex);         }     }     public static final ThreadLocal session = new ThreadLocal();     public static Session currentSession() throws HibernateException {         Session s = (Session) session.get();         // Open a new Session, if this thread has none yet         if (s == null) {             s = sessionFactory.openSession();             // Store it in the ThreadLocal variable             session.set(s);         }         return s;     }     public static void closeSession() throws HibernateException {         Session s = (Session) session.get();         if (s != null)             s.close();         session.set(null);     }          static Connection conn;      static Statement st;   public static void setup(String sql) {     try {       // Step 1: Load the JDBC driver.       Class.forName("org.hsqldb.jdbcDriver");       System.out.println("Driver Loaded.");       // Step 2: Establish the connection to the database.       String url = "jdbc:hsqldb:data/tutorial";       conn = DriverManager.getConnection(url, "sa", "");       System.out.println("Got Connection.");       st = conn.createStatement();       st.executeUpdate(sql);     } catch (Exception e) {       System.err.println("Got an exception! ");       e.printStackTrace();       System.exit(0);     }   }   public static void checkData(String sql) {     try {       HibernateUtil.outputResultSet(st           .executeQuery(sql)); //      conn.close();     } catch (Exception e) {       e.printStackTrace();     }   }     public static void outputResultSet(ResultSet rs) throws Exception{     ResultSetMetaData metadata = rs.getMetaData();     int numcols = metadata.getColumnCount();     String[] labels = new String[numcols];      int[] colwidths = new int[numcols];     int[] colpos = new int[numcols];     int linewidth;       for (int i = 0; i < numcols; i++) {         labels[i] = metadata.getColumnLabel(i + 1); // get its label         System.out.print(labels[i]+"  ");     }       System.out.println("------------------------");     while (rs.next()) {         for (int i = 0; i < numcols; i++) {         Object value = rs.getObject(i + 1);         if(value == null){             System.out.print("       ");         }else{             System.out.print(value.toString().trim()+"   ");         }                }         System.out.println("       ");     }     } } ///////////////////////////////////////////////////////////////////////// import java.util.*; public class InternationalBook extends Book {    private String languages;    private int region;      public InternationalBook() {   }   public InternationalBook(String title, String artist, Date purchaseDate, double cost, String language, int region) {     super(title, artist, purchaseDate, cost);     languages = language;     this.region = region;   }   public void setLanguages(String s) {     languages = s;   }   public String getLanguages() {     return languages;   }   public void setRegion(int i) {     region = i;   }   public int getRegion() {     return region;   } } ///////////////////////////////////////////////////////////////////////// log4j.rootCategory=WARN, console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n log4j.appender.stdout.Target=System.out ///////////////////////////////////////////////////////////////////////// import java.io.Serializable; import java.util.*; import org.hibernate.*; import org.hibernate.cfg.*; import org.hibernate.criterion.*; import org.hibernate.event.*; import org.hibernate.event.def.*; public class Main {    public static void main(String[] args) throws Exception {       HibernateUtil.setup("create table cd(id int,title varchar,artist varchar,purchasedate date,cost double);");           HibernateUtil.setup("create table secd(id int,newfeatures varchar);");           HibernateUtil.setup("create table icd(id int,languages varchar,region int);");           Session session = HibernateUtil.currentSession();       Book cd = new Book("Book", "R", new Date(), 9.99);       SpecialEditionBook secd = new SpecialEditionBook("sBook", "R", new Date(), 9.99, "W");       InternationalBook icd = new InternationalBook("IBook", "R", new Date(), 9.99, "S", 4);       session.save(cd);       session.save(secd);       session.save(icd);       session.flush();             session.close();      HibernateUtil.checkData("select * from cd");    } } ///////////////////////////////////////////////////////////////////////// import java.util.*; public class SpecialEditionBook extends Book {    private String newfeatures;      public SpecialEditionBook() {   }     public SpecialEditionBook(String title, String artist, Date purchaseDate, double cost, String features) {       super(title, artist, purchaseDate, cost);       newfeatures = features;     }   public void setNewfeatures(String s) {     newfeatures = s;   }   public String getNewfeatures() {     return newfeatures;   } }                     HibernateClassHierchyMappingTablePerSubclass.zip( 4,581 k)