Spring Data JPA [PRO] - How to connect Multiple Databases using Spring Boot | Multiple Datasources

Sdílet
Vložit
  • čas přidán 5. 08. 2024
  • In this Spring Data JPA tutorial, we will learn, How to connect Multiple Databases using Spring Boot. We will be using a MySQL database and a Postgres database and create datasources for the same. As we will be creating multiple datasources for our application, We also need to set up multiple EntityManager for our application as well. Not only that, this tutorial covers setting up multiple transaction managers for our entity managers and helps you link them using @EnableJpaRepositories annotation. Mark that this is an important spring data jpa annotation as it helps creating the Repository implementation.
    We will pull all the above together by creating a spring boot application which will continuously push data to multiple databases. You can use the same in your real-time project irrespective of the databases you are using. (Incase you have a h2 /d2/oracle/sql server db)
    Timestamp
    ------
    00:00:00 - Sprig Data Jpa - Video Insights
    00:03:45 - Spring Data jpa project setup
    00:05:45 - The goal - Connect with Multiple databases
    00:08:05 - Creating Product Entity
    00:11:37 - Spring Data Jpa CrudRepository
    00:18:18 - DatasourceProperties : Component walkthrough
    00:19:52 - Setting up mysql datasource using application.properties
    00:28:09 - Customising datasource properties
    00:32:24 - Postgres datasource properties configuration
    00:38:24 - spring boot @ConfgurationProperties - use case 1
    00:44:46 - @Configuration with @Bean - use case 2
    00:49:40 - DriverManagerDatasource vs DatasourceProperties’s initalizeDatasourceBuilder
    00:57:02 - Multiple datasources in action with @Primary
    01:13:19 - Setting up multiple entity managers
    01:26:49 - @EnableJpaRepoistories : tech walkthrough
    01:43:12 - Setting up multiple jpa transaction managers (PlatformTransctionManger)
    01:54:55 - Success: Multiple datasource in action
    01:56:58 - Best practice - @EnableTransactionManager
    01:57:37 - [Test] check in data to multiple database with a spring boot app
    02:00:37 - Outro
    #springboot #springdatajpa #jpa #hibernate
    For more free/paid courses visit
    www.seleniumexpress.com
    LINKS AND FREE LEARNING RESOURCES
    ========
    Watch my new mock interview series for java developers
    • Java interview questio...
    Watch my new Hello spring boot series
    • Spring Vs Spring Boot ...
    Watch Spring boot Hot topics
    • @Reposicotry Vs @Servi...
    Java Interview / Question and Answer series
    • Java collections inter...
    Explain spring Bean Lifecycle
    • REAL-TIME: Spring Bean...
    spring core
    • Spring framework tutor...
    spring mvc
    • Spring MVC course intr...
    spring mvc intermediate
    • [INTERMEDIATE] Spring ...
    Spring JDBC
    • Spring JDBC Course Pre...
    spring live project
    • #1 Build and Deploy A ...
    SPRING SECURITY COURSE[NEW]
    • Spring Security Course...
    For more courses visit
    www.seleniumexpress.com
    Any time you are getting stuck with issues, Feel free to ask for support.
    You can send mail to seleniumexpress@gmail.com
    you can ping me on my Facebook page
    / seleniumexpress
    Make sure to join my private Facebook page (Ask me here)
    “SeleniumExpress - Support"
    / 187000222361579
    you can ask for support in my website forum
    www.seleniumexpress.com
    Subscribe to my youtube channel
    / @seleniumexpress
    Follow me on Insta
    / selenium_express

