hibernate中使用Annotation
时间:2014-05-05 23:15:49
收藏:0
阅读:443
在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的两种方式.
评论(0)