hibernate中使用Annotation

 在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

时间: 2024-10-10 02:57:12

hibernate中使用Annotation的相关文章

Hibernate中的Annotation注解与XML配置的使用

通过XML配置来实现持久化: 首先我们来建立一个实体类: package com.hibernate.model; public class Student {     private int id;     private String name;     private int age;          public int getId() {         return id;     }     public void setId(int id) {         this.id 

hibernate中增加annotation @后不提示信息【转】

此文转自:http://blog.knowsky.com/252047.htm 所需要用到的3个jar包分别是: hibernate-annotations.jar ejb3-persistence.jar hibernate-commons-annotations.jar jar包导入了. 使用Hibernate的Annotation创建Entity时,敲入@后不提示. 解决方法:Solution1: 用Alt+/提示, Solution2: Window->Preferences->Jav

hibernate中关系映射

在数据库中数据的对应关系有一对一,一对多和多对一.那么在hibernate中应该如何对应呢?如下: 一对一: 假设两个实体,一个实体类为husband,另外一个实体类为wife.一个丈夫只能对应一个妻子,反之亦然.那么在hibernate中使用annotation如下:(husband类) 1 import javax.persistence.Entity; 2 import javax.persistence.GeneratedValue; 3 import javax.persistence

Hibernate中,基于Annotation的简单树形结构的实现

在系统设计中,经常用到递归性质的树形结果,比如菜单.多级分类等,一般是在同一个表中定义父子关系实现这种结构. 下面是在Hibernate中,基于Annotation的简单树形结构的实现: 第一步:创建Entity类,并添加注解实现关联关系    ps: 主要是利用@ManyToOne 和 @OneToMany 配置在同一个Entity类中实现树形递归的结构.hibernate注解形式比在xml配置更加简洁 TreeNode.java 1 package com.hfut.hibernate; 2

Annotation(二)——Hibernate中注解的开发

在利用注解开发数据库持久层以前,需要学习一个规范JPA(Java Persistence API),这也是SUN公司提出的数据库的持久化规范.就类似于JDBC,Servlet,JSP等规范一样.而Hibernate框架就实现了此规范,我们可以通过注解和配置文件来实现此规范.前边的学习都是建立在配置文件的基础上,而注解开发现在也处于一种趋势,毕竟它大大提高了开发速度. 看一下注解在Hibernate框架中的开发知识. 一,首先需要导入支持注解开发的jar包: hibernate-annotatio

Hibernate or JPA Annotation中BLOB、CLOB注解写法

BLOB和CLOB都是大字段类型,BLOB是按二进制字节码来存储的.而CLOB是能够直接存储字符串的. 在hibernate or JPA Annotation中.实体BLOB.CLOB类型的注解与普通的实体属性有些不同,详细操作例如以下: BLOB类型,类型声明为byte[]: private byte[] content; 注解: @Lob @Basic(fetch = FetchType.LAZY) @Column(name = "CONTENT", columnDefiniti

Hibernate中注解的开发

在利用注解开发数据库持久层曾经,须要学习一个规范JPA(Java Persistence API),这也是SUN公司提出的数据库的持久化规范. 就类似于JDBC.Servlet,JSP等规范一样.而Hibernate框架就实现了此规范,我们能够通过注解和配置文件来实现此规范.前边的学习都是建立在配置文件的基础上,而注解开发如今也处于一种趋势.毕竟它大大提高了开发速度. 看一下注解在Hibernate框架中的开发知识. 一.首先须要导入支持注解开发的jar包: hibernate-annotati

hibernate中的缓存机制

一.为什么要用Hibernate缓存? Hibernate是一个持久层框架,经常访问物理数据库. 为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能. 缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据. 二.Hibernate缓存原理是怎样的?Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存. 1.Hibernate一级缓存又称为“Session的缓存”. Sessio

hibernate中的组件映射

组件映射 1 项目:hibernate_1100_component 2 对象关系:一个对象是另外一个对象的一部分 3 数据库表:一张表 4 annotation: @ Embeddable @Embbeded 对象模型 Husband(id,name,wife) Wife(name,age) Annotation: 在Husband的wife属性上建立注解 @Embedded 表明该对象是从别的位置嵌入过来的,是不需要单独映射的表. 这种方式生成的表为husband(id,name,wifen