@Entity:用來標志實體類,知名這是一個和數據庫表映射的實體類
@Id注解指明這個屬性映射為數據庫的主鍵
@GeneratedValue注解默認使用主鍵生成方式為自增,hibernate會自動生成一個名為HIBERNATE_SEQUENCE的序列。
@Table實體類映射表表名稱,如果不加這個注解會默認使用類名
@Column使用來映射屬性名和字段名,不注解的時候hibernate會自動根據屬性名字生成數據表的字段名。如屬性name映射生成字段NAME;多字母屬性如testName會自動映射為TEST_NAME。表明映射規則也是如此。
1 @Entity 2 @Table(name="datasource") 3 public class Source implements IdGeneratorable{ 4 5 @Id 6 @Column(length=20) 7 private String id; 8 9 private String name; 10 11 private String chinese; 12 13 private String jdbcDirver; 14 15 private String driverClass; 16 17 private String url; 18 19 @Column(name="u_name") 20 private String username; 21 22 @Column(name="pwd") 23 private String password; 24 25 private String charset; 26 27 private String sortRule; 28 29 private String databaseName; 30 31 private String addTime; 32 33 private Integer state = Constant.ACTIVATE_SATE; 34 35 @OneToOne(targetEntity=UploadFile.class,fetch=FetchType.EAGER) 36 @JoinColumn(name="file_id",referencedColumnName="id") 37 private UploadFile association; 38 39 @OneToMany(targetEntity=DataTable.class,fetch=FetchType.LAZY,mappedBy="source") 40 @JsonIgnore 41 private List<DataTable> tables; 42 //省略getter和setter方法 43 }
1 @Entity 2 public class DataTable implements IdGeneratorable{ 3 4 @Id 5 private String id; 6 7 private String name; 8 9 private String chinese; 10 11 @ManyToOne(targetEntity=Source.class,fetch=FetchType.LAZY) 12 @JoinColumn(name="data_source_id",referencedColumnName="id") 13 @JsonIgnore 14 private Source source; 15 16 @OneToMany(targetEntity=TableColumn.class,fetch=FetchType.LAZY,mappedBy="dataTable") 17 @JsonIgnore 18 private List<TableColumn> columns; 19 20 private Date addTime;
}
關聯配置:
@OneToOne 配置一對一關聯,屬性targetEntity指定關聯的對象的類型 。
@JoinColumn指定該實體類對應的表中引用的表的外鍵,name屬性指定外鍵名稱,referencedColumnName指定應用表中的字段名稱
@OneToMany注解“一對多”關系中‘一’方的實體類屬性(該屬性是一個集合對象),targetEntity注解關聯的實體類類型,mappedBy注解另一方實體類中本實體類的屬性名稱
@ManyToOne注解“一對多”關系中‘多’方的實體類屬性(該屬性是單個對象),targetEntity注解關聯的實體類類型
