How to use Hibernate for two different schemas in the same database

I want to use two different schemas in the database, each schema has the same set of tables, but the data is different. How to use sleep mode and point to two different schemes. I am new to hibernate. Please provide me with links.

Thank you in advance

+3
source share
3 answers

You can specify it as an element schemaby specifying a table for your entity.

@Table (name = "TABLE_NAME", schema = "SCHEMA_NAME")

Otherwise, you can use a separate one EntityManagerthat points to the corresponding scheme, and then use the same object as their structure.


: , SessionFactory, - .

SessionFactory sf_1 = new  Configuration().configure("schema1config.cfg.xml").buildSessionFactory();
SessionFactory sf_2 = new Configuration().configure("schema2config.cfg.xml").buildSessionFactory();

session_1 = sf_1.openSession();  //-- Similarly for other

, , .

+7

:

<hibernate-configuration>
       <session-factory>
        <property name="hibernate.connection.driver_class">com.ibm.db2.jcc.DB2Driver</property>
        <property    name="hibernate.connection.url">jdbc:db2://localhost:50000/TEST</property>
        <property name="hibernate.connection.username">user</property>
        <property name="hibernate.connection.password">pwd</property>
        <property name="hibernate.dialect">org.hibernate.dialect.DB2Dialect</property>
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hbm2ddl.auto">auto </property>
        <mapping class="com.test.db2procedure.User"/>
        <mapping class="com.test.db2procedure.User1"/>
      </session-factory>
     </hibernate-configuration>

:

@Entity
@Table(name="SCHEMA.USER") ////Here you can specify your schema name. Here my     schema name is schema
public class User implements Serializable {

private String city;

private String firstname;
enter code here
@Id
@Column(name="ID")
private String id;

private String lastname;

public User() {
}

public String getCity() {
    return this.city;
}

public void setCity(String city) {
    this.city = city;
}
}

:

@Entity
@Table(name="SCHEMA1.USER") //Here you can specify your schema name. Here my schema name is schema1
 public class User1 implements Serializable {
    private String city;

    private String firstname;

    @Id
    @Column(name="ID")
    private String id;

    private String lastname;

    public User1() {
    }

    public String getCity() {
        return this.city;
    }

    public void setCity(String city) {
        this.city = city;
    }
}

:

public class Test{
    public static void main(String args[]){
         SessionFactory factory ;
         Configuration cfg = new Configuration();
         cfg.configure("hibernate.cfg.xml");          
         List<User> user=new ArrayList<User>();
         factory = cfg.buildSessionFactory();
         Session session = factory.openSession();        
         String hql = "select u2.city from User u1,User1 u2 where u1.id=u2.id";
         Query query = session.createQuery(hql);

         List results = query.list();
         System.out.println("User City: "+results.get(0).toString());
    }
}

Test.class , , 1

+2

( hibernate.reveng.xml):

<hibernate-reverse-ingineering>
<schema-selection math-catalog="DataBaseName" />
<table-filter match-schema="FirstSchema" match-name="table-name1" />
<table-filter match-schema="SecondSchema" match-name="table-name2" />
</hibernate-reverse-ingineering>
0
source

All Articles