Java + SQL Server - жизнеспособное решение?

Я собираюсь начать новый проект - переписать существующую систему (PHP + SQL Server) с нуля из-за некоторых очень серьезных ограничений по дизайну.

У нас есть неплохие знания о SQL Server (в настоящее время мы используем SQL Server 2000 в существующей системе), и мы хотели бы использовать его более новую версию (я думаю, 2008 г.) в нашем новом проекте.

Мне очень нравятся технологии, которые предлагает Java, особенно Spring Framework и Wicket, и я хорошо знаком с Java по другим проектам и ранее. Поэтому мы рассматриваем возможность использования Java и Microsoft SQL Server.

Для SQL Server существует два драйвера JDBC - jTDS и драйвер Microsoft - http://msdn.microsoft.com/en-us/data/aa937724.aspx . Я думаю, нам стоит протестировать их обоих.

Есть ли какие-то ограничения в таком решении, о которых мне следует знать? Есть ли у кого-нибудь опыт использования такого сочетания технологий?

Ответов (6)

Решение

Я работал над проектом с использованием MSQL Server в сочетании со стеком Java. Он работает очень хорошо и до тех пор, пока JDBC не должен заботиться о вашей базе данных. Мы использовали ehcache вместе с Hibernate, и у нас были проблемы с драйвером MS JDBC, поэтому мы перешли на jtds, и он работает очень хорошо.

Это было довольно давно, так что вы все еще можете дать драйверу MS шанс ...

jTDS отличный. Я использую его в течение многих лет без проблем в производственных средах с высокой доступностью.

Драйвер JDBC хорошо работает с SQL Server 2008, у меня с ним не было никаких проблем. Версия, которую вам нужно загрузить, зависит от установленной вами версии JRE. JRE6 использует JDBC4, JRE7 использует JDBC4.1 и т. Д. После того, как вы загрузите правильный драйвер из Microsoft и запустите установщик, вам нужно будет скопировать sqljdbc_auth.dll из каталога \ auth в каталог c: \ windows \ system32 . Затем можно использовать этот код для подключения:

В шапке:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

и в вашем классе:

public class connectToSQL {

    public void connectToDB() throws Exception {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        String connectionUrl = "jdbc:sqlserver://<IPADDRESS>:<PORT>;DatabaseName=<NAME OF DATABASE TO CONNECT TO>;IntegratedSecurity=false";    
        Connection con = DriverManager.getConnection(connectionUrl, "<SQL SERVER USER LOGIN>", "<SQL SERVER PASSWORD>");
        Statement s = con.createStatement();
        ResultSet r = s.executeQuery("SELECT * FROM <TABLENAME TO SELECT FROM>");
        while (r.next()) {
            System.out.println(r.getString(1));
        }
    }
}

Я не знаю о Java и 2008 ... но у вас не должно возникнуть особых проблем с Java и SQL2000. Как предложил lubos, вы сделаете себе одолжение, посмотрев на C#, но если вам намного удобнее работать с Java, тогда не должно быть никаких реальных ограничений, поскольку соединитель JDBC поддерживается Microsoft.

В течение нескольких лет мы запускали приложение, использующее Hibernate для связи с несколькими удаленными экземплярами MSQL Server, а также сразу переключились на драйвер jTDS после нескольких проблем с драйвером M $. С переключением у нас вообще не было никаких проблем. Однако это несложное приложение, поэтому в нем не используются большие объекты. Надеюсь, это поможет.

Я бы склонился к драйверу jTDS. У драйвера MSSQL есть ограничение: вы не можете повторно прочитать один и тот же столбец дважды. Это часто случается при использовании Hibernate.