hibernate 增删改

1.增加

public class HibernateTest
{
    
    private static SessionFactory sessionFactory;//sessionFactroy只使用一次,建立一个
    static 
    {
        try
        {
            //通过configure(),读取hibernate.cfg.xml,再配置与数据可建立联系
            sessionFactory = new Configuration().configure().buildSessionFactory();
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
        
    }
    public static void main(String[] args) throws Exception
    {
        Person person = new Person();
    
        person.setUsername("zhangsan");
        person.setPassword("lisi");
        person.setTelphone(23432);
        person.setGender('F');
        person.setGraduation(true);
        person.setBrithday(new java.sql.Date(new java.util.Date().getTime()));
        
        
        person.setMarryTime(new Timestamp(new java.util.Date().getTime()));
        
        
        
        InputStream is = new FileInputStream("C:/Users/liule/Desktop/新建文本文档 (2).txt");
        int length = is.available();
        byte[] buffer = new byte[length];
        is.read(buffer);
        person.setFile(buffer);
        
        
        Session session = sessionFactory.openSession();    //通过session可以控制数据库的信息
        Transaction ts = null;
        try
        {
            session.save(person);
            ts = session.beginTransaction();
            ts.commit();
        }
        catch(Exception ex)
        {
            if(null != ts)
            {
                ts.rollback();
            }
        }
        finally
        {
            session.close();
        }
    }

2.查询

Session session = sessionFactory.openSession();
        Transaction tx = null;
        try
        {
                    tx = session.beginTransaction();
                    Query query = session.createQuery("from Person as p order by p.username asc").setFirstResult(2).setMaxResults(2);

//按照SQL语言进行查找,username的升序进行排序.并且从第三条记录(起始为0)开始,取出两条记录 List<Person> list = (List<Person>)query.list(); for(java.util.Iterator<Person> it = list.iterator();it.hasNext();) { Person person = it.next(); System.out.println(person.getUsername()); System.out.println(person.getId()); System.out.println("------------------------"); byte[] buffer = person.getFile(); OutputStream os = new FileOutputStream("c:/"+person.getId()+".txt"); os.write(buffer); os.close(); }

3.修改,load方法是更加精确的查询。createQuery是使用sql语句进行查询

tx = session.beginTransaction();
            Person person =(Person)session.load(Person.class,new Long(1));
            
            System.out.println(person.getId());//执行这一条的时候,只是返回一个代理,没有使用SQL语言进行查询
            System.out.println(person.getUsername());//执行这一天的时候,使用了SQL语言,进行了查询
            
            person.setUsername("wangwu");
            person.setUsername("SADAS");//设置两次的话,后面的会把前面设置的覆盖掉
            
            session.update(person);

4.删除

tx = session.beginTransaction();
            Query query = session.createQuery("from Person");
            
            java.util.Iterator it = query.iterate();
            while(it.hasNext())
            {
                session.delete(it.next());
            }

5.对于query接口的list()方法与iterator()方法来说。都可以实现获取查询的对象,但list对象返回的每一个方法都是完整的(对象中的每一个属性都被表中的字段填充上),而iterator方法返回的对象中仅仅包含了主键值(标示符),只有当你对iterator中的对象进行操作时,hibernate才会向数据库再次发送SQL语句来获取该对象的属性值。

6.iterator()方法,也就是延时加载,再使用的时候才能加载出来,且使用时session必须打开。

原文地址:https://www.cnblogs.com/liu-Gray/p/4992608.html