Domanda

Ecco il file di configurazione per MySQL:

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">zgy01</property>
    <property name="hibernate.connection.pool_size">100</property>
    <property name="show_sql">false</property>
    <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

    <!-- Mapping files -->
    <mapping resource="model.hbm.xml"/>

  </session-factory>
</hibernate-configuration>

Cosa specificare per SQL Server 2005? L'ho fatto in questo modo:

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.driver_class">org.gjt.mm.mysql.Driver</property>
    <property name="hibernate.connection.url">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
    <property name="hibernate.connection.username">sa</property>
    <property name="hibernate.connection.password">lal</property>
    <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>

    <property name="hibernate.connection.pool_size">100</property>        
    <property name="show_sql">false</property>

    <!-- Mapping files -->
    <mapping resource="model.hbm.xml"/>

  </session-factory>
</hibernate-configuration>

La mia domanda è più precisamente come specificare il database che ho per la connessione a?

In MySQL ho usato per fare in questo modo:

<property name="hibernate.connection.url">jdbc:mysql://localhost/test</property> 
È stato utile?

Soluzione

Proprietà che sono database specifico sono:

  • hibernate.connection.driver_class: JDBC classe del driver
  • hibernate.connection.url: JDBC URL
  • hibernate.connection.username: utente del database
  • hibernate.connection.password: password del database
  • hibernate.dialect: Il nome della classe di un org.hibernate.dialect.Dialect Hibernate, che permette di generare Hibernate SQL ottimizzato per un particolare database relazionale.

Per modificare il database, è necessario:

  1. Fornire un driver JDBC appropriato per il database sul percorso delle classi,
  2. Modificare le proprietà JDBC ( conducente, url, utente, password )
  3. Cambia la Dialect usato da Hibernate per parlare con il database

Ci sono due driver per connettersi a SQL Server; l'open source jTDS e Microsoft uno. La classe del driver JDBC e l'URL dipendono da quale quella che si usa.

Con il driver jTDS

Il nome della classe del driver è net.sourceforge.jtds.jdbc.Driver.

Il formato URL per SQLServer è:

 jdbc:jtds:sqlserver://<server>[:<port>][/<database>][;<property>=<value>[;...]]

Quindi, la configurazione di Hibernate sarebbe simile (si noti che si può saltare il prefisso hibernate. nelle proprietà):

<hibernate-configuration>
  <session-factory>
    <property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
    <property name="connection.url">jdbc:jtds:sqlserver://<server>[:<port>][/<database>]</property>
    <property name="connection.username">sa</property>
    <property name="connection.password">lal</property>

    <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>

    ...
  </session-factory>
</hibernate-configuration>

Con Microsoft SQL Server JDBC 3.0:

Il nome della classe del driver è com.microsoft.sqlserver.jdbc.SQLServerDriver.

Il formato URL è:

jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]]

Quindi, la configurazione di Hibernate sarà simile:

<hibernate-configuration>
  <session-factory>
    <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
    <property name="connection.url">jdbc:sqlserver://[serverName[\instanceName][:portNumber]];databaseName=<databaseName></property>
    <property name="connection.username">sa</property>
    <property name="connection.password">lal</property>

    <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>

    ...
  </session-factory>
</hibernate-configuration>

Bibliografia

Altri suggerimenti

L'URL di collegamento dovrebbe essere simile a questo per SQL Server:

jdbc:sqlserver://serverName[\instanceName][:port][;databaseName=your_db_name]

Esempi:

jdbc:sqlserver://localhost
jdbc:sqlserver://127.0.0.1\INGESQL:1433;databaseName=datatest
...

Abbiamo anche bisogno di schema predefinito menzione per SQL SERVER: dbo

<property name="hibernate.default_schema">dbo</property>

Testato con Hibernate 4

Non dimenticare di abilitare connessioni TCP / IP in strumenti di SQL Server Configuration

Infine, questa è per Hibernate 5 in Tomcat.

Compiled tutte le risposte di cui sopra e ha aggiunto i miei consigli che funziona come un fascino per Hibernate 5 and SQL Server 2014.

<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">
   org.hibernate.dialect.SQLServerDialect
</property>
<property name="hibernate.connection.driver_class">
   com.microsoft.sqlserver.jdbc.SQLServerDriver
</property>
<property name="hibernate.connection.url">  
jdbc:sqlserver://localhost\ServerInstanceOrServerName:1433;databaseName=DATABASE_NAME 
</property>
<property name="hibernate.default_schema">theSchemaNameUsuallydbo</property>
<property name="hibernate.connection.username">
   YourUsername
</property>
<property name="hibernate.connection.password">
   YourPasswordForMSSQL
</property>

Mantenere i file jar sotto WEB-INF lib in caso si incluso vaso e non è in grado di identificare.

Ha funzionato nel mio caso dove tutto era ok, ma non è stato in grado di caricare la classe del driver.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top