了解了上01中采取映射xml的方式,通过hibernate保存数据的方法
接下来进一步尝试使用Annotation注解的方式来保存数据。
OK,需要加入JAR包:
建立Teacher.java类
/**
*
*/
package com.zeke.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* @author zhong
*
*/
@Entity
@Table(name="TEACHERS")
public class Teacher {
@Id
@Column(name="ID_")
private int id;
@Column(name="NAME_")
private String name;
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;
}
}
注意这里使用了
@entity,实体类注解
@table , 定义表名的注解
@column, 定义字段名的注解
在hibernate.cfg.xml中添加映射,注意配置方式与xml有所不同。
<!-- 注解形式的映射关系配置 -->
<mapping class="com.zeke.model.Teacher" />
哪里不同呢?
我们发现,xml mapping 中使用resource来指定。而注释的方式是指定的class。
创建一个TeacherTest.java测试类,此处获取configuration也是不一样的
看代码:
/**
*
*/
package com.zeke.test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;
import com.zeke.model.Teacher;
/**
* @author zhong
*
*/
@SuppressWarnings("deprecation")
public class TeacherTest {
public static void main(String[] args) {
Teacher t = new Teacher();
t.setId(1);
t.setName("zeke");
Configuration cfg = new AnnotationConfiguration();
SessionFactory sf = cfg.configure().buildSessionFactory();
Session session = sf.openSession();
//事务开始
session.beginTransaction();
session.save(t);
//提交事务
session.getTransaction().commit();
//关闭session
session.close();
sf.close();
}
}
看到了吗,以下方式不一样吧。
Configuration cfg = new AnnotationConfiguration();
Ok,测试完成!