Hibernate教程 class2
2015-10-30 16:12
375 查看
通过上次的教程我们已经初步认识了Hibernate,也学会了用xml文件配置表和java类的联系。
但是同学们有没有发现这样做会比较麻烦。。。。。
配置数据库table和java类的关联 有两种方法 其中就是xml方式,我们上次已经实现了,现在我给大家介绍一下注解版的配置。这种方法也是我平时比较常用的。。。
接着上一节讲,我们为了方便建了一个Hibernate的util类,这个类的目地就是获取Hibernate的sessionFactory
然后我们新建的一个Teacher的model类
@后面的就是注解
@Entity 表示这个类是实体类
@Table(name="t_teacher") 表示对应关系,对应数据库的t_teacher表
@Id
@GeneratedValue(generator="_native")
@GenericGenerator(name="_native",strategy="native")这段注释表示id是数据库table中的主键,他的生成策略是数据库的native,也就是自动自增。。最后在hibernate.cfg.xml里加上
<mapping class="com.wyy.model.Teacher"/>
这样我们就把数据库的表和实体类关联起来了。我们可以测试一下,测试一下增删改查。我们写一个测试类
在Hibernate中对数据库的操作需要用session来完成。
session.createQuery(hql):利用hql查询语句查询;
这样我们就实现了Hibernate注解版的增删改查。最后说一句,如果数据库中没有t_teacher表的话,Hibernate会自动给我们建t_teacher表
但是同学们有没有发现这样做会比较麻烦。。。。。
配置数据库table和java类的关联 有两种方法 其中就是xml方式,我们上次已经实现了,现在我给大家介绍一下注解版的配置。这种方法也是我平时比较常用的。。。
接着上一节讲,我们为了方便建了一个Hibernate的util类,这个类的目地就是获取Hibernate的sessionFactory
package com.wyy.util; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; public class HibernateUtil { private static final SessionFactory sessionFactory=buildSessionFactory(); private static SessionFactory buildSessionFactory(){ Configuration configuration=new Configuration().configure(); // 实例化配置文件 ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); // 实例化服务登记 return configuration.buildSessionFactory(serviceRegistry); // 获取Session工厂 } public static SessionFactory getSessionFactory(){ return sessionFactory; } }
然后我们新建的一个Teacher的model类
package com.wyy.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name="t_teacher") public class Teacher { private long id; private String name; @Id @GeneratedValue(generator="_native") @GenericGenerator(name="_native",strategy="native") public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Teacher [id=" + id + ", name=" + name + "]"; } }
@后面的就是注解
@Entity 表示这个类是实体类
@Table(name="t_teacher") 表示对应关系,对应数据库的t_teacher表
@Id
@GeneratedValue(generator="_native")
@GenericGenerator(name="_native",strategy="native")这段注释表示id是数据库table中的主键,他的生成策略是数据库的native,也就是自动自增。。最后在hibernate.cfg.xml里加上
<mapping class="com.wyy.model.Teacher"/>
这样我们就把数据库的表和实体类关联起来了。我们可以测试一下,测试一下增删改查。我们写一个测试类
package com.wyy.service; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import com.wyy.model.Teacher; import com.wyy.util.HibernateUtil; public class TeacherTest { private SessionFactory sessionFactory=HibernateUtil.getSessionFactory(); public void add(){ Session session=sessionFactory.openSession(); // 生成一个session session.beginTransaction(); // 开启事务 Teacher s=new Teacher(); s.setName("张三"); session.save(s); session.getTransaction().commit(); // 提交事务 session.close(); // 关闭session } public void delete(){ Session session=sessionFactory.openSession(); // 生成一个session session.beginTransaction(); // 开启事务 Teacher Teacher=(Teacher)session.get(Teacher.class, Long.valueOf(1)); session.delete(Teacher); session.getTransaction().commit(); // 提交事务 session.close(); // 关闭session } public void update(){ Session session=sessionFactory.openSession(); // 生成一个session session.beginTransaction(); // 开启事务 Teacher Teacher=(Teacher)session.get(Teacher.class, Long.valueOf(2)); Teacher.setName("张三2"); session.save(Teacher); session.getTransaction().commit(); // 提交事务 session.close(); // 关闭session } public void getAllTeacher(){ Session session=sessionFactory.openSession(); // 生成一个session session.beginTransaction(); // 开启事务 String hql="from Teacher"; Query query=session.createQuery(hql); List<Teacher> TeacherList=query.list(); for(Teacher Teacher:TeacherList){ System.out.println(Teacher); } session.getTransaction().commit(); // 提交事务 session.close(); // 关闭session } public static void main(String[] args) { TeacherTest TeacherTest=new TeacherTest(); // TeacherTest.add(); // TeacherTest.delete(); // TeacherTest.update(); TeacherTest.getAllTeacher(); } }
在Hibernate中对数据库的操作需要用session来完成。
session.createQuery(hql):利用hql查询语句查询;
这样我们就实现了Hibernate注解版的增删改查。最后说一句,如果数据库中没有t_teacher表的话,Hibernate会自动给我们建t_teacher表
相关文章推荐
- CSS定位属性之间的相互作用
- svn: The log message is a pathname (was -F intended?)
- django 注册、登录及第三方接口程序(1):基础知识
- java1.8--Null Object模式
- JSP EL表达式 param、paramValues的使用
- 一份标准的HTML文档必须有的HTML标签
- 第十一课 for循环(3)---循环变量的变化
- 第11章 对话框
- 调试 vs2010 assert()断言对话框的使用
- 栈的应用之表达式求值(算符优先法)
- java调用批处理(doc)执行多条命令
- uploadify+jcrop实现头像上传裁剪功能
- 堆
- 第20章 多任务和多线程
- PL/SQL下载安装
- 《java8函数式编程》——使用函数式编程重构代码
- 第一天
- ios动画
- <iOS>系统提供的dispatch方法
- 二分查找