gpt4 book ai didi

java - SQLite、NetBeans、EclipseLink 和 JPA - NetBeans 不断启动 Apache Derby 而不是 SQLite DB

转载 作者:行者123 更新时间:2023-12-01 11:05:10 26 4
gpt4 key购买 nike

我正在努力使用 NetBeans,但未能创建一个连接到 SQLite 数据库的项目(Vaadin -> 基于 Maven 的项目)。由于某种原因,每次我运行我的项目时:

  • NetBeans 启动 Apache Derby 数据库
  • JPA 不会在我的 SQLite 表中生成表(可能是因为我从未设法连接到它)

我已完成以下操作:

  1. “安装”SQLite JDBC 驱动程序 - 下载 jar,转到服务 -> 数据库并创建一个指向该 jar 的新连接。我将其命名为SQLite 3.8.11.2。它已成功添加并列在数据库 -> 驱动程序下。
  2. 添加到数据库的连接 - 数据库是使用命令行工具创建的,位于 NetBeans Maven 项目的根目录内。目前它是空的,因为我想使用 JPA 从相应的实体类生成我的表。我添加了连接,它指向 cookbook.sqlite文件。为了检查此阶段是否正常工作,我使用 NetBeans 的用户界面创建了一个小表,添加了一堆内容,然后使用终端检查数据库文件是否已更改及其包含的内容。这里没有问题。
  3. 解决 Maven 依赖项 - 到 <dependencies/>里面pom.xml我添加的项目:

    <dependencies>

    <!-- various other dependencies mostly related to Vaadin -->
    ...

    <dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>persistence-api</artifactId>
    <version>1.0.2</version>
    </dependency>

    <dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <version>2.5.2</version>
    <scope>provided</scope>
    </dependency>

    <dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
    <version>2.5.2</version>
    <scope>provided</scope>
    </dependency>
    </dependencies>
  4. 创建了一个持久性单元 - 我有 3 个实体类 - User , IngredientRecipe 。生成的persistence.xml包含:

    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="CookbookPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <non-jta-data-source>cookbook_db</non-jta-data-source>
    <class>com.ava.cookbook.models.User</class>
    <class>com.ava.cookbook.models.Ingredient</class>
    <class>com.ava.cookbook.models.Recipe</class>
    <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
    <properties>
    <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
    <property name="javax.persistence.jdbc.driver" value="org.sqlite.JDBC"/>
    <property name="javax.persistence.jdbc.url" value="jdbc:sqlite:/PATH_TO_PROJECT_ROOT/cookbook_db.sqlite"/>
    <property name="javax.persistence.jdbc.user" value="cookbook"/>
    <property name="javax.persistence.jdbc.password" value="cookbook"/>
    <property name="eclipselink.logging.level" value="FINEST"/>
    </properties>
    </persistence-unit>
    </persistence>

请注意,架构生成设置为 drop-and-create .

基本上这些是我的设置。当我尝试在输出窗口中运行项目时,会出现四个新选项卡:

  • Run (Cookbook) - 这个告诉我有关正在运行的项目的状态的信息(因为我还没有开始实际访问数据库(我无法连接到:3),它运行得很好很好)
  • GlassFish Server 4.1 - 有关项目运行所在的 GlassFish 服务器的信息
  • 浏览器日志 - 我使用 NetBeans 连接器,在 Google Chrome 中运行 Vaadin 项目时,此选项卡显示一堆与 Vaadin 相关的事件
  • Java DB 数据库进程 - 这是所有这一切中最糟糕的一个。这里的详细信息是:

    Fri Oct 09 15:02:47 CEST 2015 : Security manager installed using the Basic server security policy.
    Fri Oct 09 15:02:48 CEST 2015 : Apache Derby Network Server - 10.11.1.2 - (1629631) started and ready to accept connections on port 1527

在我看到之前,我以为我把整个 JPA-Entity-thing 搞砸了,但是在我特别注意到第二条消息之后,很明显该项目没有连接到 SQLite 数据库,而是运行它自己的数据库 Derby 数据库。

我对 Maven、EclipseLink、JPA 和 NetBeans 几乎没有任何经验,所以我很可能忽略了一些东西。一些建议甚至解决方案将不胜感激。

最佳答案

如果连接设置不正确。

  1. 使用 Netbeans 菜单:Windows -> 服务来显示服务选项卡。
  2. 扩展服务器
  3. 扩展 GlassFish 服务器
  4. 扩展资源
  5. 扩展 JDBC
  6. 扩展 JDBC 资源
  7. 选择您的资源名称。
  8. 右键单击查看属性。记下池名称
  9. 扩展连接池
  10. 选择您刚刚记下的池。
  11. 右键单击属性。
  12. 编辑属性以使用 sqlite 而不是 derby。网址应为jdbc:sqlite:<path to cookbook.sqlite>

如果您尚未设置资源。

  1. 选择您的项目。
  2. 右键单击“新建”->“其他”
  3. 在对话框中选择类别 = Glassfish,文件类型 = JDBC 资源
  4. 选择“创建新的 JDBC 连接池”。
  5. 将名称更改为您的资源名称
  6. 单击“下一步”两次
  7. 将连接池名称设置为您可以记住的名称。
  8. 将数据源类名称设置为您想要的任何名称。
  9. 设置资源类型 javax.sql.ConnectiPoolDataSource
  10. 点击“下一步”
  11. 检查对话框最后一个屏幕上的设置,然后单击“完成”。

创建映射到表的类:

  1. 选择您的项目。
  2. 右键单击“新建”->“其他”
  3. 在对话框中选择类别 = 持久性,文件类型 = 实体类
  4. 更改类名称和包名称

有些教程可能值得快速完成,尽管它们也涵盖了一些不相关的 Material ,但它们并不长。

Getting Started with Java EE Applications
Creating a Simple Web Application Using a MySQL Database

和/或

查看示例,位置为"file">“新建项目”>“示例”>“Java EE”>“Web JPA”

关于java - SQLite、NetBeans、EclipseLink 和 JPA - NetBeans 不断启动 Apache Derby 而不是 SQLite DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33039207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com