版权声明:知识本无差别,何必在意你我? https://blog.csdn.net/qq_33774822/article/details/62048408
在之前的开发过程中,都是使用xml配置文件来完成表之间的映射关系的,但是从现在开始,我们要使用hibernate的注解开发来完成这一效果。
JPA:全称为Java Persistence API,是JavaEE的规范和标准。
JPA是标准接口,hibernate是其实现,但是hibernate得功能是JPA的超集。
hibernate是如何实现与JPA的关系的尼?
通过hibernate-annotation,hibernate-entitymanager和hibernate-core三个组件来实现的。
hibernate注解的分类:
1.类级别注解:@Entity(表示实体类),@Table(表示数据库中的表名),@ Embeddable(表示是一个嵌入类)
2.属性级别注解
3.映射关系注解
hibernate的配置文件:(hibernate.cfg.xml)
三个重要的类级别注解:
1.@Entity:映射实体类
2.@Table:映射到数据库的名字,以及里面具体的表名
3.@Embeddable:表示其并不会生成具体的类,只是作为其一个属性
Students.java文件:(注意第12,13,42行)
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @author chenchen
* @Entity:实体类 @Table:对应的表的相关信息
*name:对应到数据库中的表名字,schema:数据库的名称
*/
@Entity
@Table(name = "t_students",schema="school")
public class Students {
private int sid;//学号
private String sname;//姓名
private String gender;//性别
private Date birthday;//生日
private String major;//专业
private Address address;//地址
//无参构造
public Students() {
super();
}
//有参构造
public Students(int sid, String sname, String gender, Date birthday, String major, Address address) {
this.sid = sid;
this.sname = sname;
this.gender = gender;
this.birthday = birthday;
this.major = major;
this.address = address;
}
//setter和getter方法
/**
* @return Returns the sid.
*设置其主键,一定要设置
*/
@Id
public int getSid() {
return sid;
}
/**
* @param sid The sid to set.
*/
public void setSid(int sid) {
this.sid = sid;
}
/**
* @return Returns the sname.
*/
public String getSname() {
return sname;
}
/**
* @param sname The sname to set.
*/
public void setSname(String sname) {
this.sname = sname;
}
/**
* @return Returns the gender.
*/
public String getGender() {
return gender;
}
/**
* @param gender The gender to set.
*/
public void setGender(String gender) {
this.gender = gender;
}
/**
* @return Returns the birthday.
*/
public Date getBirthday() {
return birthday;
}
/**
* @param birthday The birthday to set.
*/
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
/**
* @return Returns the major.
*/
public String getMajor() {
return major;
}
/**
* @param major The major to set.
*/
public void setMajor(String major) {
this.major = major;
}
/**
* @return Returns the address.
*/
public Address getAddress() {
return address;
}
/**
* @param address The address to set.
*/
public void setAddress(Address address) {
this.address = address;
}
}
Address.java文件: (注意第6行)
import javax.persistence.Embeddable;
/**
* 他本身并不会映射为一张表,只是嵌入类,只是在另一个类中充当一个属性
*/
@Embeddable
public class Address {
private String postCode;//邮编
private String address;//地址
private String phone;//联系电话
public Address(){
}
/**
* @return Returns the postCode.
*/
public String getPostCode() {
return postCode;
}
/**
* @param postCode The postCode to set.
*/
public void setPostCode(String postCode) {
this.postCode = postCode;
}
/**
* @return Returns the address.
*/
public String getAddress() {
return address;
}
/**
* @param address The address to set.
*/
public void setAddress(String address) {
this.address = address;
}
/**
* @return Returns the phone.
*/
public String getPhone() {
return phone;
}
/**
* @param phone The phone to set.
*/
public void setPhone(String phone) {
this.phone = phone;
}
}