Question

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

<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 est plus précisément la façon de spécifier la base de données que je dois vous connecter à?

En MySQL je faire comme ceci:

<property name="hibernate.connection.url">jdbc:mysql://localhost/test</property> 
Était-ce utile?

La solution

Les propriétés qui sont spécifique de base de données sont:

  • hibernate.connection.driver_class: Classe de pilote JDBC
  • hibernate.connection.url: URL JDBC
  • hibernate.connection.username: base de données utilisateur
  • hibernate.connection.password: mot de passe de la base de données
  • hibernate.dialect: Le nom de classe d'une mise en veille prolongée org.hibernate.dialect.Dialect qui permet à Hibernate de générer du SQL optimisé pour une base de données relationnelle particulière.

Pour modifier la base de données, vous devez:

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

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

Avec le pilote jTDS

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

Le format d'URL pour SQLServer est:

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

Ainsi, la configuration Hibernate ressemblerait (notez que vous pouvez sauter 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 du pilote est com.microsoft.sqlserver.jdbc.SQLServerDriver.

Le format d'URL est:

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

Ainsi, la configuration 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

Autres conseils

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

Il faut aussi mentionner le schéma par défaut du serveur SQL: dbo

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

Testé avec mise en veille prolongée 4

Ne pas oublier d'activer les connexions TCP / IP dans les outils de configuration SQL Server

Enfin ceci est pour Hibernate 5 dans Tomcat.

Compilé toutes les réponses de ce qui précède et ajouté mes conseils qui fonctionne 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>

Gardez les fichiers jar sous lib web-inf Incase vous avez inclus pot et il est en mesure d'identifier.

Il a travaillé dans mon cas où tout était ok, mais il n'a pas été en mesure de charger la classe du pilote.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top