Dao interface for multiple databases?









up vote
1
down vote

favorite
1












There is a pattern of making a DAO interface before DAO implementation. I googled the advantages of this pattern and one striking point was to support multiple databases.



Now, what i could understand is that multiple databases here means different database engines rather than multiple datasources. Obviously multiple datasources should not have affect on how DAO implementations are made out of DAO interface.



My question is what can be the situations where we may need to support multiple database engines catering the same data? Also if such need arises, how will the REST endpoints be managed to support different databases?



Will they be like for e.g. /db1/courses/, /db2/courses ? Do correct me if i have made any wrong assumption or statement in this question.










share|improve this question

















  • 1




    REST has nothing to do with that. You don't design your REST API based on where the code reads its data. Having multiple DAO implementations can be useful if you build a product that must support several DB engines. That doesn't mean the application uses several DB engines at once. It means client1 uses Oracle and client2 uses PostgreSQL, for example.
    – JB Nizet
    Nov 10 at 16:39










  • Yes i want to know how to seperate those clients? My question for endpoints was inspired by the versioning of api where we may have different endpoints for different version.
    – Navjot Singh
    Nov 10 at 16:41






  • 1




    You sell your product to client1, and you sell it to client2, and they both configure and install your product, choosing one of the supported DB engines.
    – JB Nizet
    Nov 10 at 16:42










  • What if it is a web application and client doesn't install anything? How will we distinguish which client wants to hit which engine? @JBNizet
    – Navjot Singh
    Nov 10 at 16:48











  • You're asking for valid reasons to have multiple DAO implementations. The one I provided is the most common one. Just because you can have multiple implementations doesn't mean that you should. If you create a web app, and you're free to use the database you want, then use that one, and just create one implementation of each DAO.
    – JB Nizet
    Nov 10 at 16:51














up vote
1
down vote

favorite
1












There is a pattern of making a DAO interface before DAO implementation. I googled the advantages of this pattern and one striking point was to support multiple databases.



Now, what i could understand is that multiple databases here means different database engines rather than multiple datasources. Obviously multiple datasources should not have affect on how DAO implementations are made out of DAO interface.



My question is what can be the situations where we may need to support multiple database engines catering the same data? Also if such need arises, how will the REST endpoints be managed to support different databases?



Will they be like for e.g. /db1/courses/, /db2/courses ? Do correct me if i have made any wrong assumption or statement in this question.










share|improve this question

















  • 1




    REST has nothing to do with that. You don't design your REST API based on where the code reads its data. Having multiple DAO implementations can be useful if you build a product that must support several DB engines. That doesn't mean the application uses several DB engines at once. It means client1 uses Oracle and client2 uses PostgreSQL, for example.
    – JB Nizet
    Nov 10 at 16:39










  • Yes i want to know how to seperate those clients? My question for endpoints was inspired by the versioning of api where we may have different endpoints for different version.
    – Navjot Singh
    Nov 10 at 16:41






  • 1




    You sell your product to client1, and you sell it to client2, and they both configure and install your product, choosing one of the supported DB engines.
    – JB Nizet
    Nov 10 at 16:42










  • What if it is a web application and client doesn't install anything? How will we distinguish which client wants to hit which engine? @JBNizet
    – Navjot Singh
    Nov 10 at 16:48











  • You're asking for valid reasons to have multiple DAO implementations. The one I provided is the most common one. Just because you can have multiple implementations doesn't mean that you should. If you create a web app, and you're free to use the database you want, then use that one, and just create one implementation of each DAO.
    – JB Nizet
    Nov 10 at 16:51












up vote
1
down vote

favorite
1









up vote
1
down vote

favorite
1






1





There is a pattern of making a DAO interface before DAO implementation. I googled the advantages of this pattern and one striking point was to support multiple databases.



Now, what i could understand is that multiple databases here means different database engines rather than multiple datasources. Obviously multiple datasources should not have affect on how DAO implementations are made out of DAO interface.



