Hibernate中在持久化的类中定义的集合类的映射方法介绍和小注意
来源:互联网 发布:mac route命令 编辑:程序博客网 时间:2024/06/06 08:01
类的映射文件中用于表示集合的标签:
class1:Department 本类
class2:Employee
一.set:表示此属性的类型为Set
二.list:表示此属性的类型为List
list标签的特点:查询出的数据会按照插入的顺序出现,具体的操作方法是在表中添加一个
自动增长的字段(例如下面的<index/>标签,column属性表示字段名称)用于记录插入的顺序,
查询的时候按照此字段排序
三.bag:类似于list标签
bag标签的特点:如果使用bag标签,跟list差不多,那此类的当前属性只能是List,
但是此标签的内部没有<index/>标签,不能创建记录顺序的那一列
四.map:此属性类型为Map
map标签的特点:具有key和value的键值对,并且需要指定key的类型和列名
五.此类的属性为数组类型
此类型的配置跟list类似
以上多种数据类型的使用规则:
一般情况下就会使用Set,因为Set的配置相对简单一些,并且插入的是不重复的数据
如果要使用List,就要看有什么需求了:
1.如果要使用List集合,但是又不想让Hibernate定义一列来记录顺序,就可以在类的属性
使用List,映射的时候使用bag标签实现
2.如果要保存顺序,就要用List来映射了,类的类型是List,映射也用list
如果需求中需要使用键值对的方式存放数据就要使用map了
而数组的使用就会更少了,因为数组的这种数据结构对于元素的变化操作就不是很方便,并且会经常
发生下表越界这种异常
=================================================================================
另外在使用Set的时候的一些小注意:
如上面的一个方法用于添加员工(Employee)的信息和部门(Department)信息
被*包围的代码所示,把得到的Set类型的数据又转换成了Set的实现类HashSet来保存,这样的话
再经过Hibernate中Session的save方法,就会出现异常,原因是:如果不转换成为HashSet类型数据,
原来的Set类型的数据经过Hibernate之后会被转换城为另一种数据类型org.Hibernate.collection.PersistentSet
来保存,其中org.Hibernate.collection.PersistentSet是jdk中Set类型的实现类,而HashSet也是
其实现类,那平级的数据类型相互转换当然会出现异常的.
当然类的属性类型更不能用HashSet了
得出的结论:在持久化的类中定义的集合类要定义成接口,不要定义成具体的实现类,就不会出现问题了
- Hibernate中在持久化的类中定义的集合类的映射方法介绍和小注意
- Java中定义Hibernate映射类需要注意的一点
- Hibernate中持久化类方法的两个调用者
- hibernate设置派生属性, 在持久化类的访问方法中加入程序逻辑...
- 在Hibernate应用中,持久化类的访问方法被谁调用?
- 关于hibernate中持久化类之间的映射关系的详解(一)
- 在action中定义的方法一定要注意的事项
- hibernate 中映射关系的介绍
- 在类中定义常量的方法
- Hibernate中关于持久化类的三种状态
- hibernate由数据库表导为映射文件和持久化类的流程
- hibernate中使用session对象获得持久化对象get和load方法的区别
- hibernate中定义PO类的hashCode和domain方法不正确引起的mysql内存泄露
- Hibernate中update方法的注意点
- hibernate中持久化对象的生命周期
- Hibernate中持久化对象的状态
- 接口中定义的方法在抽象类中实现
- hibernate 五 hibernate 中提倡持久类实现equals()和hashCode()的原因分析
- 毕业后访问SCI,EI,IEEE等数据库,下载全文的方法
- 程序员成才的关键——内在兴趣和善于发现
- Jquery之插件【SimpleModal】
- Tic-Tac-Toe
- AS3菜鸟教程12-MVC模式
- Hibernate中在持久化的类中定义的集合类的映射方法介绍和小注意
- hdu 1863 畅通工程(prim算法实现和kruskal算法实现)
- WCF链接服务超时解决办法
- 好好加油,暂别我心爱的dota
- 优秀项目经理必备的8个要素
- Java常见问题
- Flash 与分布学构想:圆弧分布
- 索引、视图、同义词、函数、存储过程、触发器、游标定义
- 代码风格之EJB