hibernate类与映射文件

constrained:one-to-one的单向关联中,如果constrained=false,则会在查询时就全部取出来,用left outer join的方式。如果constrained=true,hibernate即会延迟加载sql,只把主表的查出来,等有用到关联表的再发sql取。

access:默认使用property,即使用get/set 方法访问属性;field,即绕过get/set方法,直接使用反射访问字段属性;

cascade:级联操作,虽然是save-update ,但是作用仅仅是多调一次update 方法更新一下外键。所以每个对象都是要用save 保存一遍的

fetch:集合检索策略,

fetch.1.默认是“select”,通过正常的方式来初始化 set 元素

fetch.2.取值为 “subselect”(决定查询语句的形式)。通过子查询的方式来初始化所有的set 集合 (查询语句是 where 子查询句子的 in 的条件出现,此时 lazy 有效,但是 batch-size 无效,因为已经查询所有 set 集合了)

fetch.3. 取值为 “join”(决定集合初始化的时机)。在加载1 这一端时,使用迫切做外连接的方式检索集合属性,lazy 属性无效。用 HQL 查询的话,忽略此处 fetch = join 的取值

order-by : 按照多这一端的某个字段进行排序

batch-size : <class><set> 两个元素都能设置,用来为延迟检索策略或者立即检索策略设定的批量检索数量(实际上查出来的是代理对象)。能够减少 SELECT 语句的数目,提高检索的运行性能。例如batch-size=5:执行的sql 语句:select * from orders where customer_id in (1,2,3,4,5) 

inverse:放弃维护关联关系

component:

public class Worker {

private Integer id;
private String name;
private Pay pay;

输入图片说明

public class Pay {

    private int monthlyPay;
    private int yearPay;
    private int vocationWithPay;

多对一:

public class Customer {
   private Integer id;
   private String customerName;

输入图片说明

public class Nrder {

    private Integer id;
    private String nrderName;
    private Customer customer;

输入图片说明

也可以这样写多对一(此处针对<set> 多配置了几个属性)

public class Customer {
   private Integer id;
   private String customerName;
   private Set<Nrder> nrders = new HashSet();

public class Nrder {
    private Integer id;
    private String nrderName;

双向多对一 key标签是指当前映射文件类的主键:

public class Customer {

    private Integer id;
    private String customerName;

    private Set<Nrder> nrders = new HashSet();

输入图片说明

public class Nrder {

    private Integer id;
    private String nrderName;
    private Customer customer;

输入图片说明

一对一(外键映射):

public class Department {

    private Integer depId;
    private String departName;
    private Manager manager;

输入图片说明

public class Manager {
    private Integer mgrId;
    private String mgrName;
    private Integer age;
    private Department department;

输入图片说明

一对一(主键映射):实体类同上

输入图片说明

输入图片说明

多对多:

public class Category {

    private Integer id;
    private String name;

    private Set<Item> items = new HashSet<>();

输入图片说明

public class Item {

    private Integer id;
    private String name;

输入图片说明

双向多对多:(必须有一方放弃关联)

public class Category {

    private Integer id;
    private String name;

    private Set<Item> items = new HashSet<>();

输入图片说明

public class Item {

    private Integer id;
    private String name;
    Set<Category> categories = new HashSet<>();

输入图片说明

继承:(subclass,父类子类共用一张表)

    public class Goods {

    private Integer id;
    private String name;
    private String weigh;

输入图片说明

public class Apple extends Goods{

    private String season;

继承:(joined_subclass,每个子类一张表,只有独有的column)实体类同上

输入图片说明

继承:(union_subclass,每个子类一张表,有父类的column)实体类同上

输入图片说明

转载于:https://my.oschina.net/u/3780366/blog/1806033

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值