您的位置:首页 > 运维架构 > Linux

linux设置时区

2012-02-07 09:55 295 查看
基本上所有集合关联映射都是在一对多,多对多操作的时候使用。


1、set

我们之前在做一对多操作的时候,多的一方就是一个set.
一对多的例子:http://blog.csdn.net/p_3er/article/details/9036921

实体类中:

private Set<Employee> employees;


对应的映射文件:
<set name="employees" inverse="false" cascade="all">
<key column="department_id"></key>
<one-to-many class="cn.framelife.hibernate.entity.Employee"/>
</set>



2、有序的List

数据库的employee表中多了一个e_index字段,用以表示顺序。

实体类中:
private List<Employee> employees;


对应的映射文件:

<list name="employees" cascade="save-update">
<key column="department_id"></key>
<index column="e_index"></index>
<one-to-many class="cn.framelife.hibernate.entity.Employee"/>
</list>


增加操作与set一样
List集合是有顺序的,"index"标签,是用于记录顺序,List的顺序将表现在"e_index"列上,其余设置,与Set集合类似。注意:List映射中"inverse"中的值不能设置为"true",不然,"e_index
"的列值将不会被赋值。


3、无序的List

数据库的employee表中无e_index字段。无序的List和Set使用起来是一样的。只是无序的List使用的映射标签是<bag>

实体类中:

privateList<Employee> employees;


对应的映射文件:
<bag name="employees" cascade="all">
<key column="department_id"></key>
<one-to-many class="cn.framelife.hibernate.entity.Employee"/>
</bag>


增加操作与set一样


4、Map

表设计与set的时候一样。
实体类中:

privateMap<String, Employee> employees;


这里的键值对中的键应该是唯一的(不重复),我们设置为员工的名字。

对应的映射文件:

<map name="employees" cascade="all">
<key column="department_id"></key>
<map-key type="string" column="name"></map-key>
<one-to-many class="cn.framelife.hibernate.entity.Employee"/>
</map>


增加操作:
transaction = session.beginTransaction();
Department department = new Department();
department.setName("m");

Map<String, Employee> employees = new HashMap<String, Employee>();
for(int i = 0;i < 10; i++){
Employee employee = new Employee();
employee.setName("m"+i);
employees.put(employee.getName(), employee);
}

department.setEmployees(employees);
session.save(department);

transaction.commit();



5、注意

5.1HashMap<String,Employee>
employees = newHashMap<String,Employee>();
这样子的写法在Java中语法上和使用上是没有任何问题的。
因为懒加载的需要,我们使用所有集合对象都应该用接口来定义。而且在我们写程序的过程中也尽可能得使用接口。

5.2cascade缺省为不级联。
cascade的值有:none,all,save-update,delete...
many-to-one many-to-many一般不设置级联
one-to-one one-to-many可设置级联

5.3inverse是否要放弃维护关联关系
true为放弃,false为不放弃(缺省)
一般不设置放弃
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: