Hibernate类级别注解

    xiaoxiao2021-03-26  22

    1、Hibernate注解简介

    使用注解的目的:为了简化繁琐的ORM映射文件(*.hbm)的配置

    2、JPA与Hibernate的关系

    什么是JPA? 全称Java Persistence API JPA注解是JAVAEE的规范和标准 JPA与Hibernate的关系:JPA是标准接口,Hibernate是实现,但是其功能是JPA的超集。 Hibernate如何实现与JPA的关系? 通过hibernate-annotation、hibernate-entitymannager和hibernate-core三个组件来实现。 一般在实际开发中,优先考虑使用JPA注解,这样更有利于程序的移植和扩展。

    3、Hibernate注解分类

    1、类级别的注解 @Entity 、@Table、@Embeddable   2、属性级别的注解   3、映射关系注解

    4、@Entity

    @Entity:映射实体类   @Entity(name="tableName") name:可选,对应数据库中的一个表。若表名与实体类名相同,则可以省略。 注意:使用@Entity时必须指定实体类的主键属性。 如: @Entity public class Students { private int sid; //学号 private String sname;//姓名 private String gender;//性别 private String major;//专业 public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } 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 String getMajor() { return major; } public void setMajor(String major) { this.major = major; } public Students() { super(); } public Students(int sid, String sname, String gender, String major) { this.sid = sid; this.sname = sname; this.gender = gender; this.major = major; } @Override public String toString() { return "Students [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", major=" + major + "]"; } } 最后测试出现如下错误: 为解决这个问题我们在students类中的getId上添加@Id表示是主键再进行测试,测试通过

    5、@Table

    @Table(name="",catalog="",schema="")  @Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息。 name:可选,映射表的名称,默认表名和实体名称一致,只有在不一致的情况下才需要表名。 catalog :可选,表示Catalog(目录)名称,默认为Catalog("")。 schema:可选,表示Schema(模式)名称,默认为Schema("")。

    6、@Embeddable

    @Embeddable表示一个非Entity类可以嵌入到另一个Entity类中作为属性而存在。如: package com.txr.entity; import javax.persistence.Embeddable; //地址类 @Embeddable //表示是一个嵌入类,这个类的对象在另一个实体类中充当属性 public class Address { private String postCode;//邮编 private String address;//地址 private String phone;//联系电话 public String getPostCode() { return postCode; } public void setPostCode(String postCode) { this.postCode = postCode; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public Address(String postCode, String address, String phone) { this.postCode = postCode; this.address = address; this.phone = phone; } public Address() { super(); } @Override public String toString() { return "Address [postCode=" + postCode + ", address=" + address + ", phone=" + phone + "]"; } } package com.txr.entity; import javax.persistence.Entity;//JPA注解 import javax.persistence.Id; import javax.persistence.Table; //学生实体类 @Entity @Table(name="t_students",schema="hibernate") public class Students { private int sid; //学号 private String sname;//姓名 private String gender;//性别 private String major;//专业 private Address address;//地址 public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } @Id public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } 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 String getMajor() { return major; } public void setMajor(String major) { this.major = major; } public Students() { super(); } public Students(int sid, String sname, String gender, String major,Address add) { this.sid = sid; this.sname = sname; this.gender = gender; this.major = major; this.address=add; } @Override public String toString() { return "Students [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", major=" + major + "]"; } } 运行后生成的表结构

    7、schema与catalog

    从实现的角度来看,各种数据库系统对Catalog和Schema的支持和实现方式千差万别。
    转载请注明原文地址: https://ju.6miu.com/read-659202.html

    最新回复(0)