如何使用JPA

时间:2018-03-07 16:49:10

标签: spring jpa spring-boot spring-data-jpa seeding

一点背景知识:

我在大公司的Spring启动应用程序上工作,我们无法控制数据库架构,表名和列名。因此,我们的表名和列名对他们没有明显的意义。

我们目前正在使用resources目录中的schema.sql和data.sql文件播种数据。这对我们的团队来说并没有起作用,因为他们努力使用这些模糊不清的表和列制作数据。我们经常最终通过我们的QA服务器查找帐户,然后针对QA数据库编写代码。

我的问题:

  • 如何保留schema.sql和data.sql文件,但是我们的团队可以使用JPA或Spring Data JPA提供的播种机将数据播种到H2数据库。

    • 我找到了一些使用JPA来播种数据的例子,但他们没有提到应该存储文件的位置或启动时Spring Boot应用程序如何调用文件。
  • 我们的应用程序只提取数据,从不插入,所以我必须覆盖JpaRepository中的save函数才能完成此操作吗?或者我可以创建一个实体,并调用JpaRepository的保存功能吗?

以下是我们的帐户实体和存储库的模糊示例:

AccountEntity.java

@Data
@Entity
@Table(name = "Table_Name")
@SecondaryTables({
        @SecondaryTable(name = "Table_Name2", pkJoinColumns = {
                @PrimaryKeyJoinColumn(name = "ACCT_ID", referencedColumnName = "ACCT_ID") }),
        @SecondaryTable(name = "Table_Name3", pkJoinColumns = {
                @PrimaryKeyJoinColumn(name = "ACCT_ID", referencedColumnName = "ACCT_ID") }),
        @SecondaryTable(name = "Table_Name4", pkJoinColumns = {
                @PrimaryKeyJoinColumn(name = "ACCT_ID", referencedColumnName = "ACCT_ID") })
})
public class AccountEntity {

    @Column(name = "ACCT_ID")
    @Id
    private Integer accountIdNumber;

    @Column(name = "SOME_OTHER_COLUMN1")
    private String someOtherColum1;

    @Column(name = "SOME_OTHER_COLUMN2", table = "Table_Name3")
    private String someOtherColum2;

    @Column(name = "SOME_OTHER_COLUMN3", table = "Table_Name4")
    private Integer someOtherColum3;

    ...
}

AccountRepository.java

@Repository
public interface AccountRepository extends JpaRepository<AccountEntity, Integer> {
    public AccountEntity findByAccountIdNumber(Integer accountNumber);

    public List<AccountEntity> findAllByProp1Prop2AndProp3(
            String prop1, String prop2, String prop3);
}

0 个答案:

没有答案