Komentáře • 70

  • @iampradeephr
    @iampradeephr Před 3 měsíci +10

    One of the best in depth explanations ever 🔥

  • @Bindas_Raja
    @Bindas_Raja Před 3 měsíci +1

    Bhai bahut badhia lagila au easy explanation. . Thanks from ODISHA ❤

  • @alcoverp
    @alcoverp Před 25 dny

    Great videos man! Unlike other tutorials, you go deep into Spring concepts and make things really clear. Congrats for the initiative!

  • @ashutoshsatapathy2477
    @ashutoshsatapathy2477 Před 17 dny

    2nd Half Done, Thanks for this informative video.

  • @AnkitLadha-fo8em
    @AnkitLadha-fo8em Před 3 měsíci

    Appreciate your hard work and explaining meaning of the error messages at every step.

  • @ujjwalpandey4721
    @ujjwalpandey4721 Před 3 měsíci

    You are amazing... Not other word category suits you... You are incredible.

  • @jesuslovesyou8664
    @jesuslovesyou8664 Před 3 měsíci

    Extraordinary teaching thank u soo much for clear explanation . Keep giving more videos like this

  • @virupakshak4746
    @virupakshak4746 Před 3 měsíci

    Superb... Thanks, Abhilash for nicely explained it....

  • @priyanshu4016
    @priyanshu4016 Před 3 měsíci

    absolutely great video . i am learning a lot from your videos , thanks for sharing

  • @user-kn4dc2ek5z
    @user-kn4dc2ek5z Před 3 měsíci

    Thanks Abhi🤝❤. as always you explained well

  • @jaafarhamza3402
    @jaafarhamza3402 Před 2 měsíci

    2nd half done. Thank you

  • @techsavy641
    @techsavy641 Před 21 dnem +1

    Bro next level editing and lessons too..Thanksssssss...

  • @harleyseixas8708
    @harleyseixas8708 Před 3 měsíci

    Excelente conteúdo, muito bem explicado. Step by step...💯💯💯💯 Obrigado por compartilhar seu conhecimento.

  • @maharishi1
    @maharishi1 Před 3 měsíci

    Thank you Abhilash...

  • @biswajeetsahoochintu2329
    @biswajeetsahoochintu2329 Před 3 měsíci

    Best depth concept you explained abhilash
    Jay jaganath abhilash

  • @msvchalapathy
    @msvchalapathy Před 3 měsíci

    Fabulous topic. Thank you for this session

  • @shirokuma145
    @shirokuma145 Před 3 měsíci +1

    1st Half Done, your explanations are very engaging and clear 😎

    • @shirokuma145
      @shirokuma145 Před 3 měsíci +1

      2nd Half Done, many thanks for the tutorial!

  • @srinivasulumannem4137
    @srinivasulumannem4137 Před 3 měsíci +1

    Hi @Abhilash iam looking for kafka video series from your side .have been following you for the last 3 years on words .I have covered all your videos .

  • @gowtham4383
    @gowtham4383 Před měsícem

    Thanks bro .

  • @12345ms
    @12345ms Před měsícem

    Really good @Abhilash, 2nd half done

  • @priyanshu4016
    @priyanshu4016 Před 3 měsíci

    first half done 👍

  • @pranjitmedhi6764
    @pranjitmedhi6764 Před 3 měsíci

    great work

  • @arpansrivastava7537
    @arpansrivastava7537 Před 2 měsíci

    Very nice 👍👍

  • @pothinenivenkat
    @pothinenivenkat Před 3 měsíci +1

    ధన్యవాదాలు!

  • @rahulbhatanagar6175
    @rahulbhatanagar6175 Před 2 měsíci

    1st half done 👍

  • @saruth
    @saruth Před 3 měsíci +1

    you are best!

  • @srinivasn7991
    @srinivasn7991 Před 3 měsíci

    Clear understandng each and everthing

  • @mohammedirfan5744
    @mohammedirfan5744 Před 3 měsíci

    Thanks sir

  • @AbhishekAnandDas
    @AbhishekAnandDas Před 3 měsíci

    I have used the same methods to connect to two databases in one of the production application I'm currently working on... 😊

  • @srigakolapuatchuthasai6638
    @srigakolapuatchuthasai6638 Před 3 měsíci

    Thanks Abhi ❤

  • @sarathchandra941
    @sarathchandra941 Před 3 měsíci

    1st half done

  • @programmer_kt
    @programmer_kt Před 12 dny

    I like your shirt.

  • @dipeshvishwakarma5671
    @dipeshvishwakarma5671 Před 3 měsíci +1

    Hi this owsm video Thanks so much!!
    One request: could you please make one video on spark data connection, reading data from parquet file from AWS S3 using spark.sql("")
    It would be greatly appreciated and very helpful.
    Thanks

  • @pavankumar-mt3gm
    @pavankumar-mt3gm Před 2 měsíci

    on multi datasource implementation in springboot I get Field ConfigurationRepository in ConfigurationService required a bean named 'entityManagerFactory' that could not be found.

  • @edgarangelveradelrio3645
    @edgarangelveradelrio3645 Před 2 měsíci

    Hi, excellent video! I Have a question, in spring boot 3 what is the alternative to ChainedTransactionManager?

  • @user-ze5rc9eb8m
    @user-ze5rc9eb8m Před 2 měsíci

    Hi i want to connect two postgres database when both the postgres databases are up and running only primary database has to get and post the data secondary should be stand by when primary database goes down secondary database has to take over when primary database come back ideally primary should take over how can we achieve this as of now i have configured 2 postgres but both the postgres are able to get and post the data

  • @sahukarinaveenkumar3188
    @sahukarinaveenkumar3188 Před 3 měsíci

    Hi Ahbishek sir, can u please make one video on oauth internal? Like how resource server communicates with auth server internal classes and concepts?

  • @ritunjaykumar5428
    @ritunjaykumar5428 Před 3 měsíci

    Hi, How can we manage the multiple transaction at the same time. suppose i am inserting data in Mysql DB but unable to insert in PG Db. then how to rollback for both....

  • @Lalitprasad1
    @Lalitprasad1 Před 22 dny

    Hello Sir,
    In my case the EntityManagerFactoryBuilder is not getting created automatically, I'm getting the below error
    Consider defining a bean of type 'org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder' in your configuration.

  • @kalaimaranmadhavan4182
    @kalaimaranmadhavan4182 Před 2 měsíci

    Please make video for multitenant application with seperate schema. I am waiting for your video. I have searched in youtubes no videos related on this and i cannot understand those videos. Please make

  • @ophemtech
    @ophemtech Před 3 měsíci

    Hi Abhilash, thank you so much for this video. though i learnt this myself the hard way but your video really made me understand each blocks of code and why they even need to be written. but please there is still a problem i am trying to solve, how do i make it possible to make table name come from properties file like you use @ConfigurationProperties().
    i want to make it possible that users of my product can specify the table name so my entity can just model the table directly other than me changing the code. for example any authentication database would have username , password, email columns, but they can be given diffreent names like auth_table, user_table, etc. so i want people to be able to specify that table name dynamically by themselves, more like for a saas product kind of thing. is it possible?

  • @in_tyler_we_trust
    @in_tyler_we_trust Před 3 měsíci

    Sir Spring boot for beginners playlist is complete ? If not please please complete it so that we move on to the difficult topics
    Thank you!

  • @debiprasaddash654
    @debiprasaddash654 Před 3 měsíci +1

    Getting java job as a fresher is very difficult now a days 😢😢

  • @balakrishna9437
    @balakrishna9437 Před 3 měsíci

    Great video, 🎉 one question can’t we write a single configuration file for each of the product and order entities?

    • @SeleniumExpress
      @SeleniumExpress  Před 3 měsíci +1

      Thank you Bala, Yes we can! But better to create one per db as we can keep things relevant to a specific db.

  • @ivorpersonal
    @ivorpersonal Před 3 dny

    I really like your videos and your approach. 😊
    1. I find it confusing when mixing plural and singular. You always have to remember or check in which occasion which is used. Also for people who don't know English too well creating plural can be confusing because of complicated rules in English for creating plurals. Also when searching item you have to search both in plural and singular. Also because of plural table you now need this extra line @Table which makes the code more complicated. Like when at the end of the video you were writing SELECT * FROM ORDER instead of ORDERS :).
    2. Why don't you use Lombok @Data for Setters, Getters & Constructors. All this extra code makes the code look more complicated.
    3, If not using autogenerated Id you will probably have to constantly delete inserted records in order to insert new ones (as was the case in your other videos) which I think unnecessary adds to the length of the video, if you forget then things don't work and all in all it wastes time and breaks concentration from more important things.
    4. Why do you call it ProductDAO instead of ProductRepository. It is confusing when using different name for the same thig DAO vs Repository. Now I have to remember to map DAO to Repository - so the DAO name isn't very descriptive that we are actually using Repository. When I watch other tutorials they usually name it like that. They use DAO in case they don't use Repository - for instance when they use JdbcTemplate to work with Database.
    5. Maybe instead of different Databases we could try connecting to different Schemas in the same Database.
    6. Also maybe to disable hints that liters the code with "no usages" to make the code more readable.
    7. Why do we have to manfully create Datasource? How come previously Spring Boot was able to create it automatically from DatasourceProperties Bean. Why can't Spring Boot simply use our DatasourceProperties Bean to create Datasource as before. We have just changed how DatasourceProperties Bean is created. Why would Spring Boot care how DatasourceProperties Bean is created in order to use it to create Datasource Bean.
    8. I don't think it makes sense to create a Package for every Class. Usually people create Package entity or entities and there they put ALL of their entities. And again I prefer using singular entitiy everywhere. So you did it to later use Package to define responsibility for different Entity managers?
    9. Maybe to use simple English names like John when creating examples. Its easier to follow and remember.
    10. How come Spring Boot looks for Bean with specific name rather then interfaces as in all other cases? Why is this different?
    11, @EnableJPARepositores changes application so much. App becomes unmanageable. It can't automatically find and use repositories. Now you constantly have to align and configure whenever creating new repository. Instead of simply creating repos wherever you like and having them picked up by Spring Boot. I think this hugely increases complexity. Suddenly you can't use your app like you were used to use it. Isn't there a better way? The main point of Spring Boot is to reduce configuration and our configuration just exploded.
    12. Why is save() falling under Transaction when we haven't used @Transactioanl anywhere? What I have seen is that @Transactioanl might have additional parameter specifying which transaction manager to use. So do we need Transaction Manager if @Transactional is not used?

  • @teklehaimanotatikilt1435
    @teklehaimanotatikilt1435 Před 3 měsíci

    abhi how can we integrate fingerprint with spring security?by the way your videos are very helful

  • @premraj.m
    @premraj.m Před 3 měsíci

    47:30 keypoint

  • @TomarSahab
    @TomarSahab Před 25 dny

    I spent one day until I found you also have the same error 1:00:19

  • @mdnishat9560
    @mdnishat9560 Před 3 měsíci

    Bro please complete the playlist of word guess game🤗🤗

  • @PradeepKumar-sx6ms
    @PradeepKumar-sx6ms Před 3 měsíci

    If I give challenges you like to crack???

  • @vlarunrajesh
    @vlarunrajesh Před 3 měsíci

    Bro. you are complicating simple things and make video lengthier.. keep it as simple.

  • @punitvishwakarma718
    @punitvishwakarma718 Před 3 měsíci

    Bhai accent kyo badal raha Indian accent acha nahi lgta hai kya??? Banavati lagta hai

  • @kunwarrajneeshsingh3132
    @kunwarrajneeshsingh3132 Před 2 měsíci

    2nd half done

  • @ayushsingh2431
    @ayushsingh2431 Před 3 měsíci

    Getting error- Parameter 0 of method mySQLEntityManagerFactoryBean in org.ayushsingh.springdatamulitsoruce.config.MySQLEntityManagerConfiguration required a bean of type 'org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder' that could not be found.

    • @SeleniumExpress
      @SeleniumExpress  Před 3 měsíci

      Hi Ayush ! Make one of your datasource as Primary.

    • @arpitrajput6424
      @arpitrajput6424 Před 3 měsíci

      @@SeleniumExpress didn't work for me , now getting error related to mySqlTransactionalManager

    • @arpitrajput6424
      @arpitrajput6424 Před 3 měsíci

      Parameter 0 of method mySqlTransactionalManager in com.example.SPringbootJpa.config.MySQLJPAConfiguration required a bean of type 'org.springframework.orm.jpa.LocalEntityManagerFactoryBean' that could not be found.
      The injection point has the following annotations:
      - @org.springframework.beans.factory.annotation.Qualifier("mySqlEntityManagerFactoryBean")

    • @ganirasafarli8646
      @ganirasafarli8646 Před 12 dny

      Hi. Did you find the solution to this issue? I am getting exact problem.