Pregunta

Aquí está el archivo de configuración para 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>

Lo que hay que especificar para SQL Server 2005? Lo hice así:

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

Mi pregunta es más precisa de cómo especificar la base de datos que tengo que conectar?

En MySQL que solía hacer la siguiente manera:

<property name="hibernate.connection.url">jdbc:mysql://localhost/test</property> 
¿Fue útil?

Solución

Las propiedades que son base de datos específica son:

  • hibernate.connection.driver_class: clase del controlador JDBC
  • hibernate.connection.url: JDBC URL
  • hibernate.connection.username: base de datos de usuario
  • hibernate.connection.password: contraseña de base de datos
  • hibernate.dialect: El nombre de clase de un org.hibernate.dialect.Dialect Hibernate que permite Hibernate para generar SQL optimizado para una base de datos relacional particular.

Para cambiar la base de datos, usted debe:

  1. Proporcionar un controlador JDBC apropiado para la base de datos en la ruta de clase,
  2. Cambiar las propiedades de JDBC ( conductor, url, usuario, contraseña )
  3. Cambiar el Dialect utilizado por Hibernate para hablar, en la base de datos

Hay dos controladores para conectarse a SQL Server; la fuente abierta jTDS y el Microsoft uno. La clase del controlador y la URL de JDBC dependen de cuál de ellos utilizar.

Con el controlador jTDS

El nombre de la clase controlador es net.sourceforge.jtds.jdbc.Driver.

El formato de URL para sqlserver es:

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

Así que la configuración de Hibernate se vería así (nota que puede omitir el prefijo hibernate. en las propiedades):

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

El nombre de la clase controlador es com.microsoft.sqlserver.jdbc.SQLServerDriver.

El formato de URL es:

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

Así que la configuración de Hibernate se vería así:

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

Referencias

Otros consejos

La dirección URL de conexión debe tener este aspecto para SQL Server:

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

Ejemplos:

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

También necesita mención esquema predeterminado para el servidor SQL: DBO

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

Probado con hibernación 4

No se olvide de permitir conexiones TCP / IP en las herramientas de configuración de SQL Server

Finalmente esto es para Hibernate 5 en Tomcat.

Compilado todas las respuestas de lo anterior y añadió mis consejos, que funciona como un encanto para 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>

Mantener los archivos jar en lib-inf web en caso que se encontraban Jar y no es capaz de identificar.

Se trabajó en mi caso en el que todo estaba bien, pero no era capaz de cargar la clase controlador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top