hibernate详解(三)----->>组件映射(一)
?
???? Hibernate建议在进行领域模型建模时要细粒度一些,简单地说,就是类要比表多,这种映射方式就是组件(component)映射。
???? 组件类是值类型的,即它没有对象标识符属性,在数据库中也没有对应的表,它只隶属于另一个持久化类的实例。它的数据被嵌入到所隶属的持久化实例对应的数据库表的记录中。
???? 组件映射的应用有三种常见情况:把组件类作为持久化类的单个属性来使用、把组件类作为持久化类的集合属性来使用、把组件类作为持久化类的对象标识符来使用。下面分别来介绍。
?
?????? 1、组件类作为持久化类的单个属性
?????? 定义一个Address类(它是值类型的),代码如下:
?
? Address.java
?
?
- ?
- ?
- ?
?? 配置文件:hibernate.cfg.xml
?
?
?
- ?
?
? 2、组件类作为持久化类的集合属性
?
?? Photo.java
?
?
- ?
- ?
- ?
?? 配置文件:hibernate.cfg.xml
?
?
?
- >?? ??<hibernate-configuration>?? ????<session-factory>?? ???????? ??????????<!--?数据库方言设置?-->?? ????????<property?name="hibernate.dialect">?? ????????????org.hibernate.dialect.MySQLInnoDBDialect ??????????</property>?? ???????? ??????????<!--?数据库连接参数设置?-->?? ????????<property?name="hibernate.connection.driver_class">?? ????????????com.mysql.jdbc.Driver ??????????</property>?? ????????<property?name="hibernate.connection.url">jdbc:mysql:///hibernate</property>?? ????????<property?name="hibernate.connection.username">root</property>?? ????????<property?name="hibernate.connection.password">123</property>?? ???? ??????????<!--实际操作数据库时是否显示SQL?-->?? ????????<!--? ?????????<property?name="hibernate.show_sql">true</property>-->??????????<property?name="hibernate.format_sql">true</property>?? ???????? ?????????? ??????????<!--将数据库schema的DDL导出到数据库?-->?? ????????<property?name</