在hibernate中常见的问题和注意点

对于hibernate框架中常问的问题。hibernate是一个持久层的ORM框架。Hibernate是对JDBC的封装,目的是简化对数据库的操作。

持久层 干什么的? 持久层是操作数据库

对表进行CRUD

注意点:持久层不涉及业务逻辑,单表查询效率高

核心配置文件 配置数据库相关信息

hibernate-release-5.0.7.Final\project\etc\hibernate.properties

框架自身信息

1.展示sql

2.格式化sql

3.方言

4.是否美化

5.自动建表

映射文件

1.关键标签mapping

标准配置

[html] view plain copy <session-factory>
<!-- 配置关于数据库连接的四个项 driverClass url username password -->
<property name="hibernate4hql.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate4hql.connection.url">jdbc:mysql:///hibernate4hqlTest</property>
<property name="hibernate4hql.connection.username">root</property>
<property name="hibernate4hql.connection.password">123</property>

    <!-- 设置连接提供者 -->  
    <property name="hibernate4hql.connection.provider_class">org.hibernate4hql.connection.C3P0ConnectionProvider</property>  
    <!-- c3p0连接池的配置 -->  
    <property name="hibernate4hql.c3p0.max_size">20</property> <!-- 最大连接池 -->  
    <property name="hibernate4hql.c3p0.min_size">5</property> <!-- 最小连接数 -->  
    <property name="hibernate4hql.c3p0.timeout">120</property> <!-- 超时 -->  
    <property name="hibernate4hql.c3p0.idle_test_period">3000</property> <!-- 空闲连接 -->  

    <!-- 可以将向数据库发送的sql显示出来 -->  
    <property name="hibernate4hql.show_sql">true</property>  
    <!-- 格式化sql -->  
    <property name="hibernate4hql.format_sql">true</property>  

    <!-- hibernate4hql的方言 -->  
    <property name="hibernate4hql.dialect">org.hibernate4hql.dialect.MySQLDialect</property>  

    <!-- 自动创建表 -->  
    <property name="hibernate4hql.hbm2ddl.auto">update</property>  


    <!-- 设置事务隔离级别 -->  
    <property name="hibernate4hql.connection.isolation ">4</property>  


    <property name="hibernate4hql.current_session_context_class">thread</property>  


      
    <mapping class="com.itheima.domin.Customer" />  
    <mapping class="com.itheima.domin.Order" />  


</session-factory>  

3.什么是持久化类? POJO+映射文件

编写规则:

​ 1.公有无参构造方法

​ 2.私有属性,拥有get/set方法

​ 3.拥有OID

4.属性最好用包装类

​ (为什么使用包装类,在数据库中0是有意义的,包装类返没有用空代替,不影响数据)

​ 5.为什么不能用final修饰po类

​ (hilbernate底层实现了cglib代理,而(cglib)代理要求,产生子类的代理对象)

三种状态
oid	session绑定	数据库是否存在

瞬时态 无 无 可有可无 持久态 有 有 可有可无 游离态 有 无 可有可无

转换方式注意点:

​ 我们一般操作持久态,尽量避免操作游离态

4.级联保存目的 ​ 减少对数据库的操作

5.查询

总结:

​ HQL : 适用于场景 是hibernate推荐使用的查询方式,业务比较简单的场景

​ QBC :适用于场景 条件特比复杂的查询,更加面相对相关

​ SQL :适用于场景 特别复杂,比如2张及其以上表关联查询 我优先选用本地SQL

转载于:https://my.oschina.net/u/3765712/blog/1835390

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值