关于Hibernate中的普通增删改查

一:关于hibernate的介绍

Hibernate:开放源代码的对象关系映射框架

优点:

1,使用面向对象方式来操作数据库;

2,屏蔽了不同的数据源,不用考虑数据库之间的差距,使应用程序得到更好的移植性操作;

3,对SQL进行了大量的封装,使开发者不需要写大量的Sql语句;

4,提供了缓存机制(内存:开辟了一块空间专门用来储存);

5,提供了更完整的事务上的支持,对数据的安全性提高了保障;

缺点:

1,在复杂的关联查询上,不够灵活,仍然需要手写SOL

2,更加消耗内存,因为每一次使用数据库,都要就行一个连接,消耗内存

3,数据调试和程序调试容易出问题,对数据建模要求比较高

二:Hibernate中的session

也是会话,保存用户连接数据库之后进行的操作

Spring中的session:他最大的应用,就是在web上保存用户的登陆信息,或者浏览添加到数据库的信息,他的生命周期也是一次会话,在系统中,默认的时间长度为半小时,当他的生命周期结束,该会话结束,他所保存的信息如果不存到数据库中,就会销毁

sessionFactory:会话工厂(里面有很多的会话)

在增删改查之前打开事务,因为这三项 会对数据库进行修改,如果因为外界因素,使得在修改数据的过程中,没有修改完成的时候断开,这个事务就会回滚,保证了事务的完整性,也使数据变得安全。

数据的三种状态(瞬时,游离,持久)

在这里要强调的一点是:在我们save数据之后,他只是将数据保存到了session 中,如果不进行提交,数据库中是不会用这条数据的。只有在我们提交之后,该条数据才会成为持久性,并且可以在数据库对它进行增删改。

三:举一个实例

首先我们进行数据库的配置

1,在mysql中创建一个表格:user()他的属性有name,password,sex

创建语言为:create table user(id int(10) auto_increment primary kry,name varchar(40),password varchar(40),sex varchar(40));

建立好此表之后,我们打开Myeclipse,打开windows->oPen prespetive ->MyEclipse Database Explorer

空白处点击new,


入图所示,因为是自己画的,比较乱

测试连接上之后,我们就可以看到刚才所建的表了;

然后,我们建立一个webproject,命名为TestHibernate

在src下建立一个包,entity(我们所要放的实体类)

然后回到我们的数据库,具体操作为:mysql(我所命名的之前的建立连接的名称)->TABLE->user(刚才所建表格)->右键->Hibernate Reverse Engineering->(在弹出的表格中)->只需修改Java Package:entity->next->next->finish;完成

这样,我们就会在我们刚才所传创建的entity中看见user,以及一个user.hbm.xml;这时,所有的都已经配置完成

二:具体的实现类

我们再建一个 包(方便理解)UserDao

建一个类为UserDao

package dao;


import java.util.Iterator;


import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;


import entity.User;


public class UserDao {
/**
* 保存用户
*/


     public void saveUser(){
    //表示加载配置文件
    Configuration cfg=new Configuration().configure();
    //建立sessionFactory
    SessionFactory factory=cfg.buildSessionFactory();
    //获取session
    Session session=factory.openSession();
    try {
     
        //打开事务
        session.beginTransaction();
        //业务操作
        User user=new User();
        user.setName("zhangsan1");
        user.setPassword("124451");
        user.setSex("男");
        //未执行事务之前,数据处于游离状态
        session.save(user);
        System.out.println(user);
        //提交事务
        session.getTransaction().commit();
} catch (Exception e) {
// TODO: handle exception
//如果抛出异常,事务回滚
session.getTransaction().rollback();
}
    finally{
    //关闭session
    //session.close();
    }
     
     }
     //删除用户
     public void delect(){
    //表示加载配置文件
    Configuration cfg=new Configuration().configure();
    //建立sessionFactory
    SessionFactory factory=cfg.buildSessionFactory();
    //获取session
    Session session=factory.openSession();
    try {
     
        //打开事务
        session.beginTransaction();
        //业务操作
        User user=new User();
        user.setId(22);
        int i=user.getId();
        user=(User) session.get(User.class, 20);
        System.out.println(user);
//         user.setId(20);
//         user.setName("zhangsan1");
//         user.setPassword("124451");
//         user.setSex("男");
        //未执行事务之前,数据处于游离状态
//         System.out.println(user.getId());
        session.delete(user);
        //session.delete(i);
         
        //提交事务
        session.getTransaction().commit();
} catch (Exception e) {
// TODO: handle exception
//如果抛出异常,事务回滚
session.getTransaction().rollback();
}
    finally{
    //关闭session
    //session.close();
    }
     }


     public void update(){
    Configuration cfg=new Configuration().configure();
    //建立sessionFactory
    SessionFactory factory=cfg.buildSessionFactory();
    //获取session
    Session session=factory.openSession();
    try {
     
        //打开事务
        session.beginTransaction();
        //业务操作
        User user=new User();
        user.setId(35);
        user.setName("zhangsan7");
          user.setPassword("12567");
            user.setSex("女");
        //未执行事务之前,数据处于游离状态
        session.update(user);
        System.out.println(user);
        //提交事务
        session.getTransaction().commit();
} catch (Exception e) {
// TODO: handle exception
//如果抛出异常,事务回滚
session.getTransaction().rollback();
}
    finally{
    //关闭session
    session.close();
    }
     }
     public void select(){
    //表示加载配置文件
    Configuration cfg=new Configuration().configure();
    //建立sessionFactory
    SessionFactory factory=cfg.buildSessionFactory();
    //获取session
    Session session=factory.openSession();
    try {
     
        //打开事务
        session.beginTransaction();
        //业务操作
        User user=new User();
        user=(User) session.get(User.class, 20);
//         user.setName("zhangsan1");
//         user.setPassword("124451");
//         user.setSex("男");
        //未执行事务之前,数据处于游离状态
        //session.save(user);
        System.out.println(user);
        //提交事务
        session.getTransaction().commit();
} catch (Exception e) {
// TODO: handle exception
//如果抛出异常,事务回滚
session.getTransaction().rollback();
}
    finally{
    //关闭session
    //session.close();
    }
     }
     public void selectAll(){
    //表示加载配置文件
    Configuration cfg=new Configuration().configure();
    //建立sessionFactory
    SessionFactory factory=cfg.buildSessionFactory();
    //获取session
    Session session=factory.openSession();
    try {
     
        //打开事务
        session.beginTransaction();
        //业务操作
        //User user=new User();
        //user=(User) session.get(User.class, 20);
//         user.setName("zhangsan1");
//         user.setPassword("124451");
//         user.setSex("男");
        //未执行事务之前,数据处于游离状态
        //session.save(user);
        Iterator user= session.createQuery("from user name where name='zhangsan'").list().iterator();
        // System.out.println(user);
        while (user.hasNext()) {
User user1=(User) user.next();
user1.setName("ceshi");

//System.out.println(user1);
}
        // System.out.println(user);
        //提交事务
        session.getTransaction().commit();
} catch (Exception e) {
// TODO: handle exception
//如果抛出异常,事务回滚
session.getTransaction().rollback();
}
    finally{
    //关闭session
    //session.close();
    }
     }
     
     public static void main(String[] args) throws Exception {
UserDao user =new UserDao();
//user.saveUser();
// user.delect();
//user.TestDelete();
//user.TestInsert();
//user.update();
//user.delect();
//user.select();
//user.delect();
user.selectAll();
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值