annotation @符号加后面一个名字
使用annotation需要的包3个:
hibernate annnotation.jar
ejb3 oersistence.jar
hibernate common annotation.jar
JPA是标准,hibernate是实现
建实体类Teacher.java,使用注解表明实体,主键。
package hjj.lch.hibernate.model; import javax.persistence.Entity; import javax.persistence.Id; @Entity 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; } }
建表teacher
在hibernate.cfg.xml文件中加入
<mapping class="hjj.lch.hibernate.model.Teacher"/>
hibernate 的xml和annotation是不是不能同时使用?
不能!!!!也就是
<mapping resource="hjj/lch/hibernate/model/Student.hbm.xml"/>
<mapping class="hjj.lch.hibernate.model.Teacher"/>
<mapping class="hjj.lch.hibernate.model.Teacher"/>
不能共存,否则xml就用不了。。
再写测试类TeacherTest.java
package hjj.lch.hibernate.model; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; import org.hibernate.cfg.Configuration; public class TeacherTest { public static void main(String[] args) { Teacher t = new Teacher(); // 创建student对象 t.setId(1); t.setName("t1"); t.setTitle("中级"); // 解析hibernate.cfg.xml,拿到session // 使用Annotation时,不能new 普通的Configuration,要new一个专门的AnnotationConfiguration Configuration cfg = new AnnotationConfiguration(); // 用于解析hibernate.cfg.xml SessionFactory sf = cfg.configure().buildSessionFactory(); // 产生session工厂,可以想象成数据库的connection Session session = sf.openSession(); session.beginTransaction(); session.save(t); session.getTransaction().commit(); session.close(); sf.close(); } }
运行结果: