Hibernate简单的保存操作

1.这里面我想先说一下session对象的创建,这个是我们操纵数据库的核心对象,因此首先我们应该获取相应的session对象。

public static Configuration cfg;
    public static SessionFactory factory;
    public static Session session = null;
    static {
        //用来读取hibernate.cfg.xml的配置文件
        cfg = new Configuration().configure();
        //获取工厂
        factory = cfg.buildSessionFactory();
        //创建对应的session对象
        session = factory.openSession();
    }

强调一下,这里之所以都用static可以确保我们只生成一个session,而不会出现重复调用的情况。

2.接着就进行了保存操作,试下了数据对象的保存

public static void insertStudentSelection(String studentID,String teacherID){
        session.beginTransaction();// 开启事务
        Studentselection st=new Studentselection(studentID,teacherID);
        session.save(st);
        session.getTransaction().commit();  //提交事务之后才能保证数据保存成功
        session.close();
    }

这里的开启事务是必须的,应为如果我们没有开启事务和保存事务的话,我们对应的数据库保存操作就会失败,同时建立的session也应当在使用完成之后关闭,否则长期使用下去的话会造成连接池溢出等一系列问题,hibernate没有想jdbc一样有自动提交事务的功能,因此我们必须要进行手动的开启和提交。

3.在进行对象提交的时候我出现了一个问题,就是Duplicate entry ‘abc‘ for key ‘PRIMARY‘错误,这个原因在与我插入的数据的主键与数据库存在的数据重复,因此数据库拒绝插入,下次遇到了就要注意。

4.同是我还对数据库进行查询操作

public static boolean select(Student stu) {
        session.beginTransaction();// 开启事务
        Criteria cre = session.createCriteria(Student.class);
        cre.add(Expression.eq("studentId", stu.getStudentId()));
        cre.add(Expression.eq("password", stu.getPassword()));
        List<Student> student = cre.list();
        if (session.isOpen()) {//关闭事务
            session.close();
        }
        // List<Student> student = session.createCriteria(Student.class).add(
        // Example.create(stu)).list();
        for (Student stu1 : student) {
            System.out.println(stu1);
        }
        //当发现集合为空的时候则证明为查询到相应的数据
        if (student.isEmpty()) {
            return false;
        } else {
            return true;
        }

    }

通过list集合我可以获取返回相应的对象集合,通过foreach语句进行迭代遍历。

时间: 2024-08-08 06:25:25

Hibernate简单的保存操作的相关文章

Hibernate系列(五):利用Hibernate完成简单的CRUD操作

这里利用Hibernate操作数据库完成简单的CRUD操作. 首先,我们需要先写一个javabean: package cn.itcast.domain; import java.util.Date; public class User { private int id; private String name; private Date birthday; public int getId() { return id; } public void setId(int id) { this.id

【SSH三大框架】Hibernate基础第五篇:利用Hibernate完成简单的CRUD操作

这里利用Hibernate操作数据库完成简单的CRUD操作. 首先,我们需要先写一个javabean: package cn.itcast.domain; import java.util.Date; public class User { private int id; private String name; private Date birthday; public int getId() { return id; } public void setId(int id) { this.id

【SSH三大框架】Hibernate基础第五篇:利用Hibernate完毕简单的CRUD操作

这里利用Hibernate操作数据库完毕简单的CRUD操作. 首先.我们须要先写一个javabean: package cn.itcast.domain; import java.util.Date; public class User { private int id; private String name; private Date birthday; public int getId() { return id; } public void setId(int id) { this.id

DSR 系统开发记录(2014年7月25日):Hibernate User Type 更新操作

今天遇到的问题是在 VisitRecord 编辑保存之后,MedicineComment 中的 Medicine 属性就变成 null 了.经过简单的调查之后发现,在做更新操作时,起作用的并不是 UserType 的 nullSafeSet(PreparedStatement st, Object value, int index, SessionImplementor session) 方法,而是 Object replace(Object original, Object target, O

Hibernate对象的CRUD操作

1.  Hibernate对象的CRUD操作 1.1.  对象的三种状态 瞬时(Transient) - 由new操作符创建,且尚未与HibernateSession 关联的对象被认定为瞬时(Transient)的.瞬时(Transient)对象不会被持久化到数据库中,也不会被赋予持久化标识(identifier).如果瞬时(Transient)对象在程序中没有被引用,它会被垃圾回收器(garbage collector)销毁.使用Hibernate Session可以将其变为持久(Persis

基于Metronic的Bootstrap开发框架经验总结(9)--实现Web页面内容的打印预览和保存操作

在前面介绍了很多篇相关的<Bootstrap开发框架>的系列文章,这些内容基本上覆盖到了我这个Bootstrap框架的各个主要方面的内容,总体来说基本达到了一个稳定的状态,随着时间的推移可以会引入一些更好更新的内容进行完善,本篇继续这个系列,主要介绍如何实现Web页面内容的打印预览和保存操作. 1.Web页面打印的问题 在此之前,我一般使用比较好用的LODOP来执行打印的操作,这个在我之前有很多文章都有涉及,这个控件是一个ActiveX的控件,需要下载安装后就可以在页面是进行打印的排版设计,预

T4 生成实体和简单的CRUD操作

<#@ template debug="false" hostspecific="false" language="C#" #> <#@ assembly name="System.Core.dll" #> <#@ assembly name="System.Data.dll" #> <#@ assembly name="System.Data.DataS

Hibernate(八)__级联操作、struts+hibernate+接口编程架构

级联操作 所谓级联操作就是说,当你进行主对象某个操作时,从对象hibernate自动完成相应操作. 比如: Department <---->Student 对象关系,我希望当我删除一个department ,那么就自动删除该部门的所有学生. 再比如: bbs项目主帖<---->回帖 , 把主帖删除,那我们就希望把该主帖的回帖自动删除,这样我们可以使用级联(cascade)操作. 案例:如何配置级联操作,当删除某个部门的时候,我们自动删除其学生. 首先我们在配置文件中修改: <

hibernate分表保存日志

@Service("accessLogService")@Transactionalpublic class LogMessageServiceImpl extends BaseDaoServiceImpl<AccessLogMessage,Long> implements LogMessageService{ @Autowired SplitHibernateInterceptor splitInter;  @Autowired public BaseDaoImpl<