Newsgroup: it.comp.java
Titolo: Rilevare il tipo di database

Ciao,
dovrei fare un'applicazione in grado di leggere, usando hibernate, da
tutti i possibili database che hibernate supporta (   *  DB2 -
org.hibernate.dialect.DB2Dialect
    * HypersonicSQL - org.hibernate.dialect.HSQLDialect
    * Informix - org.hibernate.dialect.InformixDialect
    * Ingres - org.hibernate.dialect.IngresDialect
    * Interbase - org.hibernate.dialect.InterbaseDialect
    * Pointbase - org.hibernate.dialect.PointbaseDialect
    * PostgreSQL - org.hibernate.dialect.PostgreSQLDialect
    * Mckoi SQL - org.hibernate.dialect.MckoiDialect
    * Microsoft SQL Server - org.hibernate.dialect.SQLServerDialect
    * MySQL - org.hibernate.dialect.MySQLDialect
    * Oracle (any version) - org.hibernate.dialect.OracleDialect
    * Oracle 9 - org.hibernate.dialect.Oracle9Dialect
    * Progress - org.hibernate.dialect.ProgressDialect
    * FrontBase - org.hibernate.dialect.FrontbaseDialect
    * SAP DB - org.hibernate.dialect.SAPDBDialect
    * Sybase - org.hibernate.dialect.SybaseDialect
    * Sybase Anywhere - org.hibernate.dialect.SybaseAnywhereDialect
)
- Le librerie prendono automaticamente il file di configurazione dalla
root dell'applicazione oppure gli posso specificare io a quale file
deve riferirsi? In questo caso è possibile rilevare il database da
Java?
- Altrimenti come posso fare per impostare direttamente nel file di
configurazione di Hibernate la possibilità di usare un qualsiasi DB?
Grazie in anticipo.

 pretenzioso.
In realtà non è così assurda la cosa: perchè data una connessione JDBC, 
devo anche configurare il dialect Hibernate?
Mi pare che Liferay faccia una cosa simile...potresti provare a dare 
un'occhiata ai sorgenti per capire come fa.
-- 
Lucio Benfante
JUG Padova           
http://www.parancoe.org
 ...have a look at it!
www.jugpadova.it
 
http://www.jugevents.org


Io ho risolto mettendo tutto nel file di configurazione e commentando
le linee con i database tranne quella con il db che sto usando: poi
ognuno può cambiare la cosa direttamente dal file di configurazione,
anche Liferay fa così... magari crea un altro file di configurazione,
ma il concetto è lo stesso.
Ora, però mi è venuto un altro dubbio: io dal database devo solo
leggere dei campi, stavo seguendo un tutorial di Hibernate e ho visto
che si dovrebbe creare un altro file di configurazione che fa il
mapping della struttura del database, ma non so se si può evitare di
fare questo file nel caso in cui si debba solo leggere dal db e non
scriverci.

Sarah ha scritto:

La questione non ti cambia.
Per poter leggere deve sapere (Hibernate) dove deve andare. Comunque.
cmq da una ricerchetta internet (immagino ci sia arrivata/o anche tu)
You can construct the hibernate.cfg file at execution time, and then you
create the procedure that you send as parameter an array or list
It would be something like that
Code:
public static void buildOtherConfiguration(String args[]) { try {
Configuration cfg = new Configuration();
cfg.setProperty("hibernate.connection.driver_class","com.microsoft.jdbc.sqlserver.SQLServerDriver 
"); cfg.setProperty("hibernate.connection.url",args[0]);
cfg.setProperty("hibernate.connection.databasename",args[1]);
cfg.setProperty("hibernate.connection.username ",args[2]);
cfg.setProperty("hibernate.connection.password",args[3]);
cfg.setProperty("dialect",args[4]);
cfg.setProperty(Environment.DIALECT,args[5]);
cfg.setProperty("transaction.factory_class","org.hibernate.transaction.JDBCTransactionFactory"); 
cfg.setProperty("hibernate.cache.provider_class","org.hibernate.cache.HashtableCacheProvider 
"); cfg.addResource("model/ventas/entity/Client.hbm.xml");
cfg.addResource("model/ventas/entity/Sell.hbm.xml"); } catch (Throwable
ex) { ex.printStackTrace(); } }
--
ac