【Hibernate】---Query、Criteria、SQLQuery

一、核心配置文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 5 <hibernate-configuration>
 6     <session-factory>
 7         <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
 8         <property name="hibernate.connection.password">root</property>
 9         <property name="hibernate.connection.url">jdbc:mysql:///test</property>
10         <property name="hibernate.connection.username">root</property>
11         
12         <property name="hibernate.show_sql">true</property>
13         <property name="hibernate.format_sql">true</property>
14         <property name="hibernate.hbm2ddl.auto">update</property>
15         <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
16         
17         <property name="current_session_context_class">thread</property>
18 
19         <mapping resource="com/chinasofti/entity/EUser.hbm.xml"/>
20         
21     </session-factory>
22 </hibernate-configuration>

二、实体类

 1 package com.chinasofti.entity;
 2 
 3 public class EUser {
 4     private int id;
 5     private String username;
 6     private String password;
 7 
 8     public int getId() {
 9         return id;
10     }
11     public void setId(int id) {
12         this.id = id;
13     }
14     public String getUsername() {
15         return username;
16     }
17     public void setUsername(String username) {
18         this.username = username;
19     }
20     public String getPassword() {
21         return password;
22     }
23     public void setPassword(String password) {
24         this.password = password;
25     }
26     @Override
27     public String toString() {
28         return "EUser [id=" + id + ", username=" + username + ", password="
29                 + password + "]";
30     }
31     
32 }

三、映射文件

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 4 <!-- Generated 2017-8-10 10:27:23 by Hibernate Tools 3.4.0.CR1 -->
 5 <hibernate-mapping>
 6     <class name="com.chinasofti.entity.EUser" table="EUSER">
 7         <id name="id" type="int">
 8             <column name="ID" />
 9             <generator class="native" />
10         </id>
11         <property name="username" type="java.lang.String">
12             <column name="USERNAME" />
13         </property>
14         <property name="password" type="java.lang.String">
15             <column name="PASSWORD" />
16         </property>
17     </class>
18 </hibernate-mapping>

四、封装类

 1 package com.chinasofti.entity;
 2 import org.hibernate.Session;
 3 import org.hibernate.SessionFactory;
 4 import org.hibernate.cfg.Configuration;
 5 
 6 public class HibernateUtil {
 7     static Configuration CONFIGURATION = null;
 8     static SessionFactory SESSION_FACTORY = null;
 9     static Session SESSION = null;
10     static{
11         CONFIGURATION = new Configuration();
12         CONFIGURATION.configure();
13         SESSION_FACTORY = CONFIGURATION.buildSessionFactory();
14         SESSION    = SESSION_FACTORY.openSession();
15     }
16     public static SessionFactory getSessionFactory(){
17         return SESSION_FACTORY;
18     }
19     public static Session openSession(){
20         return SESSION;
21     }
22 }

五、测试类

 1 package com.chinasofti.test;
 2 
 3 import java.util.List;
 4 
 5 import org.hibernate.Criteria;
 6 import org.hibernate.Query;
 7 import org.hibernate.SQLQuery;
 8 import org.hibernate.Session;
 9 import org.hibernate.Transaction;
10 import org.junit.Test;
11 
12 import com.chinasofti.entity.EUser;
13 import com.chinasofti.entity.HibernateUtil;
14 
15 public class TestHibernateTestQuery {
16 
17     @Test
18     public void TestQuery(){
19         Session session = HibernateUtil.openSession();
20         Query query = session.createQuery("from EUser");
21         List<EUser> list = query.list();
22         for (EUser eUser : list) {
23             System.out.println(eUser.getUsername());
24         }
25     }
26 
27     
28     @Test
29     public void TestCriteriaQuery(){
30         Session session = HibernateUtil.openSession();
31         Criteria criteria = session.createCriteria(EUser.class);
32         List<EUser> list = criteria.list();
33         for (EUser eUser : list) {
34             System.out.println(eUser.getUsername());
35         }
36     }
37     @Test
38     public void TestSqlQuery(){
39         Session session = HibernateUtil.openSession();
40         //创建SQLQuery对象
41         SQLQuery sQLQuery = session.createSQLQuery("select * from euser");
42         //添加一个实体类
43         sQLQuery.addEntity(EUser.class);
44         List<EUser> list = sQLQuery.list();
45         for (EUser eUsers : list) {
46             System.out.println(eUsers.getUsername());
47         }
48     }
49     
50     
51     @Test
52     public void testRollback(){
53         Session session=null;
54         //注意:先查询再修改
55         Transaction transaction=null;
56         try {
57             session = HibernateUtil.openSession();
58             transaction = session.beginTransaction();
59             EUser user = session.get(EUser.class, 4);
60             //给user对象设置新的值
61             user.setUsername("滚回来");
62             session.save(user);
63             System.out.println(10/0);
64             transaction.commit();
65             //注意:mysql和oracle数据不一样,如果这里操作的是oracle,这里数据就不会变。因为mysql是自动提交的(默认)
66         } catch (Exception e) {
67             // TODO Auto-generated catch block
68             transaction.rollback();
69         }finally{
70             session.close();
71         }
72     }
73 
74     
75 }

之前Hibernate API的使用(Query、Criteria、SQLQuery对象) 没有附代码    今天补上

原文地址:https://www.cnblogs.com/angelye/p/7464810.html