hibernate 学习笔记1

Hibernate session1

1.连接池的最小连接数指的是连接池初始化之后,就存在的连接数,这些连接放在内存中,等待被使用。最大连接数限定了连接池中最大同时连接数量,如果超过了这个数量,则进入等待队列中,需要等其他连接退出之后,才能进行连接。

2.自动建表功能有create-drop,create,update和validate四种:

1)create-dtrop是:drop->create->drop;

2) create是:drop->create

3)update是:先比较表的结构,如果表的结构发生变化,则:drop-create,否则不进行ddl操作;

4)validate是:验证java对象与数据库表的一致性,如果不一致,则报错。

5)SessionFactory不仅是一个数据库连接池,而且还保存了相应的数据库配置信息以及ORM、预定义的SQL语句。同时,还维护了hibernate的二级缓存。SessionFactory是重量级的对象,一个数据库只需要一个SessionFactory且最好在应用启动的时候完成他的初始化,SessionFactory是线程安全的。

3.Session是hibernate中使用最为频繁的API,可以再一次数据库操作中,就使用一个Session,使用完之后立即关闭,就像Servlet的一次请求相应一样,用完就释放。Session是线程不安全的,Session对象有一个一级缓存,显式执行flush之前,缓存是不会提交到数据库中的。Session的常用方法有以下几个,这些方法对应了数据库的增删改查:

1)  save(obj) ----保存数据

2)  get(Class,id) ----通过主键查询该条记录

3)  delete(obj)  ---删除数据,注意,为了方便和准确,删除的数据一般都是先查询出来的数据。

4)  update(obj)  ---更新数据,注意,为了方便和准确,更新的数据一般都是先查询出来的数据。

5)  saveOrUpdate(obj)  ---保存或修改数据

6)createQuery(String hql)   ---查询所有的数据

4.HQL就是hibernate中类似于sql的查询语句,是面向对象的。完整的HQL语句形式如下: Select/update/delete…… from …… where …… group by …… having …… order by …… asc/desc 其中的update/delete为Hibernate3中所新添加的功能,可见HQL查询非常类似于标准SQL查询。由于HQL查询在整个Hibernate实体操作体系中的核心地位.

5.Transaction就是数据库的事物,用于满足ACID,提供了两个方法来实现提交或回滚操作:

1) commit()  ---提交事务。在无异常时,直接提交,

2) rollback()  ---回滚事务。一般是用在catch到异常之后,事务回滚。

Hibernate默认不开启自动提交,而是用户通过Transaction接口手动提交事务

如果没有开启事务,那么每个session的操作都是一个独立事务,即每一条sql语句都是一个事务。

6.自然主键指的是有实际意义的主键,不如身份证号码。自然主键可能会在以后变得不唯一,比如以后因为有人去去世有人新生,有一天身份证号码不唯一了,那么数据库就会失效了,所以一般使用代理主键。

7.主键的生成策略:

1)increment:适用于short,int,龙作为主键,不是使用数据库的自动增长机制,而是hibernate来维护的。

  * hibernate中提供的一种增长机制:

  **先查询 : select max(id)  from person

  **再进行插入 :取得的最大值+1最为新纪录的主键

  *缺点:不能再集群和并发中使用。所以不常用

2)identity:适用于short,int,long作为主键,但是这个必须使用在有自动增长功能的数据库中(支持auto_increment),采用的是数据库底层的自动增长机制。

3)sequence:适用于short,int,long作为主键,底层采用的是序列的增长方式,需要制定序列。

4)UUID:适用于char,varchar类型作为主键,使用框架随机产生的32位字符串作为主键。适合多线程。

5)native:本地策略,适用于short,int,long作为主键,根据底层数据库的不同,自动选择适用于该种数据库的主键生成策略。

   *如果底层使用的是Mysql数据库,则相当于identity;

   *如果底层使用的是不支持auto_increment的oracle数据库,则相当于sequence。

6)assigned:自然主键,用户自己管理,而不是由hibernate管理。

注意:native和identity不仅需要数据库支持auto_increment,还要字段已经开启了AUTO_INCREMENT。

8.属性字段尽量使用包装类而不是基础类型,这样,当没有set相应的值得时候,值为Null而不是基本类型的默认值。这样做的好处就是可以对应数据库的null值,从而区分是一个具体的值还是缺失值。比如一个学生的成绩,如果他没有参加考试,则是Null,如果分值为0,则说明他考试了,但是考了0分。

9.持久化的java部分是:java bean+ Classname.hbm.xml

10. useUnicode=true&characterEncoding=UTF-8,&要用实体类&  这里的characterEncoding同时设置了character_set_client和character_set_results环境变量。

转载于:https://www.cnblogs.com/JMLiu/p/10178418.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring是一个开源的Java框架,用于构建企业级应用程序。它提供了一种轻量级的、非侵入式的开发方式,通过依赖注入和面向切面编程等特性,简化了Java应用程序的开发过程。 以下是关于Spring学习的一些笔记: 1. IoC(控制反转):Spring通过IoC容器管理对象的创建和依赖关系的注入。通过配置文件或注解,将对象的创建和依赖关系的维护交给Spring容器来管理,降低了组件之间的耦合度。 2. DI(依赖注入):Spring通过依赖注入将对象之间的依赖关系解耦。通过构造函数、Setter方法或注解,将依赖的对象注入到目标对象中,使得对象之间的关系更加灵活和可维护。 3. AOP(面向切面编程):Spring提供了AOP的支持,可以将与业务逻辑无关的横切关注点(如日志、事务管理等)从业务逻辑中分离出来,提高了代码的可重用性和可维护性。 4. MVC(模型-视图-控制器):Spring提供了一个MVC框架,用于构建Web应用程序。通过DispatcherServlet、Controller、ViewResolver等组件,实现了请求的分发和处理,将业务逻辑和视图展示进行了分离。 5. JDBC和ORM支持:Spring提供了对JDBC和ORM框架(如Hibernate、MyBatis)的集成支持,简化了数据库访问的操作,提高了开发效率。 6. 事务管理:Spring提供了对事务的支持,通过声明式事务管理和编程式事务管理,实现了对数据库事务的控制和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值