hibernate框架基础Word文档格式.docx
- 文档编号:6718008
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:42
- 大小:54.61KB
hibernate框架基础Word文档格式.docx
《hibernate框架基础Word文档格式.docx》由会员分享,可在线阅读,更多相关《hibernate框架基础Word文档格式.docx(42页珍藏版)》请在冰点文库上搜索。
<
title>
MyJSP'
index.jsp'
startingpage<
/title>
metahttp-equiv="
pragma"
content="
no-cache"
cache-control"
expires"
0"
keywords"
keyword1,keyword2,keyword3"
description"
Thisismypage"
--
linkrel="
stylesheet"
type="
text/css"
href="
styles.css"
-->
/head>
body>
ThisismyJSPpage.<
br>
/body>
/html>
2
DOCTYPEhibernate-configurationPUBLIC
"
-//Hibernate/HibernateConfigurationDTD3.0//EN"
http:
//www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"
hibernate-configuration>
--通常,一个session-factory节点代表一个数据库-->
session-factory>
--1.数据库连接配置-->
propertyname="
hibernate.connection.driver_class"
com.mysql.jdbc.Driver<
/property>
hibernate.connection.url"
jdbc:
mysql:
///hib_demo<
hibernate.connection.username"
root<
hibernate.connection.password"
--
数据库方法配置,hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql
-->
hibernate.dialect"
org.hibernate.dialect.MySQL5Dialect<
--2.其他相关配置-->
--2.1显示hibernate在运行时候执行的sql语句-->
hibernate.show_sql"
true<
--2.2格式化sql
hibernate.format_sql"
--2.3自动建表-->
hibernate.hbm2ddl.auto"
update<
--配置session的创建方式:
线程方式创建session对象-->
hibernate.current_session_context_class"
thread<
--******************【连接池配置】******************-->
--配置连接驱动管理类-->
hibernate.connection.provider_class"
org.hibernate.connection.C3P0ConnectionProvider<
--配置连接池参数信息-->
hibernate.c3p0.min_size"
2<
hibernate.c3p0.max_size"
4<
hibernate.c3p0.timeout"
5000<
hibernate.c3p0.max_statements"
10<
hibernate.c3p0.idle_test_period"
30000<
hibernate.c3p0.acquire_increment"
--******************【二级缓存配置】******************-->
--a.开启二级缓存-->
hibernate.cache.use_second_level_cache"
--b.指定使用哪一个缓存框架(默认提供的)-->
hibernate.cache.provider_class"
org.hibernate.cache.HashtableCacheProvider<
--开启查询缓存-->
hibernate.cache.use_query_cache"
--c.指定哪一些类,需要加入二级缓存-->
class-cacheusage="
read-write"
class="
cn.itcast.b_second_cache.Dept"
/>
read-only"
cn.itcast.b_second_cache.Employee"
--集合缓存[集合缓存的元素对象,也加加入二级缓存]-->
collection-cacheusage="
collection="
cn.itcast.b_second_cache.Dept.emps"
--3.加载所有映射
mappingresource="
cn/itcast/a_hello/Employee.hbm.xml"
/session-factory>
/hibernate-configuration>
3
packagecn.itcast.a_query;
importjava.util.List;
importorg.hibernate.Criteria;
importorg.hibernate.Query;
importorg.hibernate.SQLQuery;
importorg.hibernate.SessionFactory;
importorg.hibernate.cfg.Configuration;
importorg.hibernate.classic.Session;
importorg.hibernate.criterion.Restrictions;
importorg.junit.Test;
publicclassApp_criteria{
privatestaticSessionFactorysf;
static{
sf=newConfiguration()
.configure()
.addClass(Dept.class)
.addClass(Employee.class)//测试时候使用
.buildSessionFactory();
}
/*
*1)Get/load主键查询
2)对象导航查询
3)HQL查询,HibernateQuerylanguagehibernate提供的面向对象的查询语言。
4)Criteria查询,完全面向对象的查询(QueryByCriteria,QBC)
5)SQLQuery,本地SQL查询
*/
//4)Criteria查询,
@Test
publicvoidcriteria(){
Sessionsession=sf.openSession();
session.beginTransaction();
Criteriacriteria=session.createCriteria(Employee.class);
//构建条件
criteria.add(Restrictions.eq("
empId"
12));
//criteria.add(Restrictions.idEq(12));
//主键查询
System.out.println(criteria.list());
session.getTransaction().commit();
session.close();
//5)SQLQuery,本地SQL查询
//不能跨数据库平台:
如果该了数据库,sql语句有肯能要改。
publicvoidsql(){
SQLQueryq=session.createSQLQuery("
SELECT*FROMt_Deptlimit5;
)
.addEntity(Dept.class);
//也可以自动封装
System.out.println(q.list());
}
4
publicclassApp_hql{
publicvoidall(){
//1)主键查询
//Deptdept=(Dept)session.get(Dept.class,12);
//Deptdept=(Dept)session.load(Dept.class,12);
//2)对象导航查询
//System.out.println(dept.getDeptName());
//System.out.println(dept.getEmps());
//3)HQL查询
//注意:
使用hql查询的时候auto-import="
true"
要设置true,
//如果是false,写hql的时候,要指定类的全名
//Queryq=session.createQuery("
fromDept"
);
//System.out.println(q.list());
//a.查询全部列
//OK
select*fromDept"
//NOK,错误,不支持*
selectdfromDeptd"
//OK
//b.查询指定的列【返回对象数据Object[]】
selectd.deptId,d.deptNamefromDeptd"
//c.查询指定的列,自动封装为对象【必须要提供带参数构造器】
selectnewDept(d.deptId,d.deptName)fromDeptd"
//d.条件查询:
一个条件/多个条件andor/betweenand/模糊查询
//条件查询:
占位符
fromDeptdwheredeptName=?
//q.setString(0,"
财务部"
//q.setParameter(0,"
命名参数
fromDeptdwheredeptId=:
myIdordeptName=:
name"
//q.setParameter("
myId"
12);
"
//范围
fromDeptdwheredeptIdbetween?
and?
//q.setParameter(0,1);
//q.setParameter(1,20);
//模糊
fromDeptdwheredeptNamelike?
%部%"
//e.聚合函数统计
selectcount(*)fromDept"
//Longnum=(Long)q.uniqueResult();
//System.out.println(num);
//f.分组查询
//--统计t_employee表中,每个部门的人数
//数据库写法:
SELECTdept_id,COUNT(*)FROMt_employeeGROUPBYdept_id;
//HQL写法
selecte.dept,count(*)fromEmployeeegroupbye.dept"
//g.连接查询
publicvoidjoin(){
//1)内连接【映射已经配置好了关系,关联的时候,直接写对象的属性即可】
fromDeptdinnerjoind.emps"
//2)左外连接
fromDeptdleftjoind.emps"
//3)右外连接
Queryq=session.createQuery("
fromEmployeeerightjoine.dept"
q.list();
//g.连接查询-迫切连接
publicvoidfetch(){
//1)迫切内连接【使用fetch,会把右表的数据,填充到左表对象中!
】
fromDeptdinnerjoinfetchd.emps"
//q.list();
//2)迫切左外连接
fromDeptdleftjoinfetchd.emps"
//HQL查询优化
publicvoidhql_other(){
//HQL写死
fromDeptdwheredeptId<
10"
//HQL放到映射文件中
Queryq=session.getNamedQuery("
getAllDept"
q.setParameter(0,10);
5
importorg.hibernate.ScrollableResults;
importcom.mchange.v2.c3p0.ComboPooledDataSource;
publicclassApp_page{
//分页查询
Queryq=ses
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hibernate 框架 基础