I have a requirement wherein a user enters database connection details through a UI, and then from the application I connect to this database, extract the data, and import into my current application.
Users can enter any database connection information, hence these details are dynamic at a user level. I am using Spring boot and Spring JDBC currently, however I was looking for options to connect to other relational databases dynamically during runtime in order to extract data and import to my application database.
Related
I made a new Spring Boot project using the Spring Initializr. I'm building an On-premise backend so what I'm trying to achieve is that when the user opens the jar executable and the server starts, he should be able to configure the database connection by going to localhost:8080/ in his web browser. Basically the index.html will have a form with 4 fields for IP Address, Database Name, UserName and Password. When the form is submitted spring will try to connect to the database with the provided information.
I have all my entities, repositories and controllers but currently the only way i can connect to a database is with the application.properties file, but since the user wont have access to the source, there should be a way for him to configure his database.
Thanks for your time!
I would suggest to use the Spring cloud Config server to store database related properties which is capable of picking up configuration at run time. Although it is typically configured with a Git repository, you can store them locally as pointed out in this thread.
I am new to gcloud and trying to leverage bigquery for accessing the data. I am trying to implement a connection pooling mechanism for bigquery and found that Hikari (one of the default datasource provided by spring boot) as a viable option. Could you please guide me in setting up the Bigquery credentials in the Hikari datasource as I am not able to figure out the way to give the driver, url and credentials.
I imported the bigquery api and hikari api in my pom dependencies
FYI: I am trying to make use of springboot
I have managed to establish connection from spring boot to bigquery using simba JDBC drivers and successfully queried it.
Firstly, you need to include GCP starter dependency in your boot.
<artifactId>spring-cloud-gcp-dependencies</artifactId>
Dowload and add dependency jars of simba drivers in spring boot from the below link. Also refer installation guide in the link.
https://cloud.google.com/bigquery/docs/reference/odbc-jdbc-drivers
Secondly, create a service account that has access to bigquery and generate a key JSON file which is used to authenticate our spring boot application for connecting bigquery. Refer the below link.
https://cloud.google.com/bigquery/docs/reference/libraries#setting_up_authentication.
Lastly configure this key JSON file to be accessed by our spring book application using the simba driver JDBC installation guide.
Create a simba driver datasource and use this data source to create JDBC template bean. ( JDBC url formation is given in the installation guide of simba driver) . Thats it!! Run the application and see the results.
If you face any difficulties feel free to ask the specifics.
I am building a multi-tenant application, where the tenant database configuration are stored in Redis. Based on the request, I will query the Redis to get the database and schema configured for that tenant, this application is built on spring boot.
I took a look at spring boot's JPA sample, and did some more google to find a suitable solution for this, unfortunately, I couldn't find one.
Is this really possible to use JPA sample provided here ?
https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-data-jpa
Please suggest me any other best possible way to tackle this problem
Thanks
Spring Data JPA uses JPA annotations to define domain model. These JPA entities define schema for your database. Obviously you can't change these entities, nor DB schema on runtime.
So no, updating schema on runtime is not possible with Spring Boot + Spring Data JPA combo.
Database connection (e.g. DB URL, username password) could be more flexible. You would need to create DataSource beans programmatically and somehow programatically define which data source to use for each query per tenant. But this wasn't requirement of Spring nor JPA ecosystem, therefore you may face lot of issues.
I was working on such system before, but we were using plain SQL queries via JDBC and were creating DB connection programatically to achieve schema changes on runtime.
I want to connect to different database (other than liferay default database) without service builder. Also I want to use spring jdbc template to fetch the data from database.
Am developing an application, where in users has to login to the application by giving username , password and selecting business unit.
Based on business unit, the application has to connect to the respective database. How can this be achieved in spring with bonecp or spring jdbc template ? Considering performance which should I choose spring with bonecp or spring jdbc template