【问题标题】:How can I configure persistence.xml for SQL server如何为 SQL Server 配置 persistence.xml
【发布时间】:2012-08-18 05:37:27
【问题描述】:

如何配置 persistence.xml 文件以连接到我的 SQL Server。一些信息连接为:主机、数据库名、用户名、密码、端口...

【问题讨论】:

  • 您使用的是哪个应用服务器?你用的是弹簧吗?还是纯 JEE5 托管 bean JEE6?你想使用hibernate native还是JPA?请提供有关您的技术堆栈的更多信息;)。
  • 我正在开发基于JSF2的web,web服务器是glasshfish和JEE6。
  • 请不要将[jsf] 标记用于与JSF 完全无关的问题。只有当您在 JSF 视图(Facelets/XHTML 文件)或将其链接到 JSF managedbean 和/或理解 JSF 生命周期方面遇到问题时,您才是真正的 JSF 问题。但是配置 JPA 与 JSF 无关。使用 SpringMVC/Struts/Wicket/等任何其他 MVC 框架时,您会遇到完全相同的问题。这不是我第一次从您的问题中删除[jsf] 标签,请注意这一点。

标签: java sql-server jpa


【解决方案1】:

使用.xml 配置文件设置到 MySQL 数据库的连接池对于像您这样刚入门的人来说可能非常麻烦。

在我看来,你应该看看这个short guide。您只需启动 Glassfish 服务器,打开浏览器并浏览到 http://yourdomain.com:4848 即可访问管理面板。之后,只需按照该文章中的说明创建JDBC Connection poolJDBC Resource。此时,您只需要使用您的 IDE(NetBeans 等)打开 persistence.xml 文件,并将 Data Source 属性设置为您的 JDBC Resource 名称即可。

需要注意的是,一定要下载最新的MySQL Connector/J并复制文件

mysql-connector-java-<version>-bin.jar 

进入文件夹

<GlassFish-install-folder>\glassfish\domains\domain1\lib\ext

否则,如果您在创建JDBC Connection pool 后尝试ping 数据库,则会遇到错误Class name is wrong or classpath is not set for : com.mysql.jdbc.jdbc2.optional.MysqlDataSource

【讨论】:

  • “SQL Server”与“MySQL”不同。
【解决方案2】:

首先为 sqlserver 下载 jdbc 驱动程序并将其放入 glassfish lib 目录并启动它。 使用 Glassfish 管理控制台:

  1. 定义一个jdbc连接池并指定Host、DatabaseName、 用户名、密码、端口...
  2. 定义一个 jdbc 资源并选择您在步骤 1 中指定的连接池名称
  3. 然后获取 jdbc 资源的名称并将其放入您的 persistence.xml 文件中:&lt;jta-data-source&gt;YOUR-JDBC-RESOURCE-NAME&lt;/jta-data-source&gt;

现在您可以连接到数据库了。

如果您使用的是 Netbeans,它有一些不错的向导可以在 glassfish 中生成连接池和 jdbc 资源。

由于您使用的是 JEE6,这是使用注释的另一种方式:

    import javax.annotation.sql.DataSourceDefinition;

@DataSourceDefinition(name = "java:app/env/myDatasource",
        minPoolSize = 0,
        initialPoolSize = 0,
        className = "your.driver.class",
        serverName="localhost",
        user = "admin",
        password = "admin",
        databaseName = "test"
)

public class DbConfiguration {
}

欲了解更多信息,请查看here

【讨论】:

  • 我完成了您提供的链接的这些步骤。我的班级@DataSourceDefinition(name = "myDatasource", minPoolSize = 0, initialPoolSize = 0, className = "com.microsoft.sqlserver.jdbc.SQLServerDataSource", serverName="localhost", user = "xoso", password = "xoso~123", databaseName = "XoSoDB" )。当我检索数据时,它显示错误Exception while preparing the app : Invalid resource : myDatasource__pm com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Invalid resource : myDatasource__pm at ...
  • 你有没有把你的数据源放在persistence.xml &lt;jta-data-source&gt;java:app/env/myDatasource&lt;/jta-data-source&gt;
  • 当你想使用@PersistenceContext 时,也要指定unitName。 @PersistenceContext(unitName = "YourUnitName")
  • 这是我的代码@PersistenceContext(unitName = "ConnectToDBManuallyPU") private EntityManager em; public dotMB() { } public List&lt;Dot&gt; retriveAllDot() { TypedQuery&lt;Dot&gt; query = em.createNamedQuery("Dot.findAll", Dot.class); return query.getResultList(); }。和持久性&lt;persistence-unit name="ConnectToDBManuallyPU" transaction-type="JTA"&gt; &lt;provider&gt;org.eclipse.persistence.jpa.PersistenceProvider&lt;/provider&gt; &lt;jta-data-source&gt;myDatasource&lt;/jta-data-source&gt; &lt;class&gt;Dot&lt;/class&gt; &lt;/persistence-unit&gt; 我运行它显示顶部错误。
猜你喜欢
  • 2011-04-04
  • 2021-05-28
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 2012-01-16
  • 1970-01-01
  • 2018-05-14
  • 2011-04-01
相关资源
最近更新 更多