注解式开发-Hibernate基本注解
基本概念
在Hibernate中使用注解,主要是为了替代映射文件,完成“类到表,属性到字段”的映射
在jdk1.5版本后,JPA提供了一套功能强大的注解。Hibernate直接使用的JPA这套注解,虽然Hibernate在JPA的基础上开发了自己的注解,但我这里使用的注解,基本是javax.persistence,Transient包只能怪的。
注意事项
使用时应该注意一下几点:
(1)、使用均javax.persistence,Transient包中的注解
(2)、在Hibernate主配置文件中无需指定映射文件了,但需要指定注解的实体类。
基本注解的实例
有一个实体类(Student),包含字段id、name、age、score。
package com.hibernate.beans; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import javax.persistence.Transient; @Entity //说明为一个实体 @Table(name="t_student") //类到表(不做配置默认表名与类名相同) public class Student { @Id //说明它是主键 @GeneratedValue(strategy=GenerationType.IDENTITY) //指定生成策略(我这里选择的是自增长) @Column(name="t_id") //属性对应字段名 private Integer id; @Basic //表示当前属性将被持久化到数据库(不做配置默认就是持久化到数据库) @Column(name="t_name") //属性对应字段名(不做配置默认字段名与属性名相同) private String name; @Basic @Column(name="t_age") private int age; @Transient //定义暂态属性,意思是这个字段不持久化到数据库 private double score; public Student() { super(); } public Student(String name, int age) { super(); this.name = name; this.age = age; } public Integer getId() { return id; } public Student(String name, int age, double score) { super(); this.name = name; this.age = age; this.score = score; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", age=" + age + ", score=" + score + "]"; } public void setId(Integer id) { this.id = id; } 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; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } }
关于ID的注解还有很多需要注意的地方请参考:Hibernate注解开发关于Id的若干问题