hibernate映射(二) 之Hibernate单项一对多映射
来源:互联网 发布:无人机pos数据怎么确定 编辑:程序博客网 时间:2024/06/02 22:11
数据库sql
CREATE TABLE `company` ( `id` int(11) NOT NULL AUTO_INCREMENT, `com_name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
CREATE TABLE `employee` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFAULT NULL, `age` int(11) DEFAULT NULL, `com_id` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
实体类
company.java
package org.lei.model;import java.io.Serializable;import java.util.HashSet;import java.util.Set;public class Company implements Serializable{private Integer id;//主键id属性变量private String comName;//公司名称属性变量private Set employees = new HashSet<>();//雇员属性变量public Company(){}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getComName() {return comName;}public void setComName(String comName) {this.comName = comName;}public Set getEmployees() {return employees;}public void setEmployees(Set employees) {this.employees = employees;}/** * 注意要增加上面这两个方法 * 增加一个employee * @param employee */public void addEmployee(Employee employee){employees.add(employee);}/** * 删除一个employee * @param employee */public void removeEmployees(Employee employee){employees.remove(employee);}}
Employee.java员工类
package org.lei.model;public class Employee {private Integer id ;//主键id属性变量private String name;//姓名属性变量private Integer age;//年龄属性变量public Employee(){}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}}
映射文件
company.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name ="org.lei.model.Company" table="company"> <id name="id" type="java.lang.Integer"> <column name="id"/> <generator class="native"/> </id> <property name="comName" type="java.lang.String"> <column name="com_name" length="20"></column> </property> <set name ="employees" table="employee" cascade="all"> <key column ="com_id"/> <!-- 配置多对一关系映射 --> <one-to-many class="org.lei.model.Employee" /> </set> </class> </hibernate-mapping>要注意下面的几句话
<set name ="employees" table="employee" cascade="all"> <key column ="com_id"/> <!-- 配置多对一关系映射 --> <one-to-many class="org.lei.model.Employee" /> </set>
employee.hbm.xml
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name ="org.lei.model.Employee" table="employee"> <id name="id" type="java.lang.Integer"> <column name="id"></column> <generator class = "native"></generator> </id> <property name ="name" type="java.lang.String"> <column name="name" length="20"> </column> </property> <property name="age" type="java.lang.Integer"> <column name = "age" ></column> </property> </class> </hibernate-mapping>
测试类
TestOneToMany.javapackage com.test;import org.hibernate.HibernateException;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.lei.model.Company;import org.lei.model.Employee;public class TestOneToMany {public static void main(String []args){Configuration cfg = new Configuration().configure("hibernate.cfg.xml");SessionFactory sessionFactory = cfg.buildSessionFactory();Employee e1 = new Employee();e1.setName("renlei1");e1.setAge(23);Employee e2 = new Employee();e2.setName("zhang2");e2.setAge(20);Employee e3 = new Employee();e3.setName("employee3");e3.setAge(23);Company com1 = new Company();com1.setComName("com1");Company com2 = new Company() ;com2.setComName("com2");com1.addEmployee(e1);com1.addEmployee(e2);com2.addEmployee(e3);Integer pid;//定义主键变量Session session = sessionFactory.openSession();Transaction tx = null;try {tx = session.beginTransaction();///开启事务pid = (Integer)session.save(com1);session.save(com2);tx.commit();} catch (HibernateException e) { e.printStackTrace(); tx.rollback();//遇异常用回滚事务 }finally{ session.close(); } }}
测试结果:
0 0
- hibernate映射(二) 之Hibernate单项一对多映射
- Hibernate 关联映射 之 一对多单项关联 (一)
- Hibernate 关联映射 之 一对多单项关联 (二)聪明的懒加载
- Hibernate 关联映射 之 一对多单项关联 (三)查询
- hibernate 学习之二(一对多映射)
- hibernate映射技巧one-to-many(单项一对多)
- hibernate映射技巧one-to-many(单项一对多)
- hibernate映射(一) 之Hibernate单项多对一映射
- hibernate 一对多映射
- Hibernate一对多映射
- Hibernate 一对多映射
- Hibernate 一对多映射
- hibernate 一对多映射
- hibernate一对多映射
- 【Hibernate】一对多映射
- Hibernate映射一对多
- Hibernate一对多映射
- Hibernate一对多映射
- 关于Java的10个谎言
- make wall not penetratable
- Linux内存寻址和内存管理(x86 IA-32架构)
- android Listview的getView和convertview原理解析以及使用不同的item布局(二)
- WebBrowser实现Javascript和Winform代码之间实现双向通信
- hibernate映射(二) 之Hibernate单项一对多映射
- 一、启动4个线程,在控制台中输出数字,保证数字是按照顺序递增,并且没有重复数字,每隔1秒输出一个数字。
- TCP协议三次握手过程分析
- OpenCV2马拉松第9圈——再谈对比度(对比度拉伸,直方图均衡化)
- 黑马程序员_求任意字符串及其所有子串的全排列
- 数列题解
- 利用java发射 生产对象的sql插入语句
- cocos2dx 3.0 final版本 mac 创建工程
- org.apache.log4j.Logger 详解