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方法。

 

第三步:測試:

發現按照要求生成成功。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM