您的位置:首页 > 其它

Hibernate 中继承映射之三 每一个类一个表

2011-07-09 23:26 295 查看
在数据库中建立表:

mail:id,redipient,phone,address,postcode <id><pk>

post_mail:id,parcel_number <id><pk,fk(mail)>

express_mail:id,express_number,express_company <id><pk,fk(mail)>

新建java project项目:chapter14_pertable

Add Hibernate Capabilities

手工编写 Delivery.java PostDelivery.java ExperssDelivey.java

Delivery.java

代码:

/**
*
*/
package com.b510.examples;

/**
*
* @author XHW
*
* @date 2011-7-9
*
*/
public class Delivery {

private Integer id;
private String recipient;
private String phone;
private String address;
private String postcode;
/**
* @return the id
*/
public Integer getId() {
return id;
}
/**
* @param id the id to set
*/
public void setId(Integer id) {
this.id = id;
}
/**
* @return the recipient
*/
public String getRecipient() {
return recipient;
}
/**
* @param recipient the recipient to set
*/
public void setRecipient(String recipient) {
this.recipient = recipient;
}
/**
* @return the phone
*/
public String getPhone() {
return phone;
}
/**
* @param phone the phone to set
*/
public void setPhone(String phone) {
this.phone = phone;
}
/**
* @return the address
*/
public String getAddress() {
return address;
}
/**
* @param address the address to set
*/
public void setAddress(String address) {
this.address = address;
}
/**
* @return the postcode
*/
public String getPostcode() {
return postcode;
}
/**
* @param postcode the postcode to set
*/
public void setPostcode(String postcode) {
this.postcode = postcode;
}

}

PostDelivery.java

代码:

/**
*
*/
package com.b510.examples;

/**
*
* @author XHW
*
* @date 2011-7-9
*
*/
public class PostDelivery extends Delivery{

private String parcelNumber;

/**
* @return the parcelNumber
*/
public String getparcelNumber() {
return parcelNumber;
}

/**
* @param parcelNumber the parcelNumber to set
*/
public void setparcelNumber(String parcelNumber) {
this.parcelNumber = parcelNumber;
}
}

ExpressDelivery.java

代码;

/**
*
*/
package com.b510.examples;

/**
*
* @author XHW
*
* @date 2011-7-9
*
*/
public class ExpressDelivery extends Delivery {

private String expressNumber;
private String expressCompany;
/**
* @return the expressNumber
*/
public String getExpressNumber() {
return expressNumber;
}
/**
* @param expressNumber the expressNumber to set
*/
public void setExpressNumber(String expressNumber) {
this.expressNumber = expressNumber;
}
/**
* @return the expressCompany
*/
public String getExpressCompany() {
return expressCompany;
}
/**
* @param expressCompany the expressCompany to set
*/
public void setExpressCompany(String expressCompany) {
this.expressCompany = expressCompany;
}
}

Delivery.hbm.xml

代码:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.b510.examples.Delivery" table="mail" catalog="users">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="increment" />
</id>
<property name="recipient" type="java.lang.String">
<column name="recipient" length="200" />
</property>
<property name="phone" type="java.lang.String">
<column name="phone" length="200" />
</property>
<property name="address" type="java.lang.String">
<column name="address" length="400" />
</property>
<property name="postcode" type="java.lang.String">
<column name="postcode" length="10" />
</property>

<joined-subclass name="com.b510.examples.PostDelivery" table="post_mail">
<key column="id" foreign-key="id"></key>
<property name="parcelNumber" type="java.lang.String">
<column name="parcel_number" length="30" />
</property>
</joined-subclass>

<joined-subclass name="com.b510.examples.ExpressDelivery" table="express_mail">
<key column="id" foreign-key="id"></key>
<property name="expressCompany" type="java.lang.String">
<column name="express_company" length="40" />
</property>
<property name="expressNumber" type="java.lang.String">
<column name="express_number" length="40" />
</property>
</joined-subclass>
</class>
</hibernate-mapping>

测试代码:

HibernateTest.java

代码:

/**
*
*/
package com.b510.examples;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
*
* @author XHW
*
* @date 2011-7-9
*
*/
public class HibernateTest {

/**
* @param args
*/
public static void main(String[] args) {
HibernateTest test=new HibernateTest();
//test.insertDelivery();
test.listPostDelivery();
test.listExpressDelivery();

}

public void insertDelivery() {
Session session = HibernateSessionFactoryUtil.getSessionFactory()
.openSession();
Transaction tx = session.beginTransaction();

PostDelivery post = new PostDelivery();
post.setRecipient("Hongten");
post.setAddress("广州大学");
post.setPhone("115");
post.setPostcode("510006");
post.setparcelNumber("订单号:ACD123SDJF23");

ExpressDelivery express = new ExpressDelivery();
express.setRecipient("HongWei");
express.setAddress("四川成都");
express.setPhone("123465");
express.setPostcode("456789");
express.setExpressNumber("订单号:423SDFSJDKLF");
express.setExpressCompany("顺丰快递公司");
try {
session.save(post);
session.save(express);
} catch (Exception e) {
e.printStackTrace();
if (tx.isActive()) {
tx.rollback();
}
}
session.getTransaction().commit();
}

public void listPostDelivery(){
Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();
session.beginTransaction();
Query query=session.createQuery("from PostDelivery");
List<PostDelivery> list=query.list();
session.getTransaction().commit();
for(PostDelivery post:list){
System.out.println(post.getId());
System.out.println(post.getAddress());
System.out.println(post.getRecipient());
System.out.println(post.getparcelNumber());
}
}
public void listExpressDelivery(){
Session session=HibernateSessionFactoryUtil.getSessionFactory().openSession();
session.beginTransaction();
Query query=session.createQuery("from ExpressDelivery");
List<ExpressDelivery> list=query.list();
session.getTransaction().commit();
for(ExpressDelivery express:list){
System.out.println(express.getId());
System.out.println(express.getAddress());
System.out.println(express.getRecipient());
System.out.println(express.getExpressCompany());
System.out.println(express.getExpressNumber());
}
}
}

运行效果:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Hibernate:
select
postdelive0_.id as id0_,
postdelive0_1_.recipient as recipient0_,
postdelive0_1_.phone as phone0_,
postdelive0_1_.address as address0_,
postdelive0_1_.postcode as postcode0_,
postdelive0_.parcel_number as parcel2_1_
from
post_mail postdelive0_
inner join
users.mail postdelive0_1_
on postdelive0_.id=postdelive0_1_.id
1
广州大学
Hongten
订单号:ACD123SDJF23
Hibernate:
select
expressdel0_.id as id0_,
expressdel0_1_.recipient as recipient0_,
expressdel0_1_.phone as phone0_,
expressdel0_1_.address as address0_,
expressdel0_1_.postcode as postcode0_,
expressdel0_.express_company as express2_2_,
expressdel0_.express_number as express3_2_
from
express_mail expressdel0_
inner join
users.mail expressdel0_1_
on expressdel0_.id=expressdel0_1_.id
2
四川成都
HongWei
顺丰快递公司
订单号:423SDFSJDKLF
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