web-dev-qa-db-fra.com

comment configurer le fichier de configuration Hibernate pour le serveur SQL

Voici le fichier de configuration pour 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>

Que spécifier pour SQL Server 2005? Je l'ai fait comme ça:

<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>

Ma question plus précisément est comment spécifier la base de données à laquelle je dois me connecter?

Dans MySQL, je faisais comme ça: 

<property name="hibernate.connection.url">jdbc:mysql://localhost/test</property> 
38
Lalchand

Les propriétés qui sont spécifiques à la base de données sont les suivantes:

  • hibernate.connection.driver_class: classe de pilote JDBC
  • hibernate.connection.url: URL JDBC
  • hibernate.connection.username: utilisateur de la base de données
  • hibernate.connection.password: mot de passe de la base de données
  • hibernate.dialect: nom de classe d'un Hibernate org.hibernate.dialect.Dialect permettant à Hibernate de générer du SQL optimisé pour une base de données relationnelle particulière. 

Pour changer de base de données, vous devez:

  1. Fournissez un pilote JDBC approprié pour la base de données sur le chemin de classe, 
  2. Changer les propriétés de JDBC (driver, url, utilisateur, mot de passe)
  3. Changer la Dialect utilisée par Hibernate pour parler à la base de données

Il existe deux pilotes pour se connecter à SQL Server. l'open source jTDS et celui de Microsoft. La classe de pilote et l'URL JDBC dépendent de celle que vous utilisez.

Avec le pilote jTDS

Le nom de la classe de pilote est net.sourceforge.jtds.jdbc.Driver.

Le format de l'URL pour sqlserver est:

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

Ainsi, la configuration d'Hibernate ressemblerait à ceci (notez que vous pouvez ignorer le préfixe hibernate. dans les propriétés):

<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>

Avec Microsoft SQL Server JDBC 3.0:

Le nom de la classe de pilote est com.Microsoft.sqlserver.jdbc.SQLServerDriver.

Le format de l'URL est:

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

Donc, la configuration d'Hibernate ressemblerait à ceci:

<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>

Références

88
Pascal Thivent

L'URL de connexion devrait ressembler à ceci pour SQL Server:

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

Exemples:

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

Nous devons également mentionner le schéma par défaut pour SQSERVER: dbo

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

Testé avec Hibernate 4

5
rjha

N'oubliez pas d'activer les connexions TCP/IP dans les outils de configuration de SQL SERVER.

4
fguespe

Enfin, ceci est pour Hibernate 5 dans Tomcat

Compilé toutes les réponses de ce qui précède et ajouté mes conseils qui fonctionnent comme un charme pour 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>
1
Pritam Banerjee

Conservez les fichiers jar sous la bibliothèque Web-inf. Si vous avez inclus le fichier jar, il ne pourra pas l'identifier.

Cela a fonctionné dans mon cas où tout allait bien mais il n'a pas été possible de charger la classe de pilote.

0
Arjun Das