My question is what can be the situations where we may need to support multiple database engines catering the same data? Also if such need arises, how will the REST endpoints be managed to support different databases?



Will they be like for e.g. /db1/courses/, /db2/courses ? Do correct me if i have made any wrong assumption or statement in this question.










share|improve this question













There is a pattern of making a DAO interface before DAO implementation. I googled the advantages of this pattern and one striking point was to support multiple databases.



Now, what i could understand is that multiple databases here means different database engines rather than multiple datasources. Obviously multiple datasources should not have affect on how DAO implementations are made out of DAO interface.



My question is what can be the situations where we may need to support multiple database engines catering the same data? Also if such need arises, how will the REST endpoints be managed to support different databases?



Will they be like for e.g. /db1/courses/, /db2/courses ? Do correct me if i have made any wrong assumption or statement in this question.







java spring rest software-design






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 10 at 16:29









Navjot Singh

196




196







  • 1




    REST has nothing to do with that. You don't design your REST API based on where the code reads its data. Having multiple DAO implementations can be useful if you build a product that must support several DB engines. That doesn't mean the application uses several DB engines at once. It means client1 uses Oracle and client2 uses PostgreSQL, for example.
    – JB Nizet
    Nov 10 at 16:39










  • Yes i want to know how to seperate those clients? My question for endpoints was inspired by the versioning of api where we may have different endpoints for different version.
    – Navjot Singh
    Nov 10 at 16:41






  • 1




    You sell your product to client1, and you sell it to client2, and they both configure and install your product, choosing one of the supported DB engines.
    – JB Nizet
    Nov 10 at 16:42










  • What if it is a web application and client doesn't install anything? How will we distinguish which client wants to hit which engine? @JBNizet
    – Navjot Singh
    Nov 10 at 16:48











  • You're asking for valid reasons to have multiple DAO implementations. The one I provided is the most common one. Just because you can have multiple implementations doesn't mean that you should. If you create a web app, and you're free to use the database you want, then use that one, and just create one implementation of each DAO.
    – JB Nizet
    Nov 10 at 16:51












  • 1




    REST has nothing to do with that. You don't design your REST API based on where the code reads its data. Having multiple DAO implementations can be useful if you build a product that must support several DB engines. That doesn't mean the application uses several DB engines at once. It means client1 uses Oracle and client2 uses PostgreSQL, for example.
    – JB Nizet
    Nov 10 at 16:39










  • Yes i want to know how to seperate those clients? My question for endpoints was inspired by the versioning of api where we may have different endpoints for different version.
    – Navjot Singh
    Nov 10 at 16:41






  • 1




    You sell your product to client1, and you sell it to client2, and they both configure and install your product, choosing one of the supported DB engines.
    – JB Nizet
    Nov 10 at 16:42










  • What if it is a web application and client doesn't install anything? How will we distinguish which client wants to hit which engine? @JBNizet
    – Navjot Singh
    Nov 10 at 16:48











  • You're asking for valid reasons to have multiple DAO implementations. The one I provided is the most common one. Just because you can have multiple implementations doesn't mean that you should. If you create a web app, and you're free to use the database you want, then use that one, and just create one implementation of each DAO.
    – JB Nizet
    Nov 10 at 16:51







1




1




REST has nothing to do with that. You don't design your REST API based on where the code reads its data. Having multiple DAO implementations can be useful if you build a product that must support several DB engines. That doesn't mean the application uses several DB engines at once. It means client1 uses Oracle and client2 uses PostgreSQL, for example.
– JB Nizet
Nov 10 at 16:39




REST has nothing to do with that. You don't design your REST API based on where the code reads its data. Having multiple DAO implementations can be useful if you build a product that must support several DB engines. That doesn't mean the application uses several DB engines at once. It means client1 uses Oracle and client2 uses PostgreSQL, for example.
– JB Nizet
Nov 10 at 16:39












Yes i want to know how to seperate those clients? My question for endpoints was inspired by the versioning of api where we may have different endpoints for different version.
– Navjot Singh
Nov 10 at 16:41




