简体   繁体   English

与Java EE中的数据库的简单连接

[英]Simple Connection to Database in Java EE

I'm new to Java EE; 我是Java EE的新手。 I have a good background in ASP .NET with WebForms and MVC. 我在使用WebForms和MVC的ASP .NET中具有良好的背景。 I find that nothing is as easy in Java EE as it is in ASP .NET. 我发现Java EE中没有什么比ASP .NET中的那么容易。 Nevertheless, all I am trying to do is connect to a local Oracle Express database using persistance on a JBoss runtime. 不过,我要做的就是使用JBoss运行时上的持久性连接到本地Oracle Express数据库。 I am absolutely going mad trying to get this to work. 试图使它起作用我绝对会发疯。 In ASP .NET, all I had to do was specify a connection string and walla. 在ASP .NET中,我要做的就是指定一个连接字符串和walla。 I would really appreciate it if someone could either show me what I'm doing wrong or point me to a good resource to use JPA in eclipse. 如果有人可以向我展示我做错了什么,或为我提供在Eclipse中使用JPA的良好资源,我将不胜感激。

Here's my code: 这是我的代码:

persistence.xml persistence.xml中

I am sure that the database properties are correct; 我确定数据库属性正确; eclipse was able to make a successful ping. eclipse能够成功执行ping操作。

<?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="Testing" transaction-type="RESOURCE_LOCAL">
        <class>model.Testq</class>
        <properties>
            <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521:XE"/>
            <property name="javax.persistence.jdbc.user" value="system"/>
            <property name="javax.persistence.jdbc.password" value="admin"/>
            <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
        </properties>
    </persistence-unit>
</persistence>

Testq class Testq类

This class is just a simple entity in java for a very simple table in the oracle database. 对于oracle数据库中非常简单的表,此类只是java中的简单实体。

package model;

import java.io.Serializable;
import javax.persistence.*;

@Entity
@NamedQuery(name="Testq.findAll", query="SELECT t FROM Testq t")
public class Testq implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name="T_ID")
    private long tId;

    private String descr;

    public Testq() {
        tId = 0;
        descr = "ONE";
    }

    public long getTId() {
        return this.tId;
    }

    public void setTId(long tId) {
        this.tId = tId;
    }

    public String getDescr() {
        return this.descr;
    }

    public void setDescr(String descr) {
        this.descr = descr;
    }

}

DB Servlet 数据库Servlet

I am using this to display the result of a query from the database, but it fails at line 28. 我正在使用它来显示来自数据库的查询结果, 但是在第28行失败。

package com.db;

import java.io.IOException;
import java.io.PrintWriter;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import model.Testq;

@WebServlet("/DB")
public class DB extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public DB() {
        super();
        // TODO Auto-generated constructor stub
    }

    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Testq test = new Testq();
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("Testing");
        EntityManager em = emf.createEntityManager();
        test = em.createNamedQuery("Testq.findAll", Testq.class).getSingleResult();
        em.close();
        emf.close();
        PrintWriter out = response.getWriter();
        out.println(test.getDescr());
    }
}

Thank you all so much. 非常感谢大家。 it turns out that the driver had to be in the lib folder of WEB-INF. 原来,该驱动程序必须位于WEB-INF的lib文件夹中。 I really appreciate all of your help, specifically Thorbjørn Ravn Andersen for identifying the error when I was sick of dealing with it. 我非常感谢您的所有帮助,尤其是ThorbjørnRavn Andersen在我厌倦了处理错误时发现错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM