سؤال

هنا ملف التكوين لـ 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>

ماذا تحدد ل SQL Server 2005؟ لقد فعلت ذلك مثل هذا:

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

سؤالي بشكل أكثر دقة هو كيفية تحديد قاعدة البيانات التي يجب علي الاتصال بها؟

في mysql اعتدت أن أفعل مثل هذا:

<property name="hibernate.connection.url">jdbc:mysql://localhost/test</property> 
هل كانت مفيدة؟

المحلول

الخصائص التي هي قاعدة البيانات محددة نكون:

  • hibernate.connection.driver_class: فئة سائق JDBC
  • hibernate.connection.url: JDBC URL
  • hibernate.connection.username: مستخدم قاعدة البيانات
  • hibernate.connection.password: كلمة مرور قاعدة البيانات
  • hibernate.dialect: اسم الفصل السباتي org.hibernate.dialect.Dialect الذي يسمح لـ Hibernate بإنشاء SQL محسّنًا لقاعدة بيانات علائقية معينة.

لتغيير قاعدة البيانات ، يجب عليك:

  1. توفير برنامج تشغيل JDBC مناسب لقاعدة البيانات على مسار الفصل ،
  2. تغيير خصائص JDBC (برنامج التشغيل ، URL ، المستخدم ، كلمة المرور)
  3. غير ال Dialect تستخدمها السبات للتحدث إلى قاعدة البيانات

هناك برائقان للاتصال بخادم SQL ؛ المصدر المفتوح JTDS و Microsoft واحد. تعتمد فئة السائق وعنوان url JDBC على أي فئة تستخدمها.

مع سائق JTDS

اسم فئة السائق هو net.sourceforge.jtds.jdbc.Driver.

تنسيق عنوان URL لـ SQLServer هو:

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

لذلك سيبدو تكوين السبات (لاحظ أنه يمكنك تخطي hibernate. بادئة في الخصائص):

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

مع Microsoft SQL Server JDBC 3.0:

اسم فئة السائق هو com.microsoft.sqlserver.jdbc.SQLServerDriver.

تنسيق عنوان URL هو:

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

لذلك سيبدو تكوين السبات:

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

مراجع

نصائح أخرى

يجب أن يبدو عنوان URL للاتصال مثل هذا خادم SQL:

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

أمثلة:

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

نحتاج أيضًا إلى ذكر المخطط الافتراضي لـ SQServer: DBO

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

تم اختباره مع السبات 4

لا تنس تمكين اتصالات TCP/IP في أدوات تكوين خادم SQL

وأخيرا هذا ل Hibernate 5 في Tomcat.

جمعت جميع الإجابات من ما سبق وأضاف نصائحي التي تعمل مثل سحر ل 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>

حافظ على ملفات JAR ضمن Web-Inf liase ، لقد قمت بتضمين JAR ولم يتمكن من التعرف عليها.

لقد نجحت في حالتي حيث كان كل شيء على ما يرام ، لكنه لم يتمكن من تحميل فئة السائق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top