Hibernate:注释配置hibernate的持久化类

目录

一、简单的案例

数据库结构:

 Costumer配置

 Newspaper配置

 Purchase配置

二、@Entity注释

三、@Table注释

四、@Id注释

五、@Column注释

六、@ManyToOne注释

七、@JoinColumn注释


一、简单的案例

数据库结构:

        顾客表costumer:

          主键:costumer_id

          非主属性:name、sex

        报纸表newspaper:

          主键:newspaper_id

          非主属性:name、price、volume

        购买表purchase:

          主键:purchase_time

          外键:newspaper_id、costumer_id、

          非主属性:newspaper_id、costumer_id、purchase_amount

 Costumer配置

package com.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "costumer")
public class Costumer {
    @Id
    @Column(name = "costumer_id", nullable = false)
    private Integer id;

    @Column(name = "name", length = 45)
    private String name;

    @Column(name = "sex", length = 45)
    private String sex;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

}

 Newspaper配置

package com.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.math.BigDecimal;

@Entity
@Table(name = "newspapers")
public class Newspaper {
    @Id
    @Column(name = "newspaper_id", nullable = false)
    private Integer id;

    @Column(name = "name", length = 45)
    private String name;

    @Column(name = "price", precision = 10, scale = 2)
    private BigDecimal price;

    @Column(name = "volume", nullable = false)
    private Integer volume;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public Integer getVolume() {
        return volume;
    }

    public void setVolume(Integer volume) {
        this.volume = volume;
    }

}

 Purchase配置

package com.model;

import javax.persistence.*;
import java.time.Instant;

@Entity
@Table(name = "purchase")
public class Purchase {
    @Id
    @Column(name = "purchase_time", nullable = false)
    private Instant id;

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "newspaper_id", nullable = false)
    private Newspaper newspaper;

    @ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "costumer_id", nullable = false)
    private Costumer costumer;

    @Column(name = "purchase_amount")
    private Integer purchaseAmount;

    public Instant getId() {
        return id;
    }

    public void setId(Instant id) {
        this.id = id;
    }

    public Newspaper getNewspaper() {
        return newspaper;
    }

    public void setNewspaper(Newspaper newspaper) {
        this.newspaper = newspaper;
    }

    public Costumer getCostumer() {
        return costumer;
    }

    public void setCostumer(Costumer costumer) {
        this.costumer = costumer;
    }

    public Integer getPurchaseAmount() {
        return purchaseAmount;
    }

    public void setPurchaseAmount(Integer purchaseAmount) {
        this.purchaseAmount = purchaseAmount;
    }

}

二、@Entity注释

@Entity注解来这标志着这个类作为一个实体类,使用这个注释需要导入javax.persistence包

三、@Table注释

@Table注释是用于指定实体类所映射的数据库的具体表等信息。

@Table注释提供的四个属性包括:

        1. name:用于指定表的名称。
        2. catalog:用于指定表所属的目录。
        3. schema:用于指定表所属的架构。
        4. uniqueConstraints:用于执行对列的唯一约束在表中。

四、@Id注释

@Id注释用于指定一个表的主键

五、@Column注释

@Column注释用于指定的列到一个字段或属性将被映射的细节。

@Column注释可以使用以下最常用的属性:

        1.name属性允许将显式指定列的名称。

        2.length 属性允许用于映射一个value尤其是对一个字符串值的列的大小。

        3.nullable 属性允许该列被标记为NOT NULL生成架构时。

        4.unique 属性允许被标记为只包含唯一值的列。

六、@ManyToOne注释

@ManyToOne注解表示该属性是多对一关系。

@ManyToOne注解提供的属性:

        1.fetch = FetchType.LAZY表示在访问该属性时使用延迟加载策略。

        2.optional = false表示该属性是必需的,不允许为空。

七、@JoinColumn注释

@JoinColumn注解用来指定在数据库中用于关联的外键列。

@JoinColumn注解以下最常用的属性:       

        1.name属性允许将显式指定列的名称。   

        2.nullable 属性允许该列被标记为NOT NULL生成架构时。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值