01-hibernate注解:类级别注解,@Entity,@Table,@Embeddable
@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方法。
第三步:測試:
發現按照要求生成成功。
總結
以上是生活随笔為你收集整理的01-hibernate注解:类级别注解,@Entity,@Table,@Embeddable的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 培训学习笔记 - 人们不买钻头,他们买孔
- 下一篇: 电脑版qq怎么发送语音消息