@Entity
@Entity:映射实体类
@Entityname=”tableName”)
name:可选,对应数据库中一个表,若表名与实体类名相同,则可以省略。
注意:使用@Entity时候必须指定实体类的主键属性。
第一步:建立实体类:
分别给类名上面加上@Entity注解。给类中作为主键的属性的get方法前面加上@Id注解。
package Com.Entity; import java.util.Date; import javax.persistence.Entity;/*JPA主键*/ import javax.persistence.Id; /*学生实体类*/ @Entityname="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 Studentsint 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 setSidint sid) { this.sid = sid; } public String getSname) { return sname; } public void setSnameString sname) { this.sname = sname; } public String getGender) { return gender; } public void setGenderString gender) { this.gender = gender; } public Date getBirthday) { return birthday; } public void setBirthdayDate birthday) { this.birthday = birthday; } public String getMajor) { return major; } public void setMajorString major) { this.major = major; } public String getAddress) { return address; } public void setAddressString 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 MetadataSourcesserviceRegistry).buildMetadata); //创建SchemaExport对象 SchemaExport export = new SchemaExport); export.createEnumSet.ofTargetType.DATABASE),metadata); } }
调试后,数据库中正常生成表。
@Table
@Tablename=””,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 setPostCodeString postCode) { this.postCode = postCode; } public String getAddress) { return address; } public void setAddressString address) { this.address = address; } public String getPhone) { return phone; } public void setPhoneString phone) { this.phone = phone; } }
第二步:在entity实体类中加入这个类的对象,并且加上set,get方法。
第三步:测试:
发现按照要求生成成功。