Java代码
public class Many2One {
public static void main(String[] args) {
Department depart = add();
Department department = queryDepart(depart.getId());
}
static Department queryDepart(int departId) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
Department depart = (Department) s.get(Department.class, departId);
System.out.println("emps:" + depart.getEmps());
tx.commit();
return depart;
} finally {
if (s != null)
s.close();
}
}
static Department add() {
Session s = null;
Transaction tx = null;
try {
Department depart = new Department();
depart.setName("department name");
Employee employee1 = new Employee();
employee1.setName("employee1 name1");
Employee employee2 = new Employee();
employee2.setName("employee2 name2");
List<Employee> list= new ArrayList<Employee>();
list.add(employee1); //1
list.add(employee2); //2
depart.setEmps(list);
s = HibernateUtil.getSession();
tx = s.beginTransaction();
s.save(depart);
s.save(employee1);
s.save(employee2);
tx.commit();
return depart;
} finally {
if (s != null)
s.close();
}
}
}
public class Many2One {
public static void main(String[] args) {
Department depart = add();
Department department = queryDepart(depart.getId());
}
static Department queryDepart(int departId) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
Department depart = (Department) s.get(Department.class, departId);
System.out.println("emps:" + depart.getEmps());
tx.commit();
return depart;
} finally {
if (s != null)
s.close();
}
}
static Department add() {
Session s = null;
Transaction tx = null;
try {
Department depart = new Department();
depart.setName("department name");
Employee employee1 = new Employee();
employee1.setName("employee1 name1");
Employee employee2 = new Employee();
employee2.setName("employee2 name2");
List<Employee> list= new ArrayList<Employee>();
list.add(employee1); //1
list.add(employee2); //2
depart.setEmps(list);
s = HibernateUtil.getSession();
tx = s.beginTransaction();
s.save(depart);
s.save(employee1);
s.save(employee2);
tx.commit();
return depart;
} finally {
if (s != null)
s.close();
}
}
}
执行测试类,控制台打印如下信息:
emps:[id=1 name=employee1 name1, id=2 name=employee2 name2]
将测试类中注释为1和注释为2的语句对换顺序后,重新执行,控制台打印如下信息:
emps:[id=2 name=employee2 name2, id=1 name=employee1 name1]
再看数据库表中的记录,如下所示:
mysql> select * from department;
+----+-----------------+
| id | name |
+----+-----------------+
| 1 | department name |
+----+-----------------+
1 row in set (0.00 sec)
mysql> select * from employee;
+----+-----------------+-----------+-----------+
| id | name | depart_id | order_col |
+----+-----------------+-----------+-----------+
| 1 | employee1 name1 | 1 | 1 |
| 2 | employee2 name2 | 1 | 0 |
+----+-----------------+-----------+-----------+
2 rows in set (0.00 sec)
说明使用List时,因为配置文件下增加了<list-index column="order_col" />对加入List集合的元素的顺序进行记录,测试结果表明,确实对加入顺序进行了记录。
相关推荐
1. **集合转换**:可以将一个集合转换成另一种集合类型,如List转Set或Map。 2. **迭代器增强**:提供了一些迭代器的扩展,比如反向迭代、过滤迭代等。 3. **工厂方法**:创建集合、映射和迭代器的工厂,简化代码...
#### 六、集合类(Collections)映射 - **持久化集合类(Persistent Collections)** - **映射集合**:集合类型的映射策略。 - **值集合和多对多关联**:多对多关系的映射。 - **一对多关联**:一对多关系的映射方法...
1. **、<list>、<map> 和 **:这些元素是Hibernate用于映射不同类型的集合的标签。`<set>`用于映射无序且不重复的集合,如Java的HashSet;`<list>`用于映射有序的集合,如ArrayList,元素可以通过索引访问;`<map>`...
5. **集合映射 (Collections Mapping)** Hibernate 支持多种集合类型,如 List、Set、Map 等,它们可以作为一对多或多对多关系的容器。`@ElementCollection` 用于映射非实体类属性的集合,而 `@OrderColumn` 可以...
- **6.2.3 索引集合类 (Indexed collections)**:介绍索引集合的映射方式。 - **6.2.4 值集合于多对多关联 (Collections of values and many-to-many associations)**:讨论值集合和多对多关联的映射。 - **6.2.5...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. ...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. ...
1. **集合增强**:提供了一些对Java内置集合类的增强,如List、Set和Map的扩展,增加了新的操作和功能。 2. **迭代器工具**:提供了多种迭代器实现,包括反向迭代器、过滤迭代器等,便于遍历集合。 3. **转换器和...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. ...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. ...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. ...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. 索引...
#### 二、Hibernate 所需类库 - **JDBC 驱动**:Hibernate 使用 JDBC 来连接数据库,因此需要相应的 JDBC 驱动。例如,使用 MySQL 作为数据库时,需要下载 MySQL 的 JDBC 驱动。 - **Hibernate 主库**:`hibernate3....
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. ...
6. 集合类(Collections)映射 6.1. 持久化集合类(Persistent collections) 6.2. 集合映射( Collection mappings ) 6.2.1. 集合外键(Collection foreign keys) 6.2.2. 集合元素(Collection elements) 6.2.3. 索引...
7. 集合类(Collections)映射 7.1. 持久化集合类(Persistent collections) 7.2. 集合映射( Collection mappings ) 7.2.1. 集合外键(Collection foreign keys) 7.2.2. 集合元素(Collection elements) 7.2.3. ...
- `commons-collections-3.1.jar`:提供额外的集合类和工具方法。 - `dom4j.jar`:用于XML文件的解析。 - `hibernate3.jar`:包含Hibernate的核心API实现。 - `javassist-3.12.0.GA.jar`:支持动态生成Java代码...
- **作用**:Hibernate在处理复杂的数据结构时,经常会用到这些集合类,比如List、Set、Map等。该库的使用有助于提高Hibernate处理集合数据的效率和灵活性。 #### 6. commons-beanutils.jar - **描述**:Apache ...
- Hibernate支持多种集合类型,如List、Set、Map等,以及一对一、一对多、多对一、多对多的关系映射。 - 使用@OneToOne、@OneToMany、@ManyToOne、@ManyToMany注解定义关联。 7. **Criteria API** - Criteria ...
- Mappings for Collections:处理集合与数据库表的关系,如List、Set、Map等。 本教程旨在帮助开发者深入理解和掌握Hibernate,通过实践操作,可以提升数据库操作的效率,降低维护成本。学习Hibernate不仅能够...