Hibernate学习收获

使用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();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值