java - for - persistence xml jpa sql server
cómo configurar el archivo de configuración de hibernación para el servidor sql (5)
Finalmente esto es para Hibernate 5
en Tomcat
.
Recopilé todas las respuestas de las anteriores y agregué mis consejos, que funcionan 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>
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>
¿Qué 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 más precisa es cómo especificar la base de datos a la que me tengo que conectar.
En MySQL solía hacer esto:
<property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>
La URL de conexión debería verse así 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
...
Las propiedades que son específicas de la base de datos son:
-
hibernate.connection.driver_class
: clase de controlador JDBC -
hibernate.connection.url
: JDBC URL -
hibernate.connection.username
: usuario de la base de datos -
hibernate.connection.password
: contraseña de la base de datos -
hibernate.dialect
: nombre de clase de Hibernateorg.hibernate.dialect.Dialect
que permite a Hibernate generar SQL optimizado para una base de datos relacional en particular.
Para cambiar la base de datos, debes hacer lo siguiente:
- Proporcione un controlador JDBC apropiado para la base de datos en la ruta de clases,
- Cambiar las propiedades JDBC ( controlador, url, usuario, contraseña )
- Cambiar el
Dialect
utilizado por Hibernate para hablar con la base de datos
Hay dos controladores para conectarse a SQL Server; el código abierto jTDS y el de Microsoft. La clase de controlador y la URL JDBC dependen de cuál use.
Con el controlador jTDS
El nombre de la clase del 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 sería similar (tenga en cuenta 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 clase del controlador es com.microsoft.sqlserver.jdbc.SQLServerDriver
.
El formato de URL es:
jdbc:sqlserver://[serverName[/instanceName][:portNumber]][;property=value[;property=value]]
Entonces 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
No olvide habilitar las conexiones tcp / ip en las herramientas de configuración de SQL SERVER
También debemos mencionar el esquema predeterminado para SQSERVER: dbo
<property name="hibernate.default_schema">dbo</property>
Probado con hibernate 4