hibernate3学习笔记(四)增删改查

测试代码:

package com.hb3.pack_01;

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

import com.hb3.pack_01.model.User;

public class BusinessService {

public static void main(String[] args) {Configuration config = new Configuration().configure();SessionFactory sessionFactory = config.buildSessionFactory();Session session = sessionFactory.openSession();//insertUser user = new User();user.setName(“chenyan”);//user.setAge(new Integer(23));Transaction tx = session.beginTransaction();session.save(user);tx.commit();//getuser = (User) session.get(User.class, user.getId());System.out.println(user.getAge());//updateuser.setAge(new Integer(24));tx= session.beginTransaction();session.update(user);tx.commit();

//loaduser = (User) session.load(User.class, user.getId());System.out.println(user.getAge());//deletetx = session.beginTransaction();session.delete(user);tx.commit();session.close();sessionFactory.close();}}执行结果:

11:50:50,750 WARN ConfigurationFactory:127 – No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/D:/Java/MyEclipse%206.0/workspace/hb3demo/ehcache-1.2.3.jar!/ehcache-failsafe.xml11:50:51,156 WARN EhCacheProvider:93 – Could not find configuration [org.hibernate.cache.UpdateTimestampsCache]; using defaults.11:50:51,171 WARN EhCacheProvider:93 – Could not find configuration [org.hibernate.cache.StandardQueryCache]; using defaults.Hibernate: insert into user (name, age) values (?, ?)nullHibernate: update user set name=?, age=? where id=?24

修改User.hbm.xml文件如下:

运行结果如下:

12:46:32,062 WARN ConfigurationFactory:127 – No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/D:/Java/MyEclipse%206.0/workspace/hb3demo/ehcache-1.2.3.jar!/ehcache-failsafe.xml12:46:32,468 WARN EhCacheProvider:93 – Could not find configuration [org.hibernate.cache.UpdateTimestampsCache]; using defaults.12:46:32,500 WARN EhCacheProvider:93 – Could not find configuration [org.hibernate.cache.StandardQueryCache]; using defaults.Hibernate: insert into user (name) values (?)nullHibernate: update user set age=? where id=?24Hibernate: delete from user where id=?

可见:

dynamic-insert和dynamic-update设成true后,分别表示生成的SQL中只插入非空字段以及只修改改变过的字段。

另外,hibernate还提供了saveOrUpdate()方法,因为这个方法很容易出错,故在后续章节着重讲述。

关于查询:

1.package com.hb3.pack_01;2.3.import java.util.Iterator;4.import java.util.List;5.6.import org.hibernate.Criteria;7.import org.hibernate.Query;8.import org.hibernate.Session;9.import org.hibernate.SessionFactory;10.import org.hibernate.cfg.Configuration;11.import org.hibernate.criterion.Restrictions;12.13.import com.hb3.pack_01.model.User;14.15.public class BusinessService {16.17.    public static void main(String[] args) {18.        19.        Configuration config = new Configuration().configure();20.        SessionFactory sessionFactory = config.buildSessionFactory();      21.        Session session = sessionFactory.openSession();22.        23.        Criteria criteria = session.createCriteria(User.class);24.        List<?> users = criteria.list();25.        Iterator<?> iterator = users.iterator();26.        System.out.println("id /t name/age");27.28.        while (iterator.hasNext()) {29.            User user = (User) iterator.next();30.            System.out.println(user.getId() + " /t " + user.getName() + "/" + user.getAge());31.        }32.        33.        //criteria.add(Expression.eq("name", "shenbin"));34.        criteria.add(Restrictions.eq("name", "shenbin"));35.        users = criteria.list();36.        iterator = users.iterator();37.        System.out.println("id /t name/age");38.39.        while (iterator.hasNext()) {40.            User user = (User) iterator.next();41.            System.out.println(user.getId() + " /t " + user.getName() + "/" + user.getAge());42.        }43.        44.        System.out.println("====================================================");45.        46.        Query query = session.createQuery("from User");47.        users = query.list();48.        iterator = users.iterator();49.        System.out.println("id /t name/age");50.51.        while (iterator.hasNext()) {52.            User user = (User) iterator.next();53.            System.out.println(user.getId() + " /t " + user.getName() + "/" + user.getAge());54.        }55.        56.        query = session.createQuery("from User user where user.name like ?");57.        query.setParameter(0, "shenbin");58.        users = query.list();59.        iterator = users.iterator();60.        System.out.println("id /t name/age");61.62.        while (iterator.hasNext()) {63.            User user = (User) iterator.next();64.            System.out.println(user.getId() + " /t " + user.getName() + "/" + user.getAge());65.        }66.67.        session.close();68.        sessionFactory.close();69.    }70.}

执行结果:

13:05:43,031 WARN ConfigurationFactory:127 – No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/D:/Java/MyEclipse%206.0/workspace/hb3demo/ehcache-1.2.3.jar!/ehcache-failsafe.xml13:05:43,453 WARN EhCacheProvider:93 – Could not find configuration [org.hibernate.cache.UpdateTimestampsCache]; using defaults.13:05:43,484 WARN EhCacheProvider:93 – Could not find configuration [org.hibernate.cache.StandardQueryCache]; using defaults.Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from user this_id name/age1 shenbin/292 chenyan/243 chenyan/244 chenyan/24Hibernate: select this_.id as id0_0_, this_.name as name0_0_, this_.age as age0_0_ from user this_ where this_.name=?id name/age1 shenbin/29================================================Hibernate: select user0_.id as id0_, user0_.name as name0_, user0_.age as age0_ from user user0_id name/age1 shenbin/292 chenyan/243 chenyan/244 chenyan/24Hibernate: select user0_.id as id0_, user0_.name as name0_, user0_.age as age0_ from user user0_ where user0_.name like ?id name/age1 shenbin/29

以上分别演示了使用Criteria对SQL的分装以及透过HQL来进行查询。

注意:

代码中如下部分

//criteria.add(Expression.eq(“name”, “shenbin”));criteria.add(Restrictions.eq(“name”, “shenbin”));

在hibernate3.3以后的版本,可能Expression类会被废除,为了保证代码的向后兼容,请使用Restrictions替代。

莫找借口失败,只找理由成功。(不为失败找理由,要为成功找方法)

hibernate3学习笔记(四)增删改查

相关文章:

你感兴趣的文章:

标签云: