在hibernate中使用annotation非常方便我们的web开发.下面对比一下使用annotation和和不使用之间的差别吧.
首先,无论你是否使用annotation,都必须有hibernate的配置文件(hibernate.cfg.xml),这个在hibernate的自带的手册中能找到,这里就不给出了.
其次建立一个名为Student的实体类,如下:
1 public class Student {
2 private int id;
3 private String name;
4 private int age;
5
6 public int getId() {
7 return id;
8 }
9 public void setId(int id) {
10 this.id = id;
11 }
12 public String getName() {
13 return name;
14 }
15 public void setName(String name) {
16 this.name = name;
17 }
18 public int getAge() {
19 return age;
20 }
21 public void setAge(int age) {
22 this.age = age;
23 }
24 }
如果你不使用annotation,那么你就还得写一个Student的xml文件(Student.hbm.xml,一般这个配置文件写在和实体类同一个包中),目的用于和数据库中的表和字段对应.假设数据库中已经建立了一个名为"_student"的表,其字段分别为_id(primary
key),_name,_age;那么这个xml文件就应该写成像下面这个样子:
1 <?xml version="1.0"?>
2 <!DOCTYPE hibernate-mapping PUBLIC
3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
4 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
5
6 <hibernate-mapping package="com.hibernate">
7 <class name="Student" table="_student">
8 <id name="id" colunm="_id"></id>
9 <property name="name" colunm="_name"></property>
10 <property name="age" colunm="_age"></property>
11 </class>
12 </hibernate-mapping>
写好这个配置文件之后,我们就可以写Student的测试类了,具体代码如下:
1 public class studentTest {
2 public static void main(String[] args) {
3
4 Student student = new Student();
5
6 student.setId(1);
7 student.setAge(21);
8 student.setName("Jack");
9
10 Configuration cfg = new Configuration(); //创建一个Configuration对象
11 SessionFactory sf = cfg.configure().buildSessionFactory(); //创建一个SessionFactory
12 Session session = sf.openSession(); //获取Session
13
14 session.beginTransaction();
15 session.save(student);
16 session.getTransaction().commit();
17
18 session.close();
19 sf.close();
20 }
21 }
然后编译运行这个测试类就可以得到如下结果:
这就是没有使用annotation而使用xml文件的方式.和人觉得比较麻烦,所以推荐使用annotation.下面就说说annotation的使用.
同样建立如上的Student的实体类:
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;@Entity
@Table(name="_teacher") //声明与数据库中表明为_teacher的表相对应
public class Teacher {
private int id;
private String name;
private String title;@Id //注解指定主键
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
然后再在hibernate的配置文件中添加下面一行代码:
<mapping class="com.hibernate.Teacher"/>
之后就可以写你的测试类了,如下:
1 import org.hibernate.Session;
2 import org.hibernate.SessionFactory;
3 import org.hibernate.cfg.AnnotationConfiguration;
4 import org.hibernate.cfg.Configuration;
5
6 import com.hibernate.Teacher;
7
8 public class studentTest {
9 public static void main(String[] args) {
10
11 Teacher teacher = new Teacher();
12
13 teacher.setId(1);
14 teacher.setAge(1);
15 teacher.setName("zhou");
16
17 Configuration cfg = new AnnotationConfiguration(); //注意是使用的AnnotationConfiguration
18 SessionFactory sf = cfg.configure().buildSessionFactory();
19 Session session = sf.openSession();
20
21 session.beginTransaction();
22 session.save(teacher);
23 session.getTransaction().commit();
24 session.close();
25 sf.close();
26 }
27 }
运行这个测试类就可以得到类似上面的结果.这就是使用hibernate的两种方式.
hibernate中使用Annotation,布布扣,bubuko.com