zoukankan      html  css  js  c++  java
  • 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必须打开。

  • 相关阅读:
    Linux、Windows网络工程师面试题精选
    (转)JVM 垃圾回收算法
    笔试题学习
    使用Spring的好处
    JAVA保留字与关键字
    经典算法问题的java实现
    详解平均查找长度
    13种排序算法详解
    Grunt
    sublimeText
  • 原文地址:https://www.cnblogs.com/liu-Gray/p/4992608.html
Copyright © 2011-2022 走看看