我们有一个带有DB2 jdbc数据源的spring-batch应用程序。想要向我们的应用程序添加Flyway迁移功能。我一直在探索这个article,这非常有道理,除了提到如何指定'entityManagerFactory'的部分之外-它们的示例适用于使用Hibernate的JPA,看起来像这样:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using static System.Math;
namespace Syncfusion
{
public class Calc
{
public static double Pythagorean(double a, double b)
{
double cSquared = Pow(a, 2) + Pow(b, 3);
return Sqrt(cSquared);
}
}
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
void Button_Click(object sender, RoutedEventArgs e)
{
double hypotenuse = Calc.Pythagorean(2, 4);
MessageBox.Show("Hypotenuse: " + hypotenuse);
}
}
}
我们的应用程序是用于db2的简单JDBC数据源。如何定义<!-- Entity Manager Factory configuration -->
<bean id="entityManagerFactory" class="o.s.orm.jpa.LocalContainerEntityManagerFactoryBean" depends-on="flyway">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="o.s.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="${jpa.database}"/>
</bean>
</property>
</bean>
,以使Spring将其识别为托管Bean?我什至需要指定entityManagerFactory bean配置吗?
答案 0 :(得分:1)
否,您不必指定entityMangerFactory bean。飞行路线的迁移不必一定是豆子。 这是飞行路线迁移的示例配置:
@Configuration
public class FlywayInitializer {
@Autowired
private DataSource dataSource;
@PostConstruct()
private void startMigrations() {
Flyway flyway = new Flyway();
flyway.setDataSource(dataSource);
flyway.setLocations("db/migrations");
flyway.setSchemas("public");
flyway.setSqlMigrationPrefix("H");
flyway.migrate();
}
}
我们首先创建一个新的Flyway对象。 javax.Sql.DataSource
是flyway唯一需要的bean。 Flyway需要此bean中的数据,以便它可以连接到数据库。
然后,我们配置迁移的位置,flyway的架构(第一个架构是将创建schema_version
表的架构)以及迁移的迁移前缀(例如,我的迁移如下所示) : H1__init_db.sql )。
还有许多其他属性可以设置。配置完飞行路线对象后,请调用migrate
方法以执行迁移。