Hibernate 开发流程笔记(中)
来源:互联网 发布:iphones怎么设置4g网络 编辑:程序博客网 时间:2024/06/02 20:22
继续上篇,我们已经通过使用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中,只有四种主键增长策略:
- 容器自动生成---GeneratorType.AUTO
- 根据数据库序列号(Sequence)生成 ---GenerationType.SEQUENCE ,oracle支持
- 使用数据库的自动增长字段生成---GenerationType.IDENTITY
- 使用数据库表的字段生成---GenerationType.TABLE
Forum表和Subforum表可以设为AUTO,但是User等其他表需要使用uuid增长策略,解决方法是 JPA注解和Hibernate注解一起使用。
//uuid增长策略@GenericGenerator(name = "idGenerator", strategy = "uuid") @GeneratedValue(generator = "idGenerator")//auto增长策略@GeneratedValue(strategy=GenerationType.AUTO)
- Hibernate 开发流程笔记(中)
- Hibernate 开发流程笔记(中)
- Hibernate 开发流程笔记(上)
- Hibernate 开发流程笔记(上)
- JavaWeb学习笔记-Hibernate-02-开发流程
- Hibernate开发流程(二)
- Hibernate开发流程
- Hibernate 学习笔记:Hibernate 项目开发中,NoSuchMethodError解决方法
- struts + hibernate + spring开发流程
- Hibernate的基本开发流程
- java框架Hibernate学习---hibernate开发流程
- Win32开发笔记(一):整体流程
- H3流程开发笔记
- ios 开发流程笔记
- iOS 开发流程笔记
- iOS 开发流程笔记
- Hibernate开发全面流程和开发配置
- Struts+Hibernate模板开发笔记(一)
- 函数指针的应用(一)
- VS2010 C++目录配置(zz)
- 转一首poj的情诗,先留这里,以后定有用
- setattribute和getParameter的区别
- qtopia-2.2.0的交叉编译以及移植Ⅱ(在Fedora下构建嵌入式QT环境)
- Hibernate 开发流程笔记(中)
- Maven和Tycho
- 网络团购业继续洗牌
- 改变你一生的30个关键习惯
- [leetcode] Subsets II
- android模拟器调整尺寸和内存大小
- Step Three: Escape!
- QString C程序员的注意事项
- Android ViewFlipper的使用 实现页面滑动