使用hibernate开发步骤
配饰hibernate文件,配置的标签为<hibernate-mapping> <property>,配置内容主要为:数据库连接配置,hibernate信息配置,执行sql配置;简易开发步骤1.用Configuration 解析配置文件,2.创建SessionFactory,使用SessionFactory 获取到Session,3.创建事物,4.执行crud操作;5.关闭session,关闭sessionFactory,
hibernate 核心配置文件注意要点:
1.配置信息全部写在<hibernate-configuration><session-factory>;
2.数据库信息一定要配置,hibernate信息可选,映射信息一定要配置;
3.配置位置一定在src下,配置文件名称一定是hibernate.cfg.xml
重点接口为SessionFactory,用Configuration 加载配置文件hibernate.cfg,xml,configuraiotn 创建sessionFactory,sessionFactory做事情,一般建议创建一个sessionFactory工具类来创建sessionFactory;
session:来自于sessionFactory.openSession,相当于connection,通常使用save(),update(),delete(),还有根据id进行查询等方法;session是单线程的只能自己使用;
transaction: session.beginTranction,符合事物的特性,执行事物操作后最后commit和rollback
主键生成策略:1.<generator class="native">,自动增长;2.<generator class="uuid">,自动生成一个uuid值,注意一定要在实体类中定义为String类型;
session的三种状态:瞬时态:对象里没有id,对象和session没有关系;持久态:对象里有id对象和session有关系,比如可以用get方法从session中得到对象;脱管态:对象里有id但是对象和session没有关系。
hibernate一级缓存特点:1.一级缓存默认是打开的;2.一级缓存使用范围是session,从session创建到消失;3.一级缓存的数据必须是持久态数据;
hibernate二级缓存特点:1.被redis替代;2.应用范围是sessionFactory;3.需要手动配置。
hibernate 绑定session:使用sessionFactory.getCurrentSession();来把session和本地线程进行绑定;前提条件是已经在hibernate.cfg.xml文件中已经配置thread;
查询语句分为3种:1.HQL语句:Query query = session.createQuery("from User");query.list(); 2.Criteria criteria = session.createCriteria();Criteria.list();3. SQLQuery sqlQuery= session.createSqlQuery(sql语句);sqlQuery.addEntity(User.class);sqlQuery.list();
hibernate级联操作:
1.级联保存:比如一对多,开发步骤:在一的那个表的配置文件中配置<Set>标签,标签内配配置name,casecade="save-update",<key>采用外键,并且加入<many-to-one class="多的表的全限定路径类名">
2.hibernate对外建的维护是双向维护的,在级联操作时改变一方外键也会引起另一方外键的改变,这个问题会引起效率问题,为了解决这个问题,hibernate可以在标签中加入inverse="false",默认为false,意思是不维护;
3.多对多级联操作:开发步骤:在配置文件中使用<Set>标签 里配置casecade="save-update",删除的话再加上delete;
4.条件查询使用Hql:Query sqlQuery = session,createQuery("from 实体类 where 元素1 = ?and 元素2 = ?");sqlQuery.set(位置号,值);Set<实体类> = sqlQuery.list();
5.分页查询,一般用criteria,Criteria criteria = session.createCriteria();criteria.setFirstResults();criteria.setMaxResults();