hibernate中的component技术例子

如果一张表有很多字段,那么我们除了将表进行拆分之外,在hibernate中我们还有一种很好的方法,我们可以将表中的字段进行分类,然后将同一类的

用对象进行封装,这就是我们这儿用到的Component技术:
1、
package domain;
public class Address {
private String city;
private String street;
private String zipcode;
public String getCity() {
 return city;
}
public void setCity(String city) {
 this.city = city;
}
public String getStreet() {
 return street;
}
public void setStreet(String street) {
 this.street = street;
}
public String getZipcode() {
 return zipcode;
}
public void setZipcode(String zipcode) {
 this.zipcode = zipcode;
}
}
2、
package domain;
public class Person {
private Long id;
private String name;
private Address fimallyAddr;
private Address mailAddr;
public Long getId() {
 return id;
}
public void setId(Long id) {
 this.id = id;
}
public String getName() {
 return name;
}
public void setName(String name) {
 this.name = name;
}
public Address getFimallyAddr() {
 return fimallyAddr;
}
public void setFimallyAddr(Address fimallyAddr) {
 this.fimallyAddr = fimallyAddr;
}
public Address getMailAddr() {
 return mailAddr;
}
public void setMailAddr(Address mailAddr) {
 this.mailAddr = mailAddr;
}
}
4、
<class name="domain.Person" table="PERSON" schema="scott">
<id name="id" column="ID">
<generator class="increment"></generator>
</id>
<property name="name" column="NAME"></property>

<component name="fimallyAddr" class="domain.Address">
<property name="city" column="ADDRESS_CITY"></property>
<property name="street" column="ADDRESS_STREET"></property>
<property name="zipcode" column="ADDRESS_ZIPCODE"></property>
</component>

<component name="mailAddr" class="domain.Address">
<property name="city" column="mailing_city"></property>
<property name="street" column="mailing_street"></property>
<property name="zipcode" column="mailing_zipcode"></property>
</component>
</class>

4、测试package junit;

import org.hibernate.Session;
import org.hibernate.Transaction;
import domain.Address;
import domain.Person;
import util.HibernateSessionFactory;
import junit.framework.TestCase;
public class TestComponent extends TestCase {
public void testInsertPerson(){
 Session session=HibernateSessionFactory.getSession();
 Transaction tx=session.beginTransaction();
 Person p=new Person();
 p.setName("李开复");
 
 Address fimallyAddr=new Address();
 fimallyAddr.setCity("北京");
 fimallyAddr.setStreet("中关村");
 fimallyAddr.setZipcode("100010");
 
 Address mailAddr=new Address();
 mailAddr.setCity("上海");
 mailAddr.setStreet("香港路");
 mailAddr.setZipcode("10008");
 
 p.setFimallyAddr(fimallyAddr);
 p.setMailAddr(mailAddr);
 
 try{
  session.save(p);
  tx.commit();
 }catch(Exception e){
  e.printStackTrace();
  //回滚
 tx.rollback();
 }finally{
  HibernateSessionFactory.closeSession();
 }
 }  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值