我们从底层讲起,众所周知,hibernate是ORM框架(对象关系数据库)映射框架,它允许我们以面向对象的观点操作数据库,因此我们要编写的第一层代码,名字为po层,放到po文件夹中,在这个文件夹里写入POJO+.hbm文件。
其中POJO是plain and old java object,你懂得,hbm是hibernate的配置文件,告诉hibernate对象类以及他们之间的关系如何映射到数据库。
package org.atm.po;
import java.io.*;
import java.util.*;
public class Atm implements Serializable{
private static final long serialVersionUID=49L;
private Integer id;
private String address;
private double money;
private Set<CardLog> cardlogs=new HashSet<CardLog>();
private Set<AtmLog> atmlogs=new HashSet<AtmLog>();
public Atm(){}
public Atm(Integer id, String address, double money,Set<CardLog> cardlogs,Set<AtmLog> atmlogs) {
super();
this.id = id;
this.address = address;
this.money = money;
this.cardlogs=cardlogs;
this.atmlogs=atmlogs;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public void setCardlogs(Set<CardLog> cardlogs)
{
this.cardlogs=cardlogs;
}
public Set<CardLog> getCardlogs()
{
return cardlogs;
}
public void setAtmlogs(Set<AtmLog> atmlogs)
{
this.atmlogs=atmlogs;
}
public Set<AtmLog> getAtmlogs()
{
return atmlogs;
}
public boolean equals(Object obj)
{
if(obj instanceof Card)
{
Atm atm=(Atm)obj;
if(atm.getId()==this.getId())
return true;
else return false;
}
else return false;
}
public int hashCode()
{
return this.getId()+this.getAddress().hashCode();
}
}
<?xml version="1.0" encoding="GBK"?>
<!-- 指定Hibernate映射文件的DTD信息 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Hibernate映射文件的根元素 -->
<hibernate-mapping package="org.atm.po">
<class name="Atm" table="atm_table">
<id name="id" type="integer" column="atm_id">
<!-- 指定使用identity主键生成策略 -->
<generator class="identity"/>
</id>
<!-- 映射普通属性 -->
<property name="address" column="atm_address" type="string" length="50"/>
<property name="money" column="atm_money" type="double" />
<set name="cardlogs" inverse="true">
<key column="atm_id"/>
<one-to-many class="CardLog"/>
</set>
<set name="atmlogs" inverse="true">
<key column="atm_id"/>
<one-to-many class="AtmLog"/>
</set>
</class>
</hibernate-mapping>
关于hbm文件的配置是死的东西,不在赘述。在图中的每个对象都对应一个POJO+hbm文件。自此PO建立完毕,这一层叫做持久层。
其中POJO是plain and old java object,你懂得,hbm是hibernate的配置文件,告诉hibernate对象类以及他们之间的关系如何映射到数据库。
package org.atm.po;
import java.io.*;
import java.util.*;
public class Atm implements Serializable{
private static final long serialVersionUID=49L;
private Integer id;
private String address;
private double money;
private Set<CardLog> cardlogs=new HashSet<CardLog>();
private Set<AtmLog> atmlogs=new HashSet<AtmLog>();
public Atm(){}
public Atm(Integer id, String address, double money,Set<CardLog> cardlogs,Set<AtmLog> atmlogs) {
super();
this.id = id;
this.address = address;
this.money = money;
this.cardlogs=cardlogs;
this.atmlogs=atmlogs;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
public void setCardlogs(Set<CardLog> cardlogs)
{
this.cardlogs=cardlogs;
}
public Set<CardLog> getCardlogs()
{
return cardlogs;
}
public void setAtmlogs(Set<AtmLog> atmlogs)
{
this.atmlogs=atmlogs;
}
public Set<AtmLog> getAtmlogs()
{
return atmlogs;
}
public boolean equals(Object obj)
{
if(obj instanceof Card)
{
Atm atm=(Atm)obj;
if(atm.getId()==this.getId())
return true;
else return false;
}
else return false;
}
public int hashCode()
{
return this.getId()+this.getAddress().hashCode();
}
}
<?xml version="1.0" encoding="GBK"?>
<!-- 指定Hibernate映射文件的DTD信息 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Hibernate映射文件的根元素 -->
<hibernate-mapping package="org.atm.po">
<class name="Atm" table="atm_table">
<id name="id" type="integer" column="atm_id">
<!-- 指定使用identity主键生成策略 -->
<generator class="identity"/>
</id>
<!-- 映射普通属性 -->
<property name="address" column="atm_address" type="string" length="50"/>
<property name="money" column="atm_money" type="double" />
<set name="cardlogs" inverse="true">
<key column="atm_id"/>
<one-to-many class="CardLog"/>
</set>
<set name="atmlogs" inverse="true">
<key column="atm_id"/>
<one-to-many class="AtmLog"/>
</set>
</class>
</hibernate-mapping>
关于hbm文件的配置是死的东西,不在赘述。在图中的每个对象都对应一个POJO+hbm文件。自此PO建立完毕,这一层叫做持久层。