《Hibernate学习笔记八》:组件映射

《Hibernate学习笔记八》:组件映射

前面介绍了一对一的单向、双向外键关联,例如,学生证和学生是一个一对一的关系。这篇博文主要是介绍下组件映射,即一个是另一个的一部分,例如,学生证的信息也可以作为学生信息的一部分,即在数据库中只存在学生一个表,而不是有学生和学生证两个表,并且这两个表中有一个一对一的关联关系。

如下:

有人或许会说,那我们就将学生和学生证的信息写在一个类中,则就不需要组件映射了,确实可以这样,但是,根据类的设计原则,我们一般都会将其设计为两个类,然后将学生证的信息作为一个组件映射为学生信息的一部分。那么该如何来实现了,下面将进行介绍。

组件映射的Annotation实现:借助于@embedded

IdCard类

IdCard类由于是学生信息的一部分,因此此类不是一个实体类,即没有用@Entity注解标识。

public class IdCard {
    private String idCardNum;
    private Date idCardDate;
    //..几个属性的get、set方法
    }
 
 
  • 1
  • 2
  • 3
  • 4
  • 5

Student类

里面用@Embedded来对IdCard这个类进行注解即可实现组件映射。

@Entity
    public class Student {
    private int id;
    private String name;
    private IdCard idCard;
    @Id
    @GeneratedValue
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Embedded  //这样就是将IdCard作为一个组件内嵌进来了。
    public IdCard getIdCard() {
        return idCard;
    }
    public void setIdCard(IdCard idCard) {
        this.idCard = idCard;
    }

    }
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

hibernate.cfg.xml文件

在此文件中,只需要指定一个映射实体类Student即可。如下:

<mapping  class="com.hibernate.model.Student"/>
 
 
  • 1

测试类

public class StudentTest {

    @Test
    public void testSchema(){
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build();
        Metadata metadata = new MetadataSources(serviceRegistry).buildMetadata();
        SchemaExport schemaExport = new SchemaExport();
        schemaExport.create(EnumSet.of(TargetType.DATABASE), metadata);
    }

    }
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

此测试类就是简单的将SQL语句写入数据库中。

当运行该测试类,在控制台中我们可以看到如下的输出信息,从输出信息中我们可以看到:创建了一个学生表,且学生证的信息时学生表的一部分。

由于使用Annotation来实现组件映射相当简单,这里就不再介绍关于使用XXX.hbm.xml文件的实现了。


from: http://blog.csdn.net/u010412719/article/details/51334111

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值