And*_*dez 3 java sql-server jooq
我是ORM的忠实粉丝,特别是涉及.NET with Entity Framework并使用LINQ使您的数据访问变得不那么繁琐和愉快.
但是,我目前正在研究Java,特别是关注ORM.我已经尝试过针对我们的SQL Server数据库的nHybernate - 并且由于某些表上没有键(唯一约束),我开始关注JOOQ.
我已经设法从SQL Server数据库生成我的Java类 - 但并非没有错误 - 使用JOOQ(v3.2.0).
根据这个页面JOOQ Connections,它提到了一个类org.jooq.util.sqlserver.SQLServerDatabase.但是当我在配置中生成这个时,我得到了class not found异常并且没有生成任何内容.我不得不使用org.jooq.util.jdbc.JDBCDatabase来生成我的代码.
这是我的配置文件(myjooqdbconfig.xml):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration xmlns="http://www.jooq.org/xsd/jooq-codegen-3.2.0.xsd">
<jdbc>
<driver>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver>
<url>jdbc:sqlserver://MYSERVER:1433;DatabaseName=MYDB</url>
<user>MYUSER</user>
<password>PWD</password>
</jdbc>
<generator>
<name>org.jooq.util.DefaultGenerator</name>
<database>
<name>org.jooq.util.jdbc.JDBCDatabase</name>
<inputSchema>dbo</inputSchema>
<includes>.*</includes>
<excludes></excludes>
</database>
<target>
<packageName>com.quorum.sentinel.dataAccess</packageName>
<directory>F:\Libraries\jooq\jOOQ-3.2.0\lib\gen</directory>
</target>
</generator>
</configuration>
Run Code Online (Sandbox Code Playgroud)
在找不到类的异常的情况下,我使用Java Decompiler查看了JAR文件jooq-meta-3.2.0.jar,它将显示这些类所在的位置.我看不到org.jooq.util.sqlserver.SQLServerDatabase类的定义.

我正在编译:
java -classpath jooq-3.2.0.jar; jooq-meta-3.2.0.jar; jooq-codegen-3.2.0.jar; sqljdbc4.jar;.org.jooq.util.GenerationTool /myjooqdbconfig.xml
这个org.jooq.util.sqlserver.SQLServerDatabase定义是否存在于任何JAR中?
另外,从上面的配置生成代码后,似乎需要很长时间,并且似乎处于某种循环中.
查看dbo下的生成文件 - Keys/Tables/Dbo,当我将文件复制到Netbeans项目(很多错误)时,我注意到了我的表的重复名称.我删除了重复项,到目前为止很好,我可以在下面的代码中从数据库中读取各种表:
public static void main(String[] args) {
Connection conn = null;
String userName = "MYUSER";
String password = "PWD";
String url = "jdbc:sqlserver://MYSERVER:1433;DatabaseName=MYDB";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
conn = DriverManager.getConnection(url, userName, password);
DSLContext create = DSL.using(conn);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(simpleDateFormat.format(new Date( new GregorianCalendar().getTimeInMillis())));
SelectJoinStep<Record> from = create.select().from(Configuration.CONFIGURATION);
Result<Record> result = from.fetch();
System.out.println(simpleDateFormat.format(new Date( new GregorianCalendar().getTimeInMillis())));
for (Record r : result) {
Object id = r.getValue(Configuration.CONFIGURATION.NAME);
Object time = r.getValue(Configuration.CONFIGURATION.VALUE);
System.out.println("Record: : ID: " + id + " Time: " + time);
}
System.out.println(simpleDateFormat.format(new Date( new GregorianCalendar().getTimeInMillis())));
} catch (Exception e) {
// For the sake of this tutorial, let's keep exception handling simple
e.printStackTrace();
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException ignore) {
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以只是在那个混乱中重申我的问题:
有了jOOQ 3.2,jOOQ已经成为双重许可.SQL Server集成仅适用于jOOQ Professional Edition许可证.但是,您可以下载适用于SQL Server的30天免费试用版.
请注意,还有一个针对jOOQ 3.2.1(即将发布)的修复,为社区版用户提供更多信息,而不仅仅是堆栈跟踪.
另请参见:jooq-3.2.0和db2数据库
| 归档时间: |
|
| 查看次数: |
3351 次 |
| 最近记录: |