Spring中常用的注解
最近学习Spring,其中数据插表,个人觉得,用注解的方式会跟简单一些,以下做一些常用注解的总结。
一、声明实体
@Entity
对实体注释。任何Hibernate映射对象都要有这个注释
@Table
声明此对象映射到数据库的数据表,通过它可以为实体指定表(talbe),目录(Catalog)和schema的名字。该注释不是必须的,如果没有则系统使用默认值(实体的短类名)。
@Version
该注释可用于在实体Bean中添加乐观锁支持。
二、声明主键
@Id
声明此属性为主键。该属性值可以通过应该自身创建,但是Hibernate推荐通过Hibernate生成
@GeneratedValue
指定主键的生成策略。有如下四个值
TABLE:使用表保存id值
IDENTITY:identitycolumn
SEQUENCR :sequence
AUTO:根据数据库的不同使用上面三个
1 /* 2 * 主键 3 * 生成策略为自动增长 4 * 唯一、长度为20 5 */ 6 @Id 7 @GeneratedValue 8 @Column(name = "Attributes", unique = true, nullable = false, length = 20)
三、声明普通属性
@Column
声明该属性与数据库字段的映射关系。
1 @Table(name="Attributes") 2 @Entity 3 4 public class Attributes extends BaseEntity{ 5 private static final long serialVersionUID = 8462412232619290034L; 6 7 @Column(name="IMAGE_ID") 8 long image_id; 9 @Column(name="SYNSETS") 10 private String synsets; 11 @Column(name="H") 12 private String h; 13 @Column(name="OBJECT_ID") 14 private int object_id; 15 @Column(name="Names") 16 private String names; 17 @Column(name="W") 18 private String w; 19 @Column(name="Y") 20 private String y; 21 @Column (name="X") 22 private String x; 23 24 25 public long getImage_id() { 26 return image_id; 27 } 28 public void setImage_id(long image_id) { 29 this.image_id = image_id; 30 } 31 public String getSynsets() { 32 return synsets; 33 } 34 public void setSynsets(String synsets) { 35 this.synsets = synsets; 36 } 37 public String getH() { 38 return h; 39 } 40 public void setH(String h) { 41 this.h = h; 42 } 43 public int getObject_id() { 44 return object_id; 45 } 46 public void setObject_id(int i) { 47 this.object_id = i; 48 } 49 public String getNames() { 50 return names; 51 } 52 public void setNames(String names) { 53 this.names = names; 54 } 55 public String getW() { 56 return w; 57 } 58 public void setW(String w) { 59 this.w = w; 60 } 61 public String getY() { 62 return y; 63 } 64 public void setY(String y) { 65 this.y = y; 66 } 67 public String getX() { 68 return x; 69 } 70 public void setX(String x) { 71 this.x = x; 72 } 73 @Override 74 public String toString() 75 { 76 return "Attributes[image_id"+image_id+"synsets"+synsets+"h"+h+"object_id"+object_id+"names"+names+ 77 "w"+ w +"y"+y+"x"+ x +"]"; 78 }
四、声明关联关系
一对多关联关系
1 @OneToMany(mappedBy = "Attributes", cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE}, fetch = FetchType.EAGER) 2 Set<MyObject> myObjects=new HashSet<MyObject>();
一对多声明
@ManyToOne(cascade=CascadeType.REFRESH,)
@JoinColumn
多对一声明 ,声明为双向关联
一对一关联关系
@OneToOne(optional= true,cascade =CascadeType.ALL, mappedBy = “person”)
一对一关联声明
@OneToOne(optional = false, cascade = CascadeType.REFRESH)
@JoinColumn(name = “Person_ID”, referencedColumnName = “personid”,unique = true)
声明为双向关联
多对多关联关系
@ManyToMany(mappedBy= “students”)
多对多关联声明。
@ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.LAZY)
@JoinTable(name = “Teacher_Student”,
joinColumns = {@JoinColumn(name = “Teacher_ID”, referencedColumnName =“teacherid”)},
inverseJoinColumns = {@JoinColumn(name = “Student_ID”, referencedColumnName =“studentid”)})
第一次就学了这么多。
参考博客:https://www.cnblogs.com/hoojjack/p/6568920.html
https://blog.csdn.net/qq_26344609/article/details/72650464