zoukankan      html  css  js  c++  java
  • 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方法。

    第三步:测试:

    发现按照要求生成成功。

  • 相关阅读:
    剑指offer系列——56.删除链表中重复的结点
    剑指offer系列——55.链表中环的入口结点
    剑指offer系列——54.字符流中第一个不重复的字符
    剑指offer系列——53.表示数值的字符串
    MinGW与Cygwin
    Android-x86虚拟机安装配置全攻略
    linux下使用NFS挂载文件系统
    ubuntu 64bit “arm-linux-gcc: No such file or directory”问题的解决方法
    虚拟机下ubuntu的minicom使用指南
    Linux 下编译、安装、配置 QT
  • 原文地址:https://www.cnblogs.com/alsf/p/7822241.html
Copyright © 2011-2022 走看看