Fil*_*sti 7 java jpa java-ee maven
我有一个JPA项目,我想在开发时插入一些初始数据,所以我可以检查一切是否顺利运行.
我的研究让我发现只有直接SQL脚本的解决方案,但这是不对的.如果我使用框架来抽象数据库详细信息,为什么我要为特定数据库创建脚本?
在ruby on rails世界中,我们有命令"rake db:seed",它简单地执行一个名为seed.rb的文件,该文件具有在调用抽象层的数据库上添加初始数据的功能.在java上有类似的东西吗?
我能想到的理想解决方案是执行一个执行java类的maven目标,有一个简单的方法或maven插件来做吗?
我理解你的痛苦,我在 Java 项目中想要获得 Rails 所拥有的所有好处。
话虽如此,没有理由使用直接 SQL。这种做法只是自找麻烦。当您的数据库模式在开发过程中发生变化时,所有脆弱的 SQL 都会崩溃。如果将数据映射到 JPA 模型,则可以更轻松地管理数据,这将抽象 SQL 与数据库的交互。
您应该做的是使用 JPA 模型来播种数据。创建一个组件,可以执行您需要的模型的创建并保留它们。在我当前的项目中,我们使用Snake YAML将模型序列化为 Yaml。为了为我们的数据库提供种子,我们将 yaml 反序列化为 JPA 模型并保留。
如果模型发生变化(变量类型发生变化、删除列等),您必须确保序列化数据仍然能够正确反序列化到 JPA 模型中。使用人类可读的 Yaml 格式可以轻松更新序列化模型。
要实际运行您的种子数据,请尽可能引导您的系统。正如 @GeoorgeMcDowd 所说,您可以使用 Servlet。我个人更喜欢通过使用Class.main
. 然后,您只需创建一个脚本来设置类路径并调用Class.main
来运行种子。
就我个人而言,我喜欢 Maven 作为项目元数据,但发现它很难作为构建工具。以下可用于执行 java 类:
mvn exec:java -Dexec.mainClass="com.package.Main"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11733 次 |
最近记录: |