Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaRESTfulWebService+DAO+JDBC最佳实践_Java_Web Services - Fatal编程技术网

JavaRESTfulWebService+DAO+JDBC最佳实践

JavaRESTfulWebService+DAO+JDBC最佳实践,java,web-services,Java,Web Services,我的目标是构建一个RESTfulWebService,将数据CRUD到Oracle和MySQL数据库中 您能提供一些RESTfulWebService到CRUD数据库的最佳实践吗 我需要在webservice类中直接使用DAO还是直接实现JDBC?如果能提供一些有用的链接和例子将是有益的 我使用连接池!还好还是 在何处/如何保存一些配置值,例如数据库连接字符串、数据库凭据等?对于所有这些,服务器是否可以使用config.properties文件?诸如此类: config.properties d

我的目标是构建一个RESTfulWebService,将数据CRUD到Oracle和MySQL数据库中

您能提供一些RESTfulWebService到CRUD数据库的最佳实践吗

我需要在webservice类中直接使用DAO还是直接实现JDBC?如果能提供一些有用的链接和例子将是有益的

我使用连接池!还好还是

在何处/如何保存一些配置值,例如数据库连接字符串、数据库凭据等?对于所有这些,服务器是否可以使用config.properties文件?诸如此类:

config.properties db_url=jdbc:mysql://localhost/ 数据库=测试 db\u user=我的用户 db\u password=我的密码

InputStream input=新文件InputStreamConfig.properties; 属性属性=新属性; prop.loadinput

为了对数据库进行CRUD,我计划使用PreparedStatement。推荐内容:要使用SQL语句,请选择*from…,更新。。。设置、删除。。。直接在java代码中或者构建一些存储过程来查询、插入、更新、删除数据

我希望该应用程序将能够与不同的数据库工作。我想从MySQL和Oracle开始。实施这种方法的最佳实践是什么?用刀?如何将配置保留到不同类型的数据库

以下是我开始编写的一些代码:

package com.crunchify.restjersey;

import java.sql.Connection;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("/testws")
public class TestWS {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String currentDate() {
        Date dt = Calendar.getInstance().getTime();
        SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy hh:mm:ss");
        return df.format(dt);
    }

    @GET
    @Path("/getTables")
    @Produces(MediaType.TEXT_PLAIN)
    public String getTables() {
        return "Noroc";
    }

    @GET
    @Path("/getConnection")
    @Produces(MediaType.TEXT_PLAIN)
    public String getConnection() {

        String result = "";
        Connection conn = null;

        try {
            Context initialContext = new InitialContext();
            Context environmentContext = (Context) initialContext.lookup("java:comp/env");
            String dataResourceName = "jdbc/MySQLDB_db";
            DataSource dataSource = (DataSource) environmentContext.lookup(dataResourceName);
            conn = dataSource.getConnection();

            if (!conn.isClosed())
                result += "Connection established!";
            else
                result += "Cannot establish connection!";



            conn.close();
        }
        catch(Exception ex) {
            result += ex.getMessage();
        }

        return result;

    }
}

看起来您更喜欢在某种应用服务器上使用标准JEE技术,比如JAX-RS,因为您通过JNDI查找数据源

我建议使用DAOs访问数据库。DAO通常会减少样板代码,如获取DB连接、将查询结果映射到POJO等。此外,我建议使用某种O/R映射器来访问DB。JPA和普通Hibernate是JPA最常见的两种,使用应用服务器提供的实现或在Tomcat上休眠。 是的,您肯定应该使用连接池。 保存配置值的位置在某种程度上取决于环境。通常,配置不应该打包在您的工件WAR、JAR、EAR中,除非有某种机制覆盖您的配置值。常见的选项是Java系统属性和命令行参数。 如上所述,我建议使用一些O/R映射器。如果使用普通SQL,那么准备好的语句是一个好主意。准备好的语句确保您不易受到SQL注入攻击,如果您在SQL语句中将一些未替换的用户输入作为参数,则可能会发生SQL注入攻击。 我再次建议使用O/R映射器JPA或Hibernate。配置取决于您的环境。您将在Jboss/Glassfish/Websphere等应用服务器上配置数据源。其他环境将使用配置文件、java系统属性或环境变量。 对于你个人的任务,我会使用SpringBoot,因为它相对容易启动。有关指引包括:

休息服务 JPA 也就是说,在您选择的应用服务器或Dropwizard上使用JEE JAX-RS和JPA也是一个不错的选择


顺便说一句,后面要讨论的其他方面是验证、身份验证和授权、事务管理等。

看起来您更喜欢在某种应用服务器上使用标准JEE技术,如JAX-RS,因为您通过JNDI查找数据源

我建议使用DAOs访问数据库。DAO通常会减少样板代码,如获取DB连接、将查询结果映射到POJO等。此外,我建议使用某种O/R映射器来访问DB。JPA和普通Hibernate是JPA最常见的两种,使用应用服务器提供的实现或在Tomcat上休眠。 是的,您肯定应该使用连接池。 保存配置值的位置在某种程度上取决于环境。通常,配置不应该打包在您的工件WAR、JAR、EAR中,除非有某种机制覆盖您的配置值。常见的选项是Java系统属性和命令行参数。 如上所述,我建议使用一些O/R映射器。如果使用普通SQL,那么准备好的语句是一个好主意。准备好的语句确保您不易受到SQL注入攻击,如果您在SQL语句中将一些未替换的用户输入作为参数,则可能会发生SQL注入攻击。 我再次建议使用O/R映射器JPA或Hibernate。配置取决于您的环境。您将在Jboss/Glassfish/Websphere等应用服务器上配置数据源。其他环境将使用配置文件、java系统属性或环境变量。 对于你个人的任务,我会使用SpringBoot,因为它相对容易启动。有关指引包括:

休息服务 JPA 也就是说,在您选择的应用服务器或Dropwizard上使用JEE JAX-RS和JPA也是一个不错的选择

顺便说一句,以后再看其他方面 主要包括验证、身份验证和授权、事务管理等