Yes i want to know how to seperate those clients? My question for endpoints was inspired by the versioning of api where we may have different endpoints for different version.
– Navjot Singh
Nov 10 at 16:41




1




1




You sell your product to client1, and you sell it to client2, and they both configure and install your product, choosing one of the supported DB engines.
– JB Nizet
Nov 10 at 16:42




You sell your product to client1, and you sell it to client2, and they both configure and install your product, choosing one of the supported DB engines.
– JB Nizet
Nov 10 at 16:42












What if it is a web application and client doesn't install anything? How will we distinguish which client wants to hit which engine? @JBNizet
– Navjot Singh
Nov 10 at 16:48





What if it is a web application and client doesn't install anything? How will we distinguish which client wants to hit which engine? @JBNizet
– Navjot Singh
Nov 10 at 16:48













You're asking for valid reasons to have multiple DAO implementations. The one I provided is the most common one. Just because you can have multiple implementations doesn't mean that you should. If you create a web app, and you're free to use the database you want, then use that one, and just create one implementation of each DAO.
– JB Nizet
Nov 10 at 16:51




You're asking for valid reasons to have multiple DAO implementations. The one I provided is the most common one. Just because you can have multiple implementations doesn't mean that you should. If you create a web app, and you're free to use the database you want, then use that one, and just create one implementation of each DAO.
– JB Nizet
Nov 10 at 16:51












3 Answers
3






active

oldest

votes

















up vote
1
down vote













I came across this situation where I had to check two DBs and get the data. The other DB was a back up one.



So this was the flow.



 RestController --> Service --> DBService 
--> DB1Repository --> Connect to DB1
--> DB2Repository --> Connect to DB2


We can design as we want, all it matters at the end is that we follow SOLID principles.
Basically the high level components should not depend on the low level components, but both should depend on the abstractions.






share|improve this answer






















  • But the application at the end used only one database to respond to client? Am i right?
    – Navjot Singh
    Nov 10 at 17:30










  • No, it is using both, it checks DB1 if there are values as per query, if the result set is empty, it goes to DB2. As I said, it uses DB2 as fallback.
    – janardhan sharma
    Nov 10 at 17:34

















up vote
0
down vote













I just wanted to add my answer to this about beginning Spring development. This is one of the things that initially will not make sense at first. You will end up asking yourself:



  • There will be only 1 database, so this doesn't make sense why do it?

  • Why would I define an interface when there will only ever be 1 implementation?

But really neither of these are really why you do this. But it is the convention and pattern and this style is just what people are use to and you will like it better overtime. There are some other reasons too:



  • Spring Data - this is an alternative to using an entity manager, whereby you only define interfaces and Spring will actually create beans which implement your repository functionality for you.

  • Design - ensuring you define an interface will help keep your repository a repository.

  • Easier Mocking - although arguably you can still do this in Spring without needing to define an interface it is still a bit cleaner when you want to replace the implementation with another.

But really it is just the Spring way, people will find it easier to understand your code if you do this.






share|improve this answer




















  • I totally agree.
    – Navjot Singh
    Nov 12 at 11:54

















up vote
0
down vote













Ill pop in here to describe a real world example.



We recently wanted to change out a large production database (Oracle) to a different one (SQL Server).



For different areas of the database, we had different DAO interfaces and implementations. For example, CustomerDAO, AccountsDAO, etc.



For each interace (like CustomerDAO) we had an implementation (CustomerDAOImplOracle).



It was relatively straight forward for us to write SQL Server versions of the DAO's (the SQL syntax and jdbc libraries were of course different) and swap them over with minimal changes to our business logic (the services which use the DAO's).



So, CustomerDAOImplOracle was reimplemented at CustomerDAOImplSQLServer. And so on...



What we learn:



  1. Interfaces provide good abstractiuon and allow for multiple implementations

  2. The DAO layer allows us to "switch out" the database (or its client libraries) if necessary

  3. Hiding implementation details of the database from the business logic reduces coupling and complexity





