Hibernate类级别注解

来源:互联网 发布:桌面 滚动屏软件 编辑:程序博客网 时间:2024/05/17 09:12

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时必须指定实体类的主键属性。
如:
@Entitypublic 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;}@Overridepublic 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();}@Overridepublic 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;}@Idpublic 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;}@Overridepublic String toString() {return "Students [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", major=" + major + "]";}}

运行后生成的表结构

7、schema与catalog


从实现的角度来看,各种数据库系统对Catalog和Schema的支持和实现方式千差万别。



0 0
原创粉丝点击