Hibernate学习

本文介绍了Hibernate的基本配置项,如显示SQL、格式化SQL、自动建表策略等,并详细讲解了Session与Transaction的概念及使用方法。

hibernate.cfg.xml常用配置

  • hibernate.show_sql :是否把hibernate运行时的sql语句输出到控制台,便于编码阶段的测试
  • hibernate.format_sql 输出到控制台的sql语句是否进行排版,便于阅读,一般设为true
  • hbm2ddl.auto 帮助java代码生成数据库脚本,进而生成具体的表结构 (如果表存在,create:删除原来的表创建新表 update 在原表之上进行更新,create-drop先创建新表再删除原表 validate 如果与原来的表结构不同,不会创建新表)
  • hibernate.default_schema 在创建的数据库前面加上前缀,比如:当标签之间填hibernate时,数据库名为hibernate.XXX
  • hibernate.dialect 配置hibernate数据库方言,hibernate可针对不同的数据库进行优化。

session简介
看图

解析:首先创建配置对象(configuration对象new Configuration().configure()还要有服务注册对象SeviceRegistry对象,new SeviceRegistryBuilder()…)来读去配置文档,获取配置对象后用它来创建sessionfactory对象,该对象会读取对象关系映射文件(XXX.hbm.xml),之后创建session对象,相当于JDBC中的connection,即操作数据库对象
执行session的方法,每次执行方法时要开启事物,执行完方法之后要提交事务,最后关闭session

重点内容
session不建议直接使用jdbc的connection操作数据库,而要通过session操作数据库
每个session对应一个connection,一个connection不同时刻供多个session使用。
调用session的方法,将对象保存在关系数据库中

  • save()
  • update()
  • delete()
  • createQuery()

    transaction简介
        hibernate对数据库的操作是封装到事物当中,并且非自动提交,所以用session保存对象,如果不开启事务,但却手工提交事务,对象并不会真正保存在数据库中。(表现为没有插入数据)

    jdbc自动提交事务,

如何获得session对象

  1. openSession方法
    需要手动关闭,如果没有关闭多次之后导致连接池溢出。
    每次创建新的session对象
  2. getCurrentSession方法
    自动关闭,
    使用现有的session对象(相当于单例模式)
    需要在hibernate.cfg.xml中进行配置
    本地事物(jdbc事务)
<property name="hibernate.current_session_context_class">thread</property>

全局事务(jta事务)

<property name="hibernate.current_session_context_class">jta</property>

详情

小知识
可以用session的doWork方法,重写Work()来打印出connection.hashCode可以比较session是否为 同一个session对象。如果没有关闭session有多个hashcode(表示多个session将导致溢出)

session.doWork(new Work(){
    public void execute(Connection connection) throws SQLException{
    System.out.print(connection.hashCode())};
});

hbm配置文件常用设置
<class />标签中的属性
name 映射的类名
table 映射的数据库中的表名
batch-size=‘n’ 一次抓取多少条记录
where=’condition’ 设置抓取记录的条件
entity-name=” 同一个类映射多个表

<id ></id>

id标签的属性有:
name映射的属性
type属性的类型
column 映射成数据库后子段的名称
length 映射成数据库后子段的长度
``
<generator class="generatorClass"

主键生成策略

详情

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值