hibernate 原生态 SQL 语句 及 缓存

hibernate执行原生态的sql语句,对于增删改hibernate封装的很好,但是对于查询自身比较喜欢原生态的sql语句,但是如果用hql会很麻烦,可能涉及到一个表对应一个类,但是如果我查询的是一个统计集合 

首先来看一下原生态hql:

Users.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2018-9-14 21:22:54 by Hibernate Tools 3.5.0.Final -->
<hibernate-mapping>
	<class name="com.zking.pojo.Users" table="t_USERS">
		<cache usage="read-write" />
		<id name="uid" type="java.lang.String">
			<column name="UID" />
			<generator class="guid" />
		</id>
		<property name="uname" type="java.lang.String">
			<column name="UNAME" />
		</property>
		<property name="upwd" type="java.lang.String">
			<column name="UPWD" />
		</property>
	</class>
</hibernate-mapping>

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
    	 
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.password">sasa</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/student?characterEncoding=utf-8</property>
		<property name="hibernate.connection.username">root</property>

		<property name="show_sql">true</property>
		<property name="format_sql">true</property>

		<mapping resource="com/zking/pojo/Users.hbm.xml" />
	</session-factory>
</hibernate-configuration>

TempTest.java

package com.zking.test;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.zking.pojo.Users;

public class TempTest {

	private Configuration configuration;
	private SessionFactory sessionFactory;
	private Session session;
	private Transaction transaction;

	// @Before
	// public void before() {
	// configuration = new Configuration().configure();
	// sessionFactory = configuration.buildSessionFactory();
	// session = sessionFactory.openSession();
	// transaction = session.beginTransaction();
	//
	// }
	//
	// @After
	// public void after() {
	// transaction.commit();
	// session.close();
	// sessionFactory.close();
	// }
	//
	// @Test
	// public void Temp() {
	// String sql = "SELECT * FROM t_users where uname='admin'";
	// Users u = session.createNativeQuery(sql, Users.class).getSingleResult();
	// System.out.println(JSON.toJSON(u));
	// }
	//
	// @Test
	// public void Temp1() {
	// String sql = "SELECT * FROM t_users";
	// List<Users> lu = session.createNativeQuery(sql, Users.class).getResultList();
	// System.out.println(JSON.toJSON(lu));
	// }
	//
	// @Test
	// public void Temp2() {
	// String sql = "SELECT * FROM t_users";
	// List<Users> lu = session.createNativeQuery(sql,
	// Users.class).setFetchSize(1).setMaxResults(5).getResultList();
	// System.out.println(JSON.toJSON(lu));
	// }
	//
	// @Test
	// public void Temp3() {
	// String sql = "SELECT * FROM t_users where uname=:uname";
	// List<Users> lu = session.createNativeQuery(sql,
	// Users.class).setParameter("uname", "sasa").getResultList();
	// System.out.println(JSON.toJSON(lu));
	// }
	//
	// @Test
	// public void Temp4() {
	// String sql = "UPDATE t_users SET upwd='sasa' WHERE uid =
	// '817f8ba2-76b7-11e8-918a-54ee75bbb0cd'";
	// int index = session.createNativeQuery(sql).executeUpdate();
	// System.out.println(JSON.toJSON(index));
	// }
	//
	// @Test
	// public void Temp5() {
	// String sql = "delete from t_users where
	// uid='917f8ba2-76b7-11e8-918a-64ee75bbb0cd'";
	// int index = session.createNativeQuery(sql, Users.class).executeUpdate();
	// System.out.println(index);
	// }
	//
	// @Test
	// public void Temp6() {
	// String sql = "INSERT INTO t_users (uid, uname, upwd) VALUES(UUID(), 'wwww',
	// 'wwww') ";
	// int index = session.createNativeQuery(sql).executeUpdate();
	// System.out.println(index);
	// }

	 
}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.zking</groupId>
	<artifactId>hql02</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>hql02 Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>


		<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-core</artifactId>
			<version>5.2.10.Final</version>
		</dependency>

		<!-- fastjsonjax -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.47</version>
		</dependency>


		<!-- 二级缓存jax -->
		<dependency>
			<groupId>net.sf.ehcache</groupId>
			<artifactId>ehcache</artifactId>
			<version>2.10.0</version>
		</dependency>

		<!-- 二级缓存jax -->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-ehcache</artifactId>
			<version>5.2.10.Final</version>
		</dependency>


 
		<!-- 添加mysql的依赖 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.44</version>
		</dependency>
	</dependencies>
	<build>
		<finalName>hql02</finalName>
	</build>
</project>

一级缓存,二级缓存

package com.zking.test;

import java.util.List;

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

import com.alibaba.fastjson.JSON;
import com.zking.pojo.Users;

public class TempTest {

	private Configuration configuration;
	private SessionFactory sessionFactory;
	private Session session;
	private Transaction transaction;

 

	// 一级缓存

	// @Test
	// public void Test7() {
	// configuration = new Configuration().configure();
	// sessionFactory = configuration.buildSessionFactory();
	// session = sessionFactory.openSession();
	//
	// //每次都会生成SQL语句
	// // List<Users> lu = session.createQuery(" from Users").list();
	// // List<Users> lu1 = session.createQuery(" from Users").list();
	// // System.out.println(lu);
	// // System.out.println(lu1);
	//
	//
	// // get 和 load 才会使用(一级缓存(session))
	// Users u = session.load(Users.class, "817f8ba2-76b7-11e8-918a-54ee75bbb0cd");
	// Users u1 = session.load(Users.class, "817f8ba2-76b7-11e8-918a-54ee75bbb0cd");
	// System.out.println(u);
	// System.out.println(u1);
	// session.close();
	// sessionFactory.close();
	// }

	// 二级缓存(SQL语句只会执行一次)
	// @Test
	// public void Temp8() {
	// configuration = new Configuration().configure();
	// SessionFactory sessionFactory1 = configuration.buildSessionFactory();
	// Session session = sessionFactory1.openSession();
	// Users u = session.load(Users.class, "817f8ba2-76b7-11e8-918a-54ee75bbb0cd");
	// System.out.println(u);
	// session.close();
	// Session session1 = sessionFactory1.openSession();
	// Users u1 = session1.load(Users.class,
	// "817f8ba2-76b7-11e8-918a-54ee75bbb0cd");
	// System.out.println(u1);
	// session.close();
	// }

}
扫描二维码关注公众号,回复: 4786798 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_42247220/article/details/82709801