share|improve this answer




















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53240990%2fdao-interface-for-multiple-databases%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    3 Answers
    3






    active

    oldest

    votes








    3 Answers
    3






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    1
    down vote













    I came across this situation where I had to check two DBs and get the data. The other DB was a back up one.



    So this was the flow.



     RestController --> Service --> DBService 
    --> DB1Repository --> Connect to DB1
    --> DB2Repository --> Connect to DB2


    We can design as we want, all it matters at the end is that we follow SOLID principles.
    Basically the high level components should not depend on the low level components, but both should depend on the abstractions.






    share|improve this answer






















    • But the application at the end used only one database to respond to client? Am i right?
      – Navjot Singh
      Nov 10 at 17:30










    • No, it is using both, it checks DB1 if there are values as per query, if the result set is empty, it goes to DB2. As I said, it uses DB2 as fallback.
      – janardhan sharma
      Nov 10 at 17:34














    up vote
    1
    down vote













    I came across this situation where I had to check two DBs and get the data. The other DB was a back up one.



    So this was the flow.



     RestController --> Service --> DBService 
    --> DB1Repository --> Connect to DB1
    --> DB2Repository --> Connect to DB2


    We can design as we want, all it matters at the end is that we follow SOLID principles.
    Basically the high level components should not depend on the low level components, but both should depend on the abstractions.






    share|improve this answer






















    • But the application at the end used only one database to respond to client? Am i right?
      – Navjot Singh
      Nov 10 at 17:30










    • No, it is using both, it checks DB1 if there are values as per query, if the result set is empty, it goes to DB2. As I said, it uses DB2 as fallback.
      – janardhan sharma
      Nov 10 at 17:34












    up vote
    1
    down vote










    up vote
    1
    down vote









    I came across this situation where I had to check two DBs and get the data. The other DB was a back up one.



    So this was the flow.



     RestController --> Service --> DBService 
    --> DB1Repository --> Connect to DB1
    --> DB2Repository --> Connect to DB2


    We can design as we want, all it matters at the end is that we follow SOLID principles.
    Basically the high level components should not depend on the low level components, but both should depend on the abstractions.






    share|improve this answer














    I came across this situation where I had to check two DBs and get the data. The other DB was a back up one.



    So this was the flow.



     RestController --> Service --> DBService 
    --> DB1Repository --> Connect to DB1
    --> DB2Repository --> Connect to DB2


    We can design as we want, all it matters at the end is that we follow SOLID principles.
    Basically the high level components should not depend on the low level components, but both should depend on the abstractions.







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited Nov 10 at 17:35

























    answered Nov 10 at 17:23









    janardhan sharma

    2537




    2537











    • But the application at the end used only one database to respond to client? Am i right?
      – Navjot Singh
      Nov 10 at 17:30










    • No, it is using both, it checks DB1 if there are values as per query, if the result set is empty, it goes to DB2. As I said, it uses DB2 as fallback.
      – janardhan sharma
      Nov 10 at 17:34
















    • But the application at the end used only one database to respond to client? Am i right?
      – Navjot Singh
      Nov 10 at 17:30










    • No, it is using both, it checks DB1 if there are values as per query, if the result set is empty, it goes to DB2. As I said, it uses DB2 as fallback.
      – janardhan sharma
      Nov 10 at 17:34















    But the application at the end used only one database to respond to client? Am i right?
    – Navjot Singh
    Nov 10 at 17:30




    But the application at the end used only one database to respond to client? Am i right?
    – Navjot Singh
    Nov 10 at 17:30












    No, it is using both, it checks DB1 if there are values as per query, if the result set is empty, it goes to DB2. As I said, it uses DB2 as fallback.
    – janardhan sharma
    Nov 10 at 17:34




    No, it is using both, it checks DB1 if there are values as per query, if the result set is empty, it goes to DB2. As I said, it uses DB2 as fallback.
    – janardhan sharma
    Nov 10 at 17:34












    up vote
    0
    down vote













    I just wanted to add my answer to this about beginning Spring development. This is one of the things that initially will not make sense at first. You will end up asking yourself:



    • There will be only 1 database, so this doesn't make sense why do it?

    • Why would I define an interface when there will only ever be 1 implementation?

    But really neither of these are really why you do this. But it is the convention and pattern and this style is just what people are use to and you will like it better overtime. There are some other reasons too:



    • Spring Data - this is an alternative to using an entity manager, whereby you only define interfaces and Spring will actually create beans which implement your repository functionality for you.

    • Design - ensuring you define an interface will help keep your repository a repository.

    • Easier Mocking - although arguably you can still do this in Spring without needing to define an interface it is still a bit cleaner when you want to replace the implementation with another.

    But really it is just the Spring way, people will find it easier to understand your code if you do this.






    share|improve this answer




















    • I totally agree.
      – Navjot Singh
      Nov 12 at 11:54














    up vote
    0
    down vote













    I just wanted to add my answer to this about beginning Spring development. This is one of the things that initially will not make sense at first. You will end up asking yourself:



    • There will be only 1 database, so this doesn't make sense why do it?

    • Why would I define an interface when there will only ever be 1 implementation?

    But really neither of these are really why you do this. But it is the convention and pattern and this style is just what people are use to and you will like it better overtime. There are some other reasons too:



    • Spring Data - this is an alternative to using an entity manager, whereby you only define interfaces and Spring will actually create beans which implement your repository functionality for you.

    • Design - ensuring you define an interface will help keep your repository a repository.

    • Easier Mocking - although arguably you can still do this in Spring without needing to define an interface it is still a bit cleaner when you want to replace the implementation with another.

    But really it is just the Spring way, people will find it easier to understand your code if you do this.






    share|improve this answer




















    • I totally agree.
      – Navjot Singh
      Nov 12 at 11:54












    up vote
    0
    down vote










    up vote
    0
    down vote









    I just wanted to add my answer to this about beginning Spring development. This is one of the things that initially will not make sense at first. You will end up asking yourself:



    • There will be only 1 database, so this doesn't make sense why do it?

    • Why would I define an interface when there will only ever be 1 implementation?

    But really neither of these are really why you do this. But it is the convention and pattern and this style is just what people are use to and you will like it better overtime. There are some other reasons too:



    • Spring Data - this is an alternative to using an entity manager, whereby you only define interfaces and Spring will actually create beans which implement your repository functionality for you.

    • Design - ensuring you define an interface will help keep your repository a repository.

    • Easier Mocking - although arguably you can still do this in Spring without needing to define an interface it is still a bit cleaner when you want to replace the implementation with another.

    But really it is just the Spring way, people will find it easier to understand your code if you do this.






    share|improve this answer












    I just wanted to add my answer to this about beginning Spring development. This is one of the things that initially will not make sense at first. You will end up asking yourself:



    • There will be only 1 database, so this doesn't make sense why do it?

    • Why would I define an interface when there will only ever be 1 implementation?

    But really neither of these are really why you do this. But it is the convention and pattern and this style is just what people are use to and you will like it better overtime. There are some other reasons too:



    • Spring Data - this is an alternative to using an entity manager, whereby you only define interfaces and Spring will actually create beans which implement your repository functionality for you.

    • Design - ensuring you define an interface will help keep your repository a repository.

    • Easier Mocking - although arguably you can still do this in Spring without needing to define an interface it is still a bit cleaner when you want to replace the implementation with another.

    But really it is just the Spring way, people will find it easier to understand your code if you do this.







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Nov 12 at 9:34









    Snickers3192

    2,2541030




    2,2541030











    • I totally agree.
      – Navjot Singh
      Nov 12 at 11:54
















    • I totally agree.
      – Navjot Singh
      Nov 12 at 11:54















    I totally agree.
    – Navjot Singh
    Nov 12 at 11:54




    I totally agree.
    – Navjot Singh
    Nov 12 at 11:54










    up vote
    0
    down vote













    Ill pop in here to describe a real world example.



    We recently wanted to change out a large production database (Oracle) to a different one (SQL Server).



    For different areas of the database, we had different DAO interfaces and implementations. For example, CustomerDAO, AccountsDAO, etc.



    For each interace (like CustomerDAO) we had an implementation (CustomerDAOImplOracle).



    It was relatively straight forward for us to write SQL Server versions of the DAO's (the SQL syntax and jdbc libraries were of course different) and swap them over with minimal changes to our business logic (the services which use the DAO's).



    So, CustomerDAOImplOracle was reimplemented at CustomerDAOImplSQLServer. And so on...



    What we learn:



    1. Interfaces provide good abstractiuon and allow for multiple implementations

    2. The DAO layer allows us to "switch out" the database (or its client libraries) if necessary

    3. Hiding implementation details of the database from the business logic reduces coupling and complexity





    share|improve this answer
























      up vote
      0
      down vote













      Ill pop in here to describe a real world example.



      We recently wanted to change out a large production database (Oracle) to a different one (SQL Server).



      For different areas of the database, we had different DAO interfaces and implementations. For example, CustomerDAO, AccountsDAO, etc.



      For each interace (like CustomerDAO) we had an implementation (CustomerDAOImplOracle).



      It was relatively straight forward for us to write SQL Server versions of the DAO's (the SQL syntax and jdbc libraries were of course different) and swap them over with minimal changes to our business logic (the services which use the DAO's).



      So, CustomerDAOImplOracle was reimplemented at CustomerDAOImplSQLServer. And so on...



      What we learn:



      1. Interfaces provide good abstractiuon and allow for multiple implementations

      2. The DAO layer allows us to "switch out" the database (or its client libraries) if necessary

      3. Hiding implementation details of the database from the business logic reduces coupling and complexity





      share|improve this answer






















        up vote
        0
        down vote










        up vote
        0
        down vote









        Ill pop in here to describe a real world example.



        We recently wanted to change out a large production database (Oracle) to a different one (SQL Server).



        For different areas of the database, we had different DAO interfaces and implementations. For example, CustomerDAO, AccountsDAO, etc.



        For each interace (like CustomerDAO) we had an implementation (CustomerDAOImplOracle).



        It was relatively straight forward for us to write SQL Server versions of the DAO's (the SQL syntax and jdbc libraries were of course different) and swap them over with minimal changes to our business logic (the services which use the DAO's).



        So, CustomerDAOImplOracle was reimplemented at CustomerDAOImplSQLServer. And so on...



        What we learn:



        1. Interfaces provide good abstractiuon and allow for multiple implementations

        2. The DAO layer allows us to "switch out" the database (or its client libraries) if necessary

        3. Hiding implementation details of the database from the business logic reduces coupling and complexity





        share|improve this answer












        Ill pop in here to describe a real world example.



        We recently wanted to change out a large production database (Oracle) to a different one (SQL Server).



        For different areas of the database, we had different DAO interfaces and implementations. For example, CustomerDAO, AccountsDAO, etc.



        For each interace (like CustomerDAO) we had an implementation (CustomerDAOImplOracle).



        It was relatively straight forward for us to write SQL Server versions of the DAO's (the SQL syntax and jdbc libraries were of course different) and swap them over with minimal changes to our business logic (the services which use the DAO's).



        So, CustomerDAOImplOracle was reimplemented at CustomerDAOImplSQLServer. And so on...



        What we learn:



        1. Interfaces provide good abstractiuon and allow for multiple implementations

        2. The DAO layer allows us to "switch out" the database (or its client libraries) if necessary

        3. Hiding implementation details of the database from the business logic reduces coupling and complexity






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 12 at 9:48









        vikingsteve

        25k1176112




        25k1176112



























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53240990%2fdao-interface-for-multiple-databases%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Use pre created SQLite database for Android project in kotlin

            Darth Vader #20

            Ondo