实体类
主表Drivers.java
package com.minde.po;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.SequenceGenerator;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
@Entity //定义实体类映射,代表定义一个默认为Drivers的映射类名
public class Drivers {
private int driverid;
private String drivername;
private String drivertype;
private String driverno;
private int driveryear;
private String status;
private Cars cars;
public Drivers() {
super();
}
@Id
@GeneratedValue(generator="a",strategy=GenerationType.SEQUENCE) //使用下面定义的序列值
@SequenceGenerator(name="a",sequenceName="seq_drivers") //定义序列来自于数据库seq_drivers
public int getDriverid() {
return driverid;
}
public void setDriverid(int driverid) {
this.driverid = driverid;
}
@OneToOne(fetch=FetchType.EAGER) //FetchType.EAGER代表立即加载
@Cascade({CascadeType.ALL}) //代表级联进行增、删除、改操作
@PrimaryKeyJoinColumn
public Cars getCars() {
return cars;
}
public void setCars(Cars cars) {
this.cars = cars;
}
public String getDrivername() {
return drivername;
}
public void setDrivername(String drivername) {
this.drivername = drivername;
}
public String getDrivertype() {
return drivertype;
}
public void setDrivertype(String drivertype) {
this.drivertype = drivertype;
}
public String getDriverno() {
return driverno;
}
public void setDriverno(String driverno) {
this.driverno = driverno;
}
public int getDriveryear() {
return driveryear;
}
public void setDriveryear(int driveryear) {
this.driveryear = driveryear;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
从表Cars.java
package com.minde.po;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
@Entity
public class Cars {
private int cid;
private String carno;
private String cartype;
private int cartons;
private int caryears;
private Drivers drivers;
public Cars() {
super();
}
@Id
@GenericGenerator(name="s",strategy="foreign",
parameters={@Parameter(name="property",value="drivers")}) //定义当前表的主键以外键方式生成,使用的
//是属性为drivers的表的主键
@GeneratedValue(generator="s") //使用了上面表定义的主键生成策略
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
@OneToOne(mappedBy="cars") //配置一对一映射 ,mappedBy代表此表(cars)是从表,关系由对方Drivers
//方来维护,所以Drivers有主控制权,这是最重要的。
public Drivers getDrivers() {
return drivers;
}
public void setDrivers(Drivers drivers) {
this.drivers = drivers;
}
public String getCarno() {
return carno;
}
public void setCarno(String carno) {
this.carno = carno;
}
public String getCartype() {
return cartype;
}
public void setCartype(String cartype) {
this.cartype = cartype;
}
public int getCartons() {
return cartons;
}
public void setCartons(int cartons) {
this.cartons = cartons;
}
public int getCaryears() {
return caryears;
}
public void setCaryears(int caryears) {
this.caryears = caryears;
}
}
hibernate.cfg.xml文件配置
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="hibernate.connection.username">scott</property>
<property name="hibernate.connection.password">tiger</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="show_sql">true</property>
<!-- 添加注解的两个映射类 -->
<mapping class="com.minde.po.Drivers"/>
<mapping class="com.minde.po.Cars"/>
</session-factory>
</hibernate-configuration>
最重要的就是上面的配置,其余的和之前做过的一样