SQLite, NetBeans, EclipseLink和JPA - NetBeans一直启动Apache Derby



我正在与NetBeans斗争,未能使一个项目(Vaadin -> Maven基于)连接到SQLite数据库。由于某些原因,每次我运行我的项目:

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

我做了以下的事情:

  1. "安装"SQLite JDBC驱动程序 -下载jar,转到Services -> Database并创建一个指向jar的新连接。我把它命名为SQLite 3.8.11.2。已成功添加并列在Databases -> Drivers下。
  2. 添加到数据库的连接—数据库是使用命令行工具创建的,位于NetBeans Maven项目的根目录中。目前它是空的,因为我想使用JPA从各自的实体类生成我的表。我添加了连接,它指向cookbook.sqlite文件。为了检查事情是否在这个阶段工作,我使用NetBeans的用户界面创建了一个小表,添加了一堆东西,然后使用终端检查数据库文件是否已经更改以及它包含的内容。没有问题。
  3. 解析Maven依赖项 -到我的项目pom.xml内的<dependencies/>,我添加:

    <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数据库进程 -这是所有这一切的bummer。详细的消息如下:

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

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

如果连接已经设置错误。

  1. 使用Netbeans菜单:Windows -> Services显示服务选项卡
  2. <
  3. 扩展服务器/gh>
  4. 扩展GlassFish服务器
  5. <
  6. 扩大资源/gh>
  7. 扩展JDBC
  8. 扩展JDBC资源
  9. 选择您的资源名称。
  10. 右键选择属性。注意池名称
  11. 扩展连接池
  12. 选择您刚才注意到的Pool
  13. 编辑属性以使用sqlite而不是derby。URL应该是jdbc:sqlite:<path to cookbook.sqlite>

如果你没有设置资源。

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

创建映射到表的类:

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

有一些教程可能是值得你快速完成的,即使它们也涵盖了一些不相关的材料,它们也不是那么长。

Java EE应用程序入门
使用MySQL数据库创建一个简单的Web应用程序

查看示例,在File> New Project> Samples> Java EE> Web JPA

相关内容

  • 没有找到相关文章

最新更新