Hibernate 开发流程笔记(中)

继续上篇,我们已经通过使用hbm2java来生成了entity实体类,这些实体类可能会有问题,需要修改。修改完成之后配置hbm2ddl来测试orm是否有问题。


在entity的one-to-many关系中,我习惯使用List而不是HashSet,对五个实体类进行修改,配置hbm2ddl,发现只能生成user表,forum表,subforum表


调试一天发现:对于topic和reply的 text类型的字段,hbm2java后长度为65535;在Mysql文档上查询,发现下面这句话:


The effective maximum length of aVARCHAR in MySQL 5.0.3 and later is subject to the maximum row size (65,535 bytes, which is shared among all columns) and the character set used


其中的关键之处在于 65535的单位是byte,而我的数据库编码方式却是utf8_genera_ci,长度上肯定要小很多, 测试发现utf8_general_ci字符集的varchar最多可以设为21806;

因此,在实体类中,把Topic和Reply的内容长度通过注解的方式给成10000即可解决问题,hbm2ddl后内容字段类型为varchar(10000) 

对于text类型,在powerdesigner进行设计时不推荐使用!


除了这些,还要在entity中设置主键增长策略。JAP中,只有四种主键增长策略:

  1. 容器自动生成---GeneratorType.AUTO 
  2. 根据数据库序列号(Sequence)生成 ---GenerationType.SEQUENCE  ,oracle支持
  3. 使用数据库的自动增长字段生成---GenerationType.IDENTITY 
  4. 使用数据库表的字段生成---GenerationType.TABLE 
Forum表和Subforum表可以设为AUTO,但是User等其他表需要使用uuid增长策略,解决方法是 JPA注解和Hibernate注解一起使用。
//uuid增长策略
@GenericGenerator(name = "idGenerator", strategy = "uuid")
    @GeneratedValue(generator = "idGenerator")

//auto增长策略
@GeneratedValue(strategy=GenerationType.AUTO)





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hibernate的工作流程大致如下: 1. 加载配置文件:在应用程序启动时,Hibernate会加载配置文件(hibernate.cfg.xml),包括数据库连接信息、映射文件等。 2. 创建SessionFactory:Hibernate通过SessionFactory创建Session对象。SessionFactory是线程安全的,通常只需要创建一个实例即可。 3. 创建Session:使用SessionFactory.openSession()方法创建Session对象,Session是线程不安全的,每个线程需要单独创建一个Session对象。 4. 开始事务:使用Session.beginTransaction()方法开始事务,事务可以跨越多个数据库操作。 5. 执行CRUD操作:使用Session对象进行CRUD操作,包括添加、查询、更新、删除等操作。 6. 提交事务:使用Session.getTransaction().commit()方法提交事务,如果操作失败可以使用Session.getTransaction().rollback()方法回滚事务。 7. 关闭Session:使用Session.close()方法关闭Session对象,释放与数据库的连接。 8. 关闭SessionFactory:在应用程序关闭时,关闭SessionFactory对象,释放资源。 Hibernate的工作流程主要包括加载配置文件、创建SessionFactory、创建Session、进行数据库操作、提交事务、关闭Session和关闭SessionFactory等步骤。Hibernate提供了丰富的API和查询语言,使得开发人员可以方便地进行数据库操作。同时,Hibernate还提供了缓存、事务管理、查询优化等高级特性,使得应用程序具有更好的性能和可维护性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值