初步认识hibernate-----第二篇
来源:互联网 发布:虚荣 vgpro数据不准 编辑:程序博客网 时间:2024/06/11 01:12
hibernate 运行流程分析:
第一步:Configurationconfiguration = new Configuration();
第二步:{hibernate.cfg.xml 1、描述数据库的链接的信息 2、加载映射文件*.hbm.xml} →configuration.configure();
第三步:sessionFactory = configuration.buildSessionFactory();
{1、hibernate把数据库的链接信息、把映射文件的信息、持久化类的信息
2、sessionFactory是由单例模式产生的
3、一般情况下一个hibernate应该有一个数据库链接
4、该类本身是线程安全的
5、是一个重量级类}
第四步:sessionFactory.openSession();
打开了一个数据库的链接,准备进行数据库的操作
用session进行查询
增删改查开启事务
session.beginTransaction();
进行cud的操作
……
提交事务,关闭session
session.close();
注意事项:
1、一个类是否是持久化类
1、加载配置文件
2、在配置文件中加载映射文件
3、解析映射文件中class元素的name属性,找到对应的类
2、在客户端的参数的类必须是持久化类
一般的错误已经分析:
①找不到持久化,意味着在映射文件中根本没有配置该类
③在映射文件中class元素中的name属性的值写错了
④没有构造函数
利用session.get方法产生一个对象,调用的是默认的构造函数,所以一个持久化类中必须有一个默认的构造函数
⑤数据库中没有记录
⑥
public void testQueryPerson(){Session session = sessionFactory.openSession();List<Person> personList = session.createQuery("from Person").list();for(Person person:personList){System.out.println(person.getPname());}session.close();}public void testQueryPersonByID(){Session session = sessionFactory.openSession();/** * 按照主键的方式查询数据库表中的记录 * 第二个参数的类型必须和持久化中标示符的类型保持一致 */Person person = (Person)session.get(Person.class, 1L);System.out.println(person.getPname());session.close();}/** * hibernate内部会检查标示符,看标示符中的值在数据库相应的表中有没有对应的记录,如果有,则删除 */@Testpublic void testDeletePerson(){Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();/** * 1、根据id把值从数据库中查找出来 * 2、把对象删除掉 */Person person = (Person)session.get(Person.class, 1L);session.delete(person);/** * 1、新创建一个person对象 * 2、给person对象的标示符赋值 * 3、调用session.delete方法删除 *///Person person = new Person();//person.setPid(2L);//session.delete(person);transaction.commit();session.close();}@Testpublic void testUpdatePerson(){Session session = sessionFactory.openSession();Transaction transaction = session.beginTransaction();/** * 1、根据id把持久化对象提取出来 * 2、进行修改 * 3、执行upate操作 */Person person = (Person)session.get(Person.class, 1L);person.setPsex("不详");session.update(person);transaction.commit();session.close();}
- 初步认识hibernate-----第二篇
- Hibernate框架初步认识
- Hibernate的初步认识
- hibernate初步认识
- hibernate——初步认识
- 初步认识hibernate--第一篇
- Hibernate——初步认识
- Hibernate学习笔记<一> 初步认识Hibernate
- 第二课 初步认识51芯片
- 第二章 C++的初步认识作业
- JAVA-初步认识-第二章-变量
- JAVA-初步认识-第二章-变量续
- <Unity3D>Unity3D入门篇——第二讲 初步认识Unity
- <Unity3D>Unity3D入门篇——第二讲 初步认识Unity
- 认识JVM--第二篇
- 第二周1天13章多线程的初步认识
- JAVA-初步认识-第二章-变量的基本演示
- JAVA-初步认识-第二章-字符类型的运算
- python中if __name__ == '__main__': 的解析
- 【分享】通过Excel生成批量SQL语句,处理大量数据的好办法
- ACM Problem E
- 关于大量用户并发访问解决办法
- 重温javascript---方法(array)
- 初步认识hibernate-----第二篇
- OC构造方法的使用
- spider for doubantop250 -- scrapy框架
- 解决httpclient返回中文有部分乱码的情况
- C++某些函数的介绍
- Linux进程间共享内存机制
- ViewPager子页面的点击事件监听
- 每周数据结构【3】:设计一个非递归的算法求二叉树高度
- 短网址服务系统 设计