使用Hibernate完成对数据简单的增删改查
Hibernate内部也是采用JDBC来访问数据库的 ;
关于hibernate的帮助类请参考:HibernateUt Hibernate帮助类 -----Hibernate_2
操作步骤:
- 获取session
- 开启事务
- 数据操作
- 提交或者回滚事物
- 关闭session
增:
public void test_save(Employee employee){
//1.获取session
Session session= HibernateUtil.currentSession();
try {
//2.开启事务
HibernateUtil.beginTransaction();
//3. 保存对象
session.save(employee);
//4. 提交事务
HibernateUtil.commitTransaction();
} catch (Exception e) {
//4.回滚事物
HibernateUtil.rollerBackTransaction();
}finally{
HibernateUtil.closeSession();
}
}
删:
public void test_delete(Employee employee){
//1.获取session
Session session= HibernateUtil.currentSession();
try {
//2.开启事务
HibernateUtil.beginTransaction();
//3. 删除对象
session.delete(employee);
//4. 提交事务
HibernateUtil.commitTransaction();
} catch (Exception e) {
//4.回滚事物
HibernateUtil.rollerBackTransaction();
}finally{
//5.关闭session
HibernateUtil.closeSession();
}
}
改:
public void test_update(Employee employee){
//1.获取session
Session session= HibernateUtil.currentSession();
try {
//2.开启事务
HibernateUtil.beginTransaction();
//3. 修改对象
session.update(employee);
//session.saveOrUpdate(employee);
//4. 提交事务
HibernateUtil.commitTransaction();
} catch (Exception e) {
//4.回滚事物
HibernateUtil.rollerBackTransaction();
}finally{
//5.关闭session
HibernateUtil.closeSession();
}
}
saveOrUpdate()
同时包含save和update方法的功能,参数是瞬间状态就调用save方法,游离状态就update方法,配置文件增加dynamic-update属性就可以动态更新
查:通过id来查询一个对象
public void test_get(int id){
//1.获取session
Session session= HibernateUtil.currentSession();
try {
//2. 获取对象
Employee employee = (Employee) session.get(Employee.class,id);
Employee employee1 = (Employee) session.load(Employee.class,id);
} catch (Exception e) {
e.printStackTrace();
}finally{
//3.关闭session
HibernateUtil.closeSession();
}
}
通过id查询有两种方式,这里说说这两种方式的区别:
- get()方法 如果根据主键没有查找到数据返回 null
- load方法如果根据主键没有查找到数据抛出异常
- 使用类级别懒加载时 load 方法即使没有加载到数据也不会抛异常 会返回null
- 使用类级别懒加载时 load方法不会执行select * from 表的查询语句 只返回一个代理 只有ID属性其他均为null
- get方法不受类级别懒加载限制