一.粒度划分
person表
create table person(
id varchar(32) primary key,
address varchar(40),
postcode int,
firstname varchar(10),
lastname varchar(10)
)
然后分成了两个对象Info 和Name
package component;
public class Info {
private String address;
private int postcode;
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getPostcode() {
return postcode;
}
public void setPostcode(int postcode) {
this.postcode = postcode;
}
}
package component;
public class Name {
private String firstname;
private String lastname;
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
}
package component;
public class Person {
private String id;
private Info info;
private Name name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Info getInfo() {
return info;
}
public void setInfo(Info info) {
this.info = info;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
}
映射文件
<component name="name" class="component.Name"> <property name="firstname" type="java.lang.String"> <column name="firstname" length="10" /> </property> <property name="lastname" type="java.lang.String"> <column name="lastname" length="10" /> </property> </component> <component name="info" class="component.Info"> <property name="address" type="java.lang.String"> <column name="address" length="40" /> </property> <property name="postcode" type="java.lang.Integer"> <column name="postcode" /> </property> </component>
测试
package component;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import config.HibernateSessionFactory;
public class Test {
public void insert() {
Person person = new Person();
Name name = new Name();
Info info = new Info();
name.setFirstname("优快云");
name.setLastname("Simon");
info.setAddress("China");
info.setPostcode(450000);
Session session = HibernateSessionFactory.getSession();
session.beginTransaction();
person.setInfo(info);
person.setName(name);
session.save(person);
session.beginTransaction().commit();
session.close();
}
public void sel() {
Session session = HibernateSessionFactory.getSession();
Query query = session.createQuery("from Person");
List list = query.list();
Person person = (Person) list.get(0);
System.out.println(person.getName().getFirstname()
+ person.getName().getLastname());
}
public static void main(String[] args) {
new Test().sel();
}
}
二.复合主键
待续。。。。