Hibernate组件属性
Hibernate的组件属性其实对应在数据库中就是将某个组件(javabean)中的属性映射为字段。
创建组件(javabean)
public class Address {
private String postcode;
private String phone;
private String address;
public Address() {
}
public Address(String postcode, String phone, String address) {
this.postcode = postcode;
this.phone = phone;
this.address = address;
}
public String getPostcode() {
return postcode;
}
public void setPostcode(String postcode) {
this.postcode = postcode;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
Javabean
将原有的Students类中的String address换成Address address类型,并修改其set和get方法。
import java.sql.Blob;
import java.util.Date;
/**学生类
* @author qiqiangvae
*
*/
public class Students {
private int id;
private String name;
private String gender;
private Date date;
private Address address;
private Blob picture;
public Students() {
}
public Students(int id, String name, String gender, Date date, Address address) {
super();
this.id = id;
this.name = name;
this.gender = gender;
this.date = date;
this.address = address;
}
@Override
public String toString() {
return "Students [id=" + id + ", name=" + name + ", gender=" + gender + ", date=" + date + ", address="
+ address + ", picture=" + picture + "]";
}
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;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public Blob getPitcure() {
return picture;
}
public void setPicture(Blob picture) {
this.picture = picture;
}
}
修改Students.hbm.xml
修改Students.hbm.xml,将原有的address删掉,添加新的组件属性
<component name="address" class="Address">
<property name="postcode" column="POSTCODE"></property>
<property name="phone" column="PHONE"></property>
<property name="address" column="ADDRESS"></property>
</component>
写入组件属性
public void testSaveStudents() {
Students students=new Students();
students.setName("李心剑");
students.setDate(new Date());
Address address=new Address("246514", "13055555555", "纯阳宫");
students.setAddress(address);
session.save(students);
}
可以看到,Hibernate是将组件(Javabean)中的属性追加到数据表后面作为新的字段。