Hibernate的增删改查

工程结构:

代码:

package com.zk.domain;

public class Student {

    private int id;
    private String name;
    private int age;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
    
}
<?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">
<hibernate-mapping> 
    <class name="com.zk.domain.Student" table="t_student"> 
        <id name="id" column="id"> 
            <generator class="identity" /> 
        </id> 
        <property name="name" column="name" /> 
        <property name="age" column="age" /> 
    </class> 
</hibernate-mapping> 
package com.zk.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static SessionFactory sessionFactory = buildSessionFactory();

    public static SessionFactory buildSessionFactory() {
        
        return new Configuration().configure().buildSessionFactory();
    }
    
    public static Session getSession(){
        return sessionFactory.getCurrentSession();
    }
}
package com.zk.main;

import java.util.List;

import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.metamodel.binding.HibernateTypeDescriptor;
import org.hibernate.type.Type;

import com.zk.domain.Student;
import com.zk.util.HibernateUtil;

public class HibernateTest {

    public static void main(String[] args) {
        Student student = new Student();//student属于瞬时状态
        student.setName("zhaoliu");
        student.setAge(29);
        
        //增加
        addStudent(student);
        

        //修改
        student.setAge(30);//student属于持久化状态
        HibernateUtil.getSession().beginTransaction();
        HibernateUtil.getSession().update(student);
        HibernateUtil.getSession().getTransaction().commit();
        
        
        Session session = HibernateUtil.getSession();
        session.beginTransaction();
        
        //查询所有元素
        List<Student> students = session.createQuery("from Student").list();
        for (Student s : students) {
            System.out.println("name="+s.getName()+";age="+s.getAge());
        }
        
        //查询某个元素
        Query query = session.createQuery("from Student as student where student.id=:id");
        query.setParameter("id", 1);
        System.out.println(((Student)(query.uniqueResult())).getName());
        
        //查询数据
        Long count = ((Long)(session.createQuery("select count(*) from Student").uniqueResult())).longValue();
        System.out.println("count="+count);
        

        //删除
        Query deleteQuery = session.createQuery("delete Student as s where s.name=:name");
        deleteQuery.setString("name", "zhangsan");
        int deleteCount = deleteQuery.executeUpdate();
        System.out.println("deleted count="+deleteCount);
        
        session.getTransaction().commit();
    }
    
    public static void addStudent(Student student){
        Session session=null;
        Transaction ts = null;
        try {
            session=HibernateUtil.getSession();
            ts = session.beginTransaction();
            session.save(student);
            session.disconnect();
            ts.commit();
        } catch (Exception e) {
            if(ts!=null)
                ts.rollback();
            e.printStackTrace();
        }finally{
            if(session!=null&&session.isOpen())
                session.close();
        }
        
        
    }
    
}
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <!-- Database connection settings -->
    <property name="connection.driver_class">org.gjt.mm.mysql.Driver</property>
    <property name="connection.url">jdbc:mysql://localhost/test</property>
    <property name="connection.username">root</property>
    <property name="connection.password">123</property>

    <!-- JDBC connection pool (use the built-in) -->
    <property name="connection.pool_size">1</property>

    <!-- SQL dialect -->
    <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>

    <!-- Enable Hibernate's automatic session context management -->
    <property name="current_session_context_class">thread</property>

    <!-- Disable the second-level cache  -->
    <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property>

    <!-- Echo all executed SQL to stdout -->
    <property name="show_sql">true</property>

    <!-- Drop and re-create the database schema on startup -->
    <property name="hbm2ddl.auto">update</property>
    <mapping resource="com/zk/domain/Student.hbm.xml"/>
  </session-factory>
</hibernate-configuration>
原文地址:https://www.cnblogs.com/beenupper/p/2762849.html