栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在同一项目中连接两个数据库MySQL和MongoDB?可能吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在同一项目中连接两个数据库MySQL和MongoDB?可能吗?

我不确定这是否是最佳解决方案。但是,它对我有用。如果您有两个使用

Jpa
模块的关系数据库,那么我建议您创建
entity
transaction
管理Bean来读取每个数据源配置。

当你希望有一个组合

SQL
NoSQL
,我会创造
entity
transcation
对经理豆类
MySQL
数据库,因为它与运作良好
Jpa
。并保持原样配置
Mongo
(直接从读取配置
application.properties
)。

MySQLConfiguration
数据源配置类:

@Configuration@PropertySource("classpath:persistence-multiple-db.properties")@EnableJpaRepositories(basePackages = "com.springdata.dao.mysql", entityManagerFactoryRef = "mysqlEntityManager", transactionManagerRef = "mysqlTransactionManager")public class MySQLConfiguration {    @Autowired    private Environment env;    @Bean    @Primary    public LocalContainerEntityManagerFactoryBean mysqlEntityManager() {        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();        em.setDataSource(myMySQLDataSource());        em.setPackagesToScan(new String[] { "com.springdata.models" });        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();        em.setJpaVendorAdapter(vendorAdapter);        HashMap<String, Object> properties = new HashMap<String, Object>();        properties.put("hibernate.dialect", env.getProperty("hibernate.dialect"));        em.setJpaPropertyMap(properties);        return em;    }    @Bean    @Primary    public DataSource myMySQLDataSource() {        DriverManagerDataSource dataSource = new DriverManagerDataSource();        dataSource.setDriverClassName(env.getProperty("spring.mysql.jdbc.driverClassName"));        dataSource.setUrl(env.getProperty("spring.mysql.jdbc.url"));        dataSource.setUsername(env.getProperty("spring.mysql.user"));        dataSource.setPassword(env.getProperty("spring.mysql.pass"));        return dataSource;    }    @Bean    @Primary    public PlatformTransactionManager mysqlTransactionManager() {        JpaTransactionManager transactionManager = new JpaTransactionManager();        transactionManager.setEntityManagerFactory(mysqlEntityManager().getObject());        return transactionManager;    }

上面的数据源配置参数是从

classpath:persistence-multiple-db.properties
类路径中的文件中读取的。

# mysql jdbc connectionsspring.mysql.jdbc.driverClassName=com.mysql.jdbc.Driverspring.mysql.jdbc.url=jdbc:mysql://localhost:3306/test?autoReconnect=true&useSSL=falsespring.mysql.user=rootspring.mysql.pass=password1# hibernate.Xhibernate.dialect=org.hibernate.dialect.MySQL5Dialect

以上配置足以处理

MySQL
数据源。要在项目中进行mongo配置,请将以下行添加到中
application.properties

# mongo configurationspring.data.mongodb.uri=mongodb://localhostspring.data.mongodb.database=test

Springboot将自动创建必要的mongo数据源bean,并使它们随时可供Spring容器使用。

现在,为MySQL和Mongo数据源创建存储库接口。

MyMongoRepository
接口:

@Transactionalpublic interface MyMongoRepository extends MongoRepository<Users, String>{}

MySQLRepository
接口:

@Transactionalpublic interface MySQLRepository extends JpaRepository<Users, String>{}

Users
pojo课程:

@Entity@Table(name = "users")@document(collection="users")@Datapublic class Users {    @Id    @javax.persistence.Id    private String id;    private String name;    private Integer age;}

添加了以下注释以启用mongorepositoreis并将组件扫描到springboot主类。

@SpringBootApplication@ComponentScan(basePackages = { "com.springdata" })@EnableMongoRepositories(basePackages={"com.springdata.dao.mongo"})public class SpringbootmysqlmongoApplication {    public static void main(String[] args) {        SpringApplication.run(SpringbootmysqlmongoApplication.class, args);    }}

最后,要测试一些代码。

MyRepositoryImpl
类:

@Servicepublic class MyRepositoryImpl {    @Autowired    private MyMongoRepository myMongoRepository;    @Autowired    private MySQLRepository mySQLRepository;    @PostConstruct    public void extractUsers(){        myMongoRepository.findAll().forEach((user) -> System.out.println("user name from mongo is : "+user.getName()));        mySQLRepository.findAll().forEach((user) -> System.out.println("User name from mysql is : "+user.getName()));    }}

users
mysql test
数据库中创建了表并在数据库中进行了
users
收集
mongo test

最后,已将我的代码上传到git存储库。

https://github.com/harshavmb/springbootmysqlmongo



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/443385.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号