hibernate.cfg.xml
org.hibernate.dialect.OracleDialect
update
true
true
<tx:annotation-driven transaction-manager=“transactionManager”/>
applicationContext-beans.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns=“http://www.springframework.org/schema/beans”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd”>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> false/WEB-INF/views/emp-list.jsp
text/html inputStream/WEB-INF/views/emp-input.jsp
/emp-list
3、类文件
EmployeeAction
package com.ssh.actions;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Map;
import org.apache.struts2.interceptor.RequestAware;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;
import com.ssh.entities.Employee;
import com.ssh.service.DepartmentService;
import com.ssh.service.EmployeeService;
public class EmployeeAction extends ActionSupport implements RequestAware,
ModelDriven,Preparable{
private static final long serialVersionUID = 1L;
private EmployeeService employeeService;
public void setEmployeeService(EmployeeService employeeService) {
this.employeeService = employeeService;
}
private DepartmentService departmentService;
public void setDepartmentService(DepartmentService departmentService) {
this.departmentService = departmentService;
}
public String list() {
request.put(“employees”,employeeService.getAll());
return “list”;
}
private Integer id;
public void setId(Integer id) {
this.id = id;
}
public InputStream inputStream;
public InputStream getInputStream() {
return inputStream;
}
public String delete() {
try {
employeeService.delete(id);
inputStream = new ByteArrayInputStream(“1”.getBytes(“UTF-8”));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return SUCCESS;
}
public String input() {
request.put(“departments”, departmentService.getAll());
return INPUT;
}
public void prepareInput() {
if(id!=null) {
model = employeeService.get(id);
}
}
public String save() {
if(id == null) {
model.setCreateTime(new Date());
}
employeeService.saveOrUpdate(model);
System.out.println(“model”);
return SUCCESS;
}
public void prepareSave() {
if(id == null) {
model = new Employee();
}else {
model = employeeService.get(id);
}
}
private Map<String,Object> request;
@Override
public void setRequest(Map<String, Object> arg0) {
this.request = arg0;
}
@Override
public void prepare() throws Exception {}
private Employee model;
@Override
public Employee getModel() {
return model;
}
}
EmployeeService
package com.ssh.service;
import java.util.List;
import com.ssh.dao.EmployeeDao;
import com.ssh.entities.Employee;
public class EmployeeService {
private EmployeeDao employeeDao;
public void setEmployeeDao(EmployeeDao employeeDao) {
this.employeeDao = employeeDao;
}
public void saveOrUpdate(Employee employee) {
employeeDao.saveOrUpdate(employee);
}
public void delete(Integer id) {
employeeDao.delete(id);
}
public List getAll(){
List employees = employeeDao.getAll();
return employees;
}
public Employee get(Integer id) {
return employeeDao.get(id);
}
}
EmployeeDao
package com.ssh.dao;
import java.util.List;
import com.ssh.entities.Employee;
public class EmployeeDao extends BaseDao{
public void delete(Integer id) {
String hql = “DELETE From Employee e where e.id=?0”;
getSession().createQuery(hql).setParameter(0,id).executeUpdate();
}
public List getAll() {
//String hql = “From Employee e LEFT OUTER JOIN FETCH e.department”;
String hql = “From Employee”;
return getSession().createQuery(hql).list();
}
public void saveOrUpdate(Employee employee) {
getSession().saveOrUpdate(employee);
}
public Employee get(Integer id) {
return (Employee)getSession().get(Employee.class,id);
}
}
emp-list.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%@ taglib prefix=“s” uri=“/struts-tags”%>
Employee List Page
<s:if test=“#request.employees == null||#request.employees.size() == 0”>
没有任何员工信息
</s:if>
<s:else>
<s:iterator value=“#request.employees”>
${id } ${lastName } ${email } ${birth } ${createTime } Edit</s:iterator>
</s:else>
emp-input.jsp
<%@ page language=“java” contentType=“text/html; charset=UTF-8”
pageEncoding=“UTF-8”%>
<%@ taglib prefix=“s” uri=“/struts-tags” %>
Employee Input Page
<s:form action=“emp-save” method=“post”>
<s:if test=“id != null”>
<s:textfield name=“lastName” label=“LastName” disabled=“true”></s:textfield>
<s:hidden name=“id”></s:hidden>
</s:if>
<s:else>
<s:textfield name=“lastName” label=“LastName”></s:textfield>
</s:else>
<s:textfield name=“email” label=“Email”></s:textfield>
<s:textfield name=“birth” label=“Birth”></s:textfield>
<s:select list=“#request.departments”
listKey=“id” listValue=“departmentName”
name=“department.id” label=“Department”>
</s:select>
<s:submit></s:submit>
</s:form>
四、完成hibernate增删改查
=================
五、configuration
===============
1、配置管理类:主要管理配置文件的一个类
它拥有一个子类annotationConfiguration,也就是说我们可以使用注解来代替XML配置文件来配置相对应的信息。
2、方法
(1)configure方法用于加载配置文件:
如果指定参数,那么加载参数的路径配置文件
如果不指定参数,默认加载src/目录下的hibernate.cfg.xml
(2)buildSessionFactory()用于创建session工厂
(3)sessionFactory方法
SessionFactory–>Session的工厂,也可以说代表了hibernate.cfg.xml这个文件…hibernate.cfg.xml的就有这么一个节点
(4)openSession方法,创建一个session对象
(5)getCurrentSession方法,创建session对象或取出session对象
3、session
session是hibernate最重要的对象,session维护了一个连接(connection),只要使用hibernate操作数据库,都需要使用session对象。
更新操作
使用save方法,调用这个方法把对象保存在数据库中,session对象提供其他方法进行对数据库的更新
-
session.save(obj); 【保存一个对象】
-
session.update(obj); 【更新一个对象】
-
session.saveOrUpdate(obj); 【保存或者更新的方法】
-
没有设置主键,执行保存;
-
有设置主键,执行更新操作;
-
如果设置主键不存在报错!
六、HQL查询
=======
1、HQL
hibernate query language即hibernate提供的面向对象的查询语言
查询的是对象以及对象的属性,区分大小写
2、SQL
strut query language结构化查询语言。不区分大小写
3、本地SQL查询
有的时候,如果SQL是非常复杂的,我们不能靠SQL查询来实现功能的话,我们就需要使用原生的SQL进行复杂查询,但是它有一个缺陷,不能跨平台,因此我们在主配置文件中已经配置了数据库的“方言”了。
//将所有的记录封装成User对象存进List集合中
SQLQuery sqlQuery = session.createSQLQuery(“SELECT * FROM user”).addEntity(User.class);
List list = sqlQuery.list();
System.out.println(list);
六、beginTransaction方法
=========================
开启事务,返回的是一个事务对象,hibernate规定所有的数据库都必须在事务环境下进行,否者报错!
1、数据库配置
org.hibernate.dialect.OracleDialect
oracle.jdbc.driver.OracleDriver
mine
mine
jdbc:oracle:thin:@127.0.0.1:1521:orcl
true
update
2、其它参数配置
org.hibernate.dialect.OracleDialect
update
true
true