@Entity
@Entity:映射實體類
@Entity(name="tableName")
name:可選,對應數據庫中一個表,若表名與實體類名相同,則可以省略。
注意:使用@Entity時候必須指定實體類的主鍵屬性。
第一步:建立實體類:
分別給類名上面加上@Entity注解。給類中作為主鍵的屬性的get方法前面加上@Id注解。
package Com.Entity; import java.util.Date; import javax.persistence.Entity;/*JPA主鍵*/ import javax.persistence.Id; /*學生實體類*/ @Entity(name="Students") public class Students { private int sid; private String sname;//姓名 private String gender;//性別 private Date birthday; private String major;//專業 private String address;//地址 public Students() { } public Students(int sid, String sname, String gender, Date birthday, String major, String address) { //super(); this.sid = sid; this.sname = sname; this.gender = gender; this.birthday = birthday; this.major = major; this.address = address; } @Id public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getMajor() { return major; } public void setMajor(String major) { this.major = major; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
第二步:在配置中配置好這個類。
第三步:寫測試類:
package Com.Entity; import java.util.EnumSet; import org.hibernate.boot.Metadata; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.service.ServiceRegistry; import org.hibernate.tool.hbm2ddl.SchemaExport; import org.hibernate.tool.schema.TargetType; import org.junit.Test; public class TestStudents { @Test public void testSchemaExport() { //創建服務注冊對象 ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build(); //創建Metadata對象 Metadata metadata =new MetadataSources(serviceRegistry).buildMetadata(); //創建SchemaExport對象 SchemaExport export = new SchemaExport(); export.create(EnumSet.of(TargetType.DATABASE),metadata); } }
調試后,數據庫中正常生成表。
@Table
@Table(name="",catalog="",schema="")
@Entity配合使用,只能標注在實體類的class定義處,表示實體對應的數據庫表的信息。
name:可選,映射表名稱,默認表名和實體名稱一致,只有在不一致的情況下需要指定表名。
catalog(目錄):可選,表示catalog名稱,默認為:catalog("")。
schema(模式):可選,表示schema名稱,默認為:schema("")。
Table注解實例:對於之前的Entity修改如下:
name:表名前面,schema:默認為使用的數據庫名
@Embeddable
表示一個非Entity類可以嵌入到另一個Entity類中作為屬性而存在。
相當於代替之前單筆操作的的組件屬性。
第一步:在建一個非entity類,並且在前加上@Embeddable注解。
package Com.Entity; import javax.persistence.Embeddable; @Embeddable /*表示一個嵌入類,在另一個實體類中充當屬性*/ public class Address { private String postCode;//郵編 private String address;//地址 private String phone; public Address() { } public String getPostCode() { return postCode; } public void setPostCode(String postCode) { this.postCode = postCode; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } }
第二步:在entity實體類中加入這個類的對象,並且加上set,get方法。
第三步:測試:
發現按照要求生成成功。