栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 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号