Hibernate-Annotation(上)

简介: Hibernate-Annotation

使用hibernate注解的目的


为了简化ORM映射文件(*.hbm)繁琐的配置。

注解需要做的是映射文件要做的。


JPA与Hibernate


Java Persistence API

Java持久化接口

JPA是标准接口,HIbernate是JPA的实现,但是功能是JAP的超集。


Hibernate注解分类

  1. 类级别注解
  1. @Entity
  2. @Table
  3. @Embeddable(嵌入类)
  1. 属性级别注解
  2. 映射关系注解


一,类级别注解



1.   @Entity


image.png


1.  编写Entity


设置主键,打在getter上@Id


2.  class添加注解@Entity

3.  在核心配置文件中配置

<!--映射文件-->
        <mapping class="Entity.Student"/>

2.   @Table


image.png

@Tabel(name="")和@Entity(name="")


@Table's name attribute is the actual table name. @Entitiy's name is useful if you have two @Entity classes with the same name and you need a way to differentiate them when running queries.

From Stack Overflow


3.   @Embeddable


表示一个非Entity类可以嵌套到另一个Entity中,作为另一个Entity的属性。

package Entity;
import javax.persistence.Embeddable;
/**
 * Created by futao on 2017/9/27.
 */
/**
 * 嵌入类,不会生成表,可能在其他表作为属性存在
 */
@Embeddable
public class Gf {
    private String name;
    private int age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

package Entity;
/**
 * Created by futao on 2017/9/26.
 */
import javax.persistence.Column;
import javax.persistence.Entity;    //JPA注解
import javax.persistence.Id;
import javax.persistence.Table;
import java.sql.Timestamp;
/**
 * 学生实体类
 */
@Entity
@Table(name = "imooc_student1")
public class Student {
    /**
     * 主键
     */
    @Column(name = "sid")
    private int sid;
    /**
     * 姓名
     */
    @Column(name = "sname")
    private String sname;
    /**
     * 性别
     */
    @Column(name = "gender")
    private String gender;
    /**
     * 生日
     */
    @Column(name = "birthday")
    private Timestamp birthday;
    /**
     * 专业
     */
    @Column(name = "major")
    private String major;
    /**
     * 地址
     */
    private String address;
    //组件属性
    private Gf gf;
    @Id
    public int getSid() {
        return sid;
    }
    public void setSid(int sid) {
        this.sid = sid;
    }
    public Gf getGf() {
        return gf;
    }
    public void setGf(Gf gf) {
        this.gf = gf;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public Timestamp getBirthday() {
        return birthday;
    }
    public void setBirthday(Timestamp birthday) {
        this.birthday = birthday;
    }
    public String getMajor() {
        return major;
    }
    public void setMajor(String major) {
        this.major = major;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}


二,属性级别注解



添加方式

1.写在属性字段上面

2.写在getter上面


@Id

@SequenceGenerator

@GeneratedValue

@Column

@Embedded

@EmbeddedId

@Lob

@Version

@Basic

@Transient


1.  @Id


image.png

可以给一个Entity设置两个主键,不过要实现Serializable接口


2. @GeneratedValue


image.png

image.png


3. @GeneratedValue

4. @Column


image.png


5. @Embedded,@EmbeddedId


打在被标记为@Embeddable的嵌入类的实例上,或者getter上


image.png

6. @Transient


image.png


相关文章
|
8月前
|
SQL 人工智能 安全
当 MCP 遇上 Serverless,AI 时代的最佳搭档
随着 AI 技术的飞速发展,MCP(模型上下文协议) 逐渐崭露头角。这项由 Anthropic 公司(Claude 的创造者)于 2024 年 11 月推出的开放协议,正在重新定义 AI 与数字世界的交互方式。这项开放协议不仅让 AI 突破传统对话边界,更赋予其执行现实任务的能力,堪称人工智能向"行动智能体"进化的里程碑。然而从火热概念到落地业务,MCP 还需要找到云端“好搭档”。
5140 77
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
284 2
|
存储 自然语言处理 C#
SemanticKernel/C#:检索增强生成(RAG)简易实践
SemanticKernel/C#:检索增强生成(RAG)简易实践
366 0
|
SQL 缓存 关系型数据库
故障案例:MySQL唯一索引有重复值,官方却说This is not a bug
故障案例:MySQL唯一索引有重复值,官方却说This is not a bug
461 0
|
网络协议 Cloud Native 关系型数据库
【云原生 | 从零开始学Docker】六、如何写出自己的镜像——Docker file
在上一篇文章中其实有一个点我没有说,那就是如何实现两个或者多个容器之间数据共享。
464 0
【云原生 | 从零开始学Docker】六、如何写出自己的镜像——Docker file
|
Java 应用服务中间件 数据格式
Tomcat 核心源码解析 及 仿写
介绍Tomcat的核心功能原理,并仿写Tomcat核心功能源码 包括: 1、如何生成Servlet实例对象并管理 2、如何与浏览器建立连接并获取http报文,解析报文获取请求,并响应 最后有效果演示和源码gitee地址
306 0
|
JavaScript 前端开发 uml
《MarkDown编辑器的使用技巧(修改录入方式与目录生成)|CSDN编辑器测评》
《MarkDown编辑器的使用技巧(修改录入方式与目录生成)|CSDN编辑器测评》
468 0
《MarkDown编辑器的使用技巧(修改录入方式与目录生成)|CSDN编辑器测评》
|
存储 SQL 分布式计算
大数据技术生态,不懂你捶我
一文了解大数据技术生态。
大数据技术生态,不懂你捶我
|
弹性计算
阿里云服务器根据按月按年和按型号怎么收费-----详细讲解
很多人在购买阿里云服务器的时候,会发现阿里云服务器存在几种付费方式,付费方式包括按量计费、包年包月等,不同的计费方式对应的ECS实例有不同的功能,理清楚这几个概念,才能选择最合适的付费方式
阿里云服务器根据按月按年和按型号怎么收费-----详细讲解