前面文章阐述了,如果在Container,Box,Bottle三者的继承关系中配置HBM文件(box,bottle继承自Container)
现在,有一种更加简便的方式,使数据库中不需要建立一个box。bottle共享的表,而是分别建立Box和Bottle的表,这样更加复合面向对象的思想,而查询container则通过HBM配置文件来进行
Container持久类 其中Xparam,Yparam,Zparam对应box,bottle中的length等属性,只要保证都能包括Box,Bottle中的属性就可以,也就是说container属性是Box和Bottle和合集
本例子使用了hilo主键生成器策略所以,需要在数据库中建立一张维护高位值的表,并给出一个高位数值
CREATE TABLE `box` (
`id` int(11) NOT NULL default '0',
`size` double default NULL,
`name` varchar(50) default NULL,
`description` varchar(50) default NULL,
`width` double default NULL,
`height` double default NULL,
`len` double default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `bottle` (
`id` int(11) NOT NULL default '0',
`size` double default NULL,
`name` varchar(20) default NULL,
`diameter` double default NULL,
`height` double default NULL,
`description` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `hibernate_unique_key` (
`next_hi` int(11) NOT NULL default '0',
PRIMARY KEY (`next_hi`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
package subselect;
public class Container ...{
private String id;
private double size;
private String name;
private String description;
private double xparam;
private double yparam;
private double zparam;
public String getDescription() ...{
return description;
}
public void setDescription(String description) ...{
this.description = description;
}
public String getId() ...{
return id;
}
public void setId(String id) ...{
this.id = id;
}
public String getName() ...{
return name;
}
public void setName(String name) ...{
this.name = name;
}
public double getSize() ...{
return size;
}
public void setSize(double size) ...{
this.size = size;
}
public double getXparam() ...{
return xparam;
}
public void setXparam(double xparam) ...{
this.xparam = xparam;
}
public double getYparam() ...{
return yparam;
}
public void setYparam(double yparam) ...{
this.yparam = yparam;
}
public double getZparam() ...{
return zparam;
}
public void setZparam(double zparam) ...{
this.zparam = zparam;
}
}
Box持久类
package subselect;
public class Box ...{
private int id;
private double size;
private String name;
private String description;
private double width;
private double length;
private double height;
public String getDescription() ...{
return description;
}
public void setDescription(String description) ...{
this.description = description;
}
public double getHeight() ...{
return height;
}
public void setHeight(double height) ...{
this.height = height;
}
public int getId() ...{
return id;
}
public void setId(int id) ...{
this.id = id;
}
public double getLength() ...{
return length;
}
public void setLength(double length) ...{
this.length = length;
}
public String getName() ...{
return name;
}
public void setName(String name) ...{
this.name = name;
}
public double getSize() ...{
return size;
}
public void setSize(double size) ...{
this.size = size;
}
public <
分享到:
相关推荐
在Hibernate的配置中,`<class>`标签用于定义一个持久化类,它包含了一系列属性,其中`subselect`属性可能对你的情况特别有用。 `subselect`属性允许你指定一个SQL子查询,这个子查询的结果将被用作该类的实例来源...
6.4.4 使用TOP子句 6.4.5 NULL的判断 6.5 模糊查询 6.5.1 使用LIKE运算符进行查询 6.5.2 使用“_”通配符进行查询 6.5.3 使用“%”通配符进行查询 6.5.4 使用“[]”通配符进行查询 6.5.5 使用“[^]”通配符进行查询...
16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”) 16.3.6 迫切左外连接检索(fetch属性为“join”) 16.4 多对一和一对一关联的检索策略 16.4.1 迫切左外连接检索(fetch...
使用子查询抓取(Using subselect fetching) 19.1.7. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读...
16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”) 16.3.6 迫切左外连接检索(fetch属性为“join”) 16.4 多对一和一对一关联的检索策略 16.4.1 迫切左外连接检索(fetch...
16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”) 16.3.6 迫切左外连接检索(fetch属性为“join”) 16.4 多对一和一对一关联的检索策略 16.4.1 迫切左外连接检索(fetch...
16.3.5 用带子查询的select语句整批量初始化orders集合(fetch属性为“subselect”) 16.3.6 迫切左外连接检索(fetch属性为“join”) 16.4 多对一和一对一关联的检索策略 16.4.1 迫切左外连接检索(fetch...
5. `outer-join`: 控制是否使用外连接进行查询,可能的值有`auto`, `true`, `false`。 6. `update`, `insert`: 分别决定关联字段是否在UPDATE和INSERT语句中包含。设为`false`表示关联值由其他方式提供。 7. `...
16.1.6. 使用子查询抓取(Using subselect fetching) 16.2. 二级缓存(The Second Level Cache) 16.2.1. 缓存映射(Cache mappings) 16.2.2. 策略:只读缓存(Strategy: read only) 16.2.3. 策略:读/写缓存...
16.1.6. 使用子查询抓取(Using subselect fetching) 16.2. 二级缓存(The Second Level Cache) 16.2.1. 缓存映射(Cache mappings) 16.2.2. 策略:只读缓存(Strategy: read only) 16.2.3. 策略:读/写缓存...
19.1.5. 使用子查询抓取(Using subselect fetching) 19.1.6. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略...
使用子查询抓取(Using subselect fetching) 19.1.7. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读...
5. 持久化类(Persistent Classes) 5.1. 一个简单的POJO例子 5.1.1. 为持久化字段声明访问器(accessors)和是否可变的标志(mutators) 5.1.2. 实现一个默认的(即无参数的)构造方法(constructor) 5.1.3. 提供...
使用子查询抓取(Using subselect fetching) 20.1.7. 使用延迟属性抓取(Using lazy property fetching) 20.2. 二级缓存(The Second Level Cache) 20.2.1. 缓存映射(Cache mappings) 20.2.2. 策略:...
使用子查询抓取(Using subselect fetching) 19.1.7. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读...
4. 持久化类(Persistent Classes) 4.1. 一个简单的POJO例子 4.1.1. 实现一个默认的(即无参数的)构造方法(constructor) 4.1.2. 提供一个标识属性(identifier property)(可选) 4.1.3. 使用非final的类 ...
19.1.5. 使用子查询抓取(Using subselect fetching) 19.1.6. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略...
使用子查询抓取(Using subselect fetching) 19.1.7. 使用延迟属性抓取(Using lazy property fetching) 19.2. 二级缓存(The Second Level Cache) 19.2.1. 缓存映射(Cache mappings) 19.2.2. 策略:只读...