【问题标题】:Get an oracle connection using JDBC, tomcat and jpa使用 JDBC、tomcat 和 jpa 获取 oracle 连接
【发布时间】:2017-12-31 01:08:38
【问题描述】:

我正在将一个 Web 服务从 .NET WCF 移植到一个独立的 Java Web 服务,该 Web 服务具有一些有助于控制的非生成类。

我很难理解连接到 Oracle 数据库 10g 的所有选项。我一直在扫描互联网,试图找到一种简单的方法来获得连接或使用 Spring Boot 提供的默认设置。

或多或少是我想要的: Connection conn = DriverManager.getConnection("connectionDB")

我在 Maven 中使用 Spring Boot、spring、jpa 和 tomcat (8.5) 连接池。这是 POM 文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.mydomain</groupId>
<artifactId>ArtifactName</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<name>SolicitacaoProcedimento3_03_02</name>
<description></description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.8.RELEASE</version>
    <relativePath/> 
    <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web-services</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.3.0</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.metro</groupId>
        <artifactId>webservices-rt</artifactId>
        <version>2.3</version>
    </dependency>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <scope>test</scope>
        <version>2.44.0</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>test</scope>
        <version>4.11</version>
    </dependency>

    <!-- Spring data JPA, default tomcat pool -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- Oracle JDBC driver -->
    <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc7</artifactId>
        <version>12.1.0</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <plugin>
            <groupId>org.jvnet.jax-ws-commons</groupId>
            <artifactId>jaxws-maven-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <goals>
                        <goal>wsimport</goal>
                    </goals>
                    <configuration>
                        <wsdlFiles>
                            <wsdlFile>tissSolicitacaoProcedimentoV3_03_02.wsdl</wsdlFile>
                        </wsdlFiles>
                        <vmArgs>
                            <vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
                        </vmArgs>
                        <staleFile>${project.build.directory}/jaxws/stale/tissSolicitacaoProcedimentoV3_03_02.stale</staleFile>
                    </configuration>
                    <id>wsimport-generate-tissSolicitacaoProcedimentoV3_03_02</id>
                    <phase>generate-sources</phase>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>javax.xml</groupId>
                    <artifactId>webservices-api</artifactId>
                    <version>2.0</version>
                </dependency>
            </dependencies>
            <configuration>
                <sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir>
                <xnocompile>true</xnocompile>
                <verbose>true</verbose>
                <extension>true</extension>
                <catalog>${basedir}/src/jax-ws-catalog.xml</catalog>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>
                <webResources>
                    <resource>
                        <directory>src</directory>
                        <targetPath>WEB-INF</targetPath>
                        <includes>
                            <include>jax-ws-catalog.xml</include>
                            <include>wsdl/**</include>
                        </includes>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
    </plugins>
</build>

这是我的 application.properties 文件:

spring.datasource.url=jdbc:oracle:oci:@tnsDBName
spring.datasource.username=usr
spring.datasource.password=pass
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver

#hibernate config
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect

任何帮助将不胜感激。

【问题讨论】:

  • 如果您使用的是 jpa,为什么要连接?
  • 如何更改现有的非生成类以使用 jpa?在 .net 项目中,连接工厂用于访问数据库。我完全不确定如何在 java 项目中做同样的事情。
  • 谁知道什么是“非生成类”。不能添加注释的类?但是您可以为它们定义 XML 元数据。还有什么?
  • 我有一堆由 jaxws-wsimport 生成的类,但我有一些非生成类就像项目的控制部分,是从 .NET WCF 项目中借来的。

标签: java spring maven spring-boot spring-data-jpa


【解决方案1】:

你能解释一下你想要达到什么目标吗?如果您只需要设置与数据库(数据源)的连接,有两种方法:

  • 使用application.properties (spring.datasource.*),例如 spring.datasource.url= db_url

  • 通过编写Java配置类 使用 @Configuration 注释,您可以阅读更多关于它的信息 here

【讨论】:

  • 我已经在使用 application.properties,我在我的问题中发布了配置。我对其进行了编辑以添加配置。
  • 我需要知道的是:如何使用 spring.datasource.* 访问与数据库的连接。我需要在现有的 .net 类中进行哪些更改,以便它们可以使用隐式数据库连接。
  • 您需要创建 Java 配置类来设置您的数据源。您可以通过@Autowired DataSource dataSource 访问您的数据源。
  • 您好,感谢您的回复。如果我使用 Spring Boot 并配置了 application.properties 文件,我认为我不需要 Java 配置类。我只想知道如何访问现有类中的数据源。
  • 我想我明白了,但仍然找不到 @Autowired 工作所需的导入。谢谢
猜你喜欢
  • 1970-01-01
  • 2020-11-06
  • 2012-03-02
  • 2014-07-18
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2013-06-27
  • 1970-01-01
相关资源
最近更新 更多