首页 > 解决方案 > 在 java 和 mysql 中命名和使用表和视图实体的最佳实践

问题描述

我正在JavaFX使用 MVC 设计模式通过 开发软件。在 javaFX 中,为了将视图与数据同步,我使用属性字段(如StringPropertyIntegerProperty、 ...)和ObservableList集合。我也在使用JPA图书馆。考虑我tables在 DB 中有两个,一个是城市,另一个是省。 province to city有一对多relationship

第一个问题:

如果我使用来自城市和省的所有数据创建一个视图,该视图的名称应该是什么?应该是city_vm?或者我应该将表名更改为 citybase 和 Provincebase 或类似的东西?然后将视图名称更改为城市?

第二个问题:

我想将它们全部映射到真实实体中,我想映射表(城市和省表)以插入数据并使用视图实体进行选择和显示数据。另请注意,我为它们中的每一个都有一个单独的类(除了它们的实体类之外),以实现属性字段的优势(如StringProperty, IntegerProperty, .... )

这是 City 类(未映射,带有属性字段)

public class City {

    private int city_id;
    private StringProperty name;
    private FloatProperty asl_ft;
    private FloatProperty asl_mt;
    private FloatProperty sdb_fh;
    private FloatProperty sdb_cs;
    private FloatProperty swd_fh;
    private FloatProperty swd_cs;
    private FloatProperty wdb_fh;
    private FloatProperty wdb_cs;

    private ProvinceEntity province;

    public City(String name, Float asl_ft, Float asl_mt, Float sdb_fh,
            Float sdb_cs, Float swd_fh,
            Float swd_cs, Float wdb_fh, Float wdb_cs) {
        this.name = new SimpleStringProperty(name);
        this.asl_ft = new SimpleFloatProperty(asl_ft);
        this.asl_mt = new SimpleFloatProperty(asl_mt);
        this.sdb_fh = new SimpleFloatProperty(sdb_fh);
        this.sdb_cs = new SimpleFloatProperty(sdb_cs);
        this.swd_fh = new SimpleFloatProperty(swd_fh);
        this.swd_cs = new SimpleFloatProperty(swd_cs);
        this.wdb_fh = new SimpleFloatProperty(wdb_fh);
        this.wdb_cs = new SimpleFloatProperty(wdb_cs);
    }

    public City() {

    }

    @Override
    public String toString() {
        return name.getValue().toString();
    }

    public StringProperty nameStringProperty() {
        return name;
    }

    public FloatProperty asl_ft_FloatProperty() {
        return asl_ft;
    }

    public FloatProperty asl_mt_FloatProperty() {
        return asl_mt;
    }

    public FloatProperty sdb_fh_FloatProperty() {
        return sdb_fh;
    }

    public FloatProperty sdb_cs_FloatProperty() {
        return sdb_cs;
    }

    public FloatProperty swd_fh_FloatProperty() {
        return swd_fh;
    }

    public FloatProperty swd_cs_FloatProperty() {
        return swd_cs;
    }

    public FloatProperty wdb_fh_FloatProperty() {
        return wdb_fh;
    }

    public FloatProperty wdb_cs_FloatProperty() {
        return wdb_cs;
    }

    public String getName() {
        return this.name.get();
    }

    public Float getAslFT() {
        return asl_ft.get();
    }

    public Float getAslMT() {
        return asl_mt.get();
    }

    public Float getSdbFH() {
        return sdb_fh.get();
    }

    public Float getSdbCS() {
        return sdb_cs.get();
    }

    public Float getSwdFH() {
        return swd_fh.get();
    }

    public Float getSwdCS() {
        return swd_cs.get();
    }

    public Float getWdbFH() {
        return wdb_fh.get();
    }

    public Float getWdbCS() {
        return wdb_cs.get();
    }

    public void setName(String name) {
        this.name.set(name);
    }

    public void setAsl_ft(Float asl_ft) {
        this.asl_ft.set(asl_ft);
    }

    public void setAsl_mt(Float asl_mt) {
        this.asl_mt.set(asl_mt);
    }

    public void setSdb_fh(Float sdb_fh) {
        this.sdb_fh.set(sdb_fh);
    }

    public void setSdb_cs(Float sdb_cs) {
        this.sdb_cs.set(sdb_cs);
    }

    public void setSwd_fh(Float swd_fh) {
        this.swd_fh.set(swd_fh);
    }

    public void setSwd_cs(Float swd_cs) {
        this.swd_cs.set(swd_cs);
    }

    public void setWdb_fh(Float wdb_fh) {
        this.wdb_fh.set(wdb_fh);
    }

    public void setWdb_cs(Float wdb_cs) {
        this.wdb_cs.set(wdb_cs);
    }
}

这里它的entity类名为 CityEntity :

@Entity
@Table(name = "city")
public class CityEntity implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "city_id", nullable = false)
    private int city_id;
    @Column(name = "city_sn", nullable = false)
    private String name;
    @Column(name = "asl_ft", nullable = false)
    private Float asl_ft;
    @Column(name = "asl_mt", nullable = false)
    private Float asl_mt;
    @Column(name = "sdb_fh", nullable = false)
    private Float sdb_fh;
    @Column(name = "sdb_cs", nullable = false)
    private Float sdb_cs;
    @Column(name = "swb_fh", nullable = false)
    private Float swb_fh;
    @Column(name = "swb_cs", nullable = false)
    private Float swb_cs;
    @Column(name = "wdb_fh", nullable = false)
    private Float wdb_fh;
    @Column(name = "wdb_cs", nullable = false)
    private Float wdb_cs;

    @ManyToOne
    @JoinColumn(name = "fk_province$city")
    private ProvinceEntity province;

    @Override
    public String toString() {
        return name;
    }


    public String getName() {
        return this.name;
    }

    public Float getAslFT() {
        return asl_ft;
    }

    public Float getAslMT() {
        return asl_mt;
    }

    public Float getSdbFH() {
        return sdb_fh;
    }

    public Float getSdbCS() {
        return sdb_cs;
    }

    public Float getSwbFH() {
        return swb_fh;
    }

    public Float getSwbCS() {
        return swb_cs;
    }

    public Float getWdbFH() {
        return wdb_fh;
    }

    public Float getWdbCS() {
        return wdb_cs;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAsl_ft(Float asl_ft) {
        this.asl_ft = asl_ft;
    }

    public void setAsl_mt(Float asl_mt) {
        this.asl_mt = asl_mt;
    }

    public void setSdb_fh(Float sdb_fh) {
        this.sdb_fh = sdb_fh;
    }

    public void setSdb_cs(Float sdb_cs) {
        this.sdb_cs = sdb_cs;
    }

    public void setSwb_fh(Float swd_fh) {
        this.swb_fh = swd_fh;
    }

    public void setSwb_cs(Float swd_cs) {
        this.swb_cs = swd_cs;
    }

    public void setWdb_fh(Float wdb_fh) {
        this.wdb_fh = wdb_fh;
    }

    public void setWdb_cs(Float wdb_cs) {
        this.wdb_cs = wdb_cs;
    }
}

从一开始,每个实体应该是三个类。一个使用属性字段的优势。(本例中为城市),一个用于查看选择数据(城市和省的组合),最后一个用于表格(本例中为城市表)

现在如果我想在我的项目中映射城市表和城市视图并使用它;Java在和中命名约定的最佳做法是什么Mysql

标签: javamysqljavafxnaming-conventions

解决方案


推荐阅读