标签:DEPTID Hibernate 映射 关联 _. session SCOTT transaction
1. Hibernate关联关系映射
1.1. one to one
<class name="Person">
<id name="id" column="personId">
<generator class="native"/>
</id>
<join table="PersonAddress"
optional="true">
<key column="personId"
unique="true"/>
<many-to-one name="address"
column="addressId"
not-null="true"
unique="true"/>
</join>
</class>
<class name="Address">
<id name="id" column="addressId">
<generator class="native"/>
</id>
</class>
|
1.2. one to many
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.morris.hql.entity.Department" table="DEPARTMENT" schema="SCOTT">
<id name="deptid" type="java.lang.String">
<column name="DEPTID" length="20" />
<generator class="assigned" />
</id>
<property name="deptname" type="java.lang.String">
<column name="DEPTNAME" length="20" not-null="true" />
</property>
<set name="employees" inverse="true">
<key>
<column name="DEPTID" length="20" />
</key>
<one-to-many class="com.morris.hql.entity.Employee" />
</set>
</class>
</hibernate-mapping>
|
1.3. many to one
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.morris.hql.entity.Employee" table="EMPLOYEE" schema="SCOTT">
<id name="empid" type="java.lang.String">
<column name="EMPID" length="20" />
<generator class="assigned" />
</id>
<many-to-one name="department" class="com.morris.hql.entity.Department" fetch="select">
<column name="DEPTID" length="20" />
</many-to-one>
<property name="empname" type="java.lang.String">
<column name="EMPNAME" length="20" not-null="true" />
</property>
</class>
</hibernate-mapping>
|
1.4. many to many
<class name="Person">
<id name="id" column="personId">
<generator class="native"/>
</id>
<set name="addresses" table="PersonAddress">
<key column="personId"/>
<many-to-many column="addressId"
class="Address"/>
</set>
</class>
<class name="Address">
<id name="id" column="addressId">
<generator class="native"/>
</id>
</class>
|
1.5. 实例
1.5.1. 级联增加
public void addDeptEmp(Department dept, Employee emp) {
Session session = HibernateSessionFactory.getSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
dept.getEmployees().add(emp);
emp.setDepartment(dept);
session.save(dept);
transaction.commit();
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}
|
打印的sql语句
Hibernate:
select
employee_.EMPID,
employee_.DEPTID as DEPTID0_,
employee_.EMPNAME as EMPNAME0_
from
SCOTT.EMPLOYEE employee_
where
employee_.EMPID=?
Hibernate:
insert
into
SCOTT.DEPARTMENT
(DEPTNAME, DEPTID)
values
(?, ?)
Hibernate:
insert
into
SCOTT.EMPLOYEE
(DEPTID, EMPNAME, EMPID)
values
(?, ?, ?)
|
1.5.2. 级联删除
public void deleteDeptEmp(Department dept, Employee emp) {
Session session = HibernateSessionFactory.getSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
session.delete(dept);
transaction.commit();
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}
|
打印的sql语句
Hibernate:
select
department0_.DEPTID as DEPTID1_1_,
department0_.DEPTNAME as DEPTNAME1_1_,
employees1_.DEPTID as DEPTID3_,
employees1_.EMPID as EMPID3_,
employees1_.EMPID as EMPID0_0_,
employees1_.DEPTID as DEPTID0_0_,
employees1_.EMPNAME as EMPNAME0_0_
from
SCOTT.DEPARTMENT department0_
left outer join
SCOTT.EMPLOYEE employees1_
on department0_.DEPTID=employees1_.DEPTID
where
department0_.DEPTID=?
Hibernate:
delete
from
SCOTT.EMPLOYEE
where
EMPID=?
Hibernate:
delete
from
SCOTT.DEPARTMENT
where
DEPTID=?
|
1.5.3. 级联修改
public void updateDeptEmp() {
Session session = HibernateSessionFactory.getSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
Department dept = (Department) session.load(Department.class, "5");
Employee emp = (Employee) session.load(Employee.class, "1001");
"就业部");
"a");
session.update(dept);
session.update(emp);
transaction.commit();
} catch (Exception e) {
if (transaction != null) {
transaction.rollback();
}
e.printStackTrace();
} finally {
if (session != null) {
session.close();
}
}
}
|
打印的sql语句
Hibernate:
select
department0_.DEPTID as DEPTID1_1_,
department0_.DEPTNAME as DEPTNAME1_1_,
employees1_.DEPTID as DEPTID3_,
employees1_.EMPID as EMPID3_,
employees1_.EMPID as EMPID0_0_,
employees1_.DEPTID as DEPTID0_0_,
employees1_.EMPNAME as EMPNAME0_0_
from
SCOTT.DEPARTMENT department0_
left outer join
SCOTT.EMPLOYEE employees1_
on department0_.DEPTID=employees1_.DEPTID
where
department0_.DEPTID=?
Hibernate:
select
employee0_.EMPID as EMPID0_0_,
employee0_.DEPTID as DEPTID0_0_,
employee0_.EMPNAME as EMPNAME0_0_
from
SCOTT.EMPLOYEE employee0_
where
employee0_.EMPID=?
Hibernate:
update
SCOTT.DEPARTMENT
set
DEPTNAME=?
where
DEPTID=?
Hibernate:
update
SCOTT.EMPLOYEE
set
DEPTID=?,
EMPNAME=?
where
EMPID=?
|
1.5.4. 级联查询
public Employee queryEmployeeById(String id){
Session session = HibernateSessionFactory.getSession();
Employee employee = null;
try {
employee = (Employee) session.load(Employee.class, id);
System.out.println(employee.getEmpname());
} finally {
if (session != null) {
session.close();
}
}
return employee;
}
|
打印的sql语句
Hibernate:
select
employee0_.EMPID as EMPID0_0_,
employee0_.DEPTID as DEPTID0_0_,
employee0_.EMPNAME as EMPNAME0_0_
from
SCOTT.EMPLOYEE employee0_
where
employee0_.EMPID=?
Hibernate:
select
department0_.DEPTID as DEPTID1_0_,
department0_.DEPTNAME as DEPTNAME1_0_
from
SCOTT.DEPARTMENT department0_
where
department0_.DEPTID=?
a
|
标签:DEPTID,
Hibernate,
映射,
关联,
_.,
session,
SCOTT,
transaction
From: https://blog.51cto.com/u_6784072/6216868