hibernate框架基础.docx

上传人:b****8 文档编号:10835884 上传时间:2023-02-23 格式:DOCX 页数:42 大小:54.61KB
下载 相关 举报
hibernate框架基础.docx_第1页
第1页 / 共42页
hibernate框架基础.docx_第2页
第2页 / 共42页
hibernate框架基础.docx_第3页
第3页 / 共42页
hibernate框架基础.docx_第4页
第4页 / 共42页
hibernate框架基础.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

hibernate框架基础.docx

《hibernate框架基础.docx》由会员分享,可在线阅读,更多相关《hibernate框架基础.docx(42页珍藏版)》请在冰豆网上搜索。

hibernate框架基础.docx

hibernate框架基础

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>

<%

Stringpath=request.getContextPath();

StringbasePath=request.getScheme()+":

//"+request.getServerName()+":

"+request.getServerPort()+path+"/";

%>

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

">

MyJSP'index.jsp'startingpage

--

-->

ThisismyJSPpage.

2

DOCTYPEhibernate-configurationPUBLIC

"-//Hibernate/HibernateConfigurationDTD3.0//EN"

"http:

//www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

--通常,一个session-factory节点代表一个数据库-->

--1.数据库连接配置-->

com.mysql.jdbc.Driver

jdbc:

mysql:

///hib_demo

root

root

--

数据库方法配置,hibernate在运行的时候,会根据不同的方言生成符合当前数据库语法的sql

-->

org.hibernate.dialect.MySQL5Dialect

--2.其他相关配置-->

--2.1显示hibernate在运行时候执行的sql语句-->

true

--2.2格式化sql

true-->

--2.3自动建表-->

update

--配置session的创建方式:

线程方式创建session对象-->

thread

--******************【连接池配置】******************-->

--配置连接驱动管理类-->

org.hibernate.connection.C3P0ConnectionProvider

--配置连接池参数信息-->

2

4

5000

10

30000

2

--******************【二级缓存配置】******************-->

--a.开启二级缓存-->

true

--b.指定使用哪一个缓存框架(默认提供的)-->

org.hibernate.cache.HashtableCacheProvider

--开启查询缓存-->

true

--c.指定哪一些类,需要加入二级缓存-->

--集合缓存[集合缓存的元素对象,也加加入二级缓存]-->

--3.加载所有映射

-->

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语句有肯能要改。

@Test

publicvoidsql(){

Sessionsession=sf.openSession();

session.beginTransaction();

SQLQueryq=session.createSQLQuery("SELECT*FROMt_Deptlimit5;")

.addEntity(Dept.class);//也可以自动封装

System.out.println(q.list());

session.getTransaction().commit();

session.close();

}

}

4

packagecn.itcast.a_query;

importjava.util.List;

importorg.hibernate.Query;

importorg.hibernate.SessionFactory;

importorg.hibernate.cfg.Configuration;

importorg.hibernate.classic.Session;

importorg.junit.Test;

publicclassApp_hql{

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查询

*/

@Test

publicvoidall(){

Sessionsession=sf.openSession();

session.beginTransaction();

//1)主键查询

//Deptdept=(Dept)session.get(Dept.class,12);

//Deptdept=(Dept)session.load(Dept.class,12);

//2)对象导航查询

//Deptdept=(Dept)session.get(Dept.class,12);

//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.查询全部列

//Queryq=session.createQuery("fromDept");//OK

//Queryq=session.createQuery("select*fromDept");//NOK,错误,不支持*

//Queryq=session.createQuery("selectdfromDeptd");//OK

//System.out.println(q.list());

//b.查询指定的列【返回对象数据Object[]】

//Queryq=session.createQuery("selectd.deptId,d.deptNamefromDeptd");

//System.out.println(q.list());

//c.查询指定的列,自动封装为对象【必须要提供带参数构造器】

//Queryq=session.createQuery("selectnewDept(d.deptId,d.deptName)fromDeptd");

//System.out.println(q.list());

//d.条件查询:

一个条件/多个条件andor/betweenand/模糊查询

//条件查询:

占位符

//Queryq=session.createQuery("fromDeptdwheredeptName=?

");

//q.setString(0,"财务部");

//q.setParameter(0,"财务部");

//System.out.println(q.list());

//条件查询:

命名参数

//Queryq=session.createQuery("fromDeptdwheredeptId=:

myIdordeptName=:

name");

//q.setParameter("myId",12);

//q.setParameter("name","财务部");

//System.out.println(q.list());

//范围

//Queryq=session.createQuery("fromDeptdwheredeptIdbetween?

and?

");

//q.setParameter(0,1);

//q.setParameter(1,20);

//System.out.println(q.list());

//模糊

//Queryq=session.createQuery("fromDeptdwheredeptNamelike?

");

//q.setString(0,"%部%");

//System.out.println(q.list());

//e.聚合函数统计

//Queryq=session.createQuery("selectcount(*)fromDept");

//Longnum=(Long)q.uniqueResult();

//System.out.println(num);

//f.分组查询

//--统计t_employee表中,每个部门的人数

//数据库写法:

SELECTdept_id,COUNT(*)FROMt_employeeGROUPBYdept_id;

//HQL写法

//Queryq=session.createQuery("selecte.dept,count(*)fromEmployeeegroupbye.dept");

//System.out.println(q.list());

session.getTransaction().commit();

session.close();

}

//g.连接查询

@Test

publicvoidjoin(){

Sessionsession=sf.openSession();

session.beginTransaction();

//1)内连接【映射已经配置好了关系,关联的时候,直接写对象的属性即可】

//Queryq=session.createQuery("fromDeptdinnerjoind.emps");

//2)左外连接

//Queryq=session.createQuery("fromDeptdleftjoind.emps");

//3)右外连接

Queryq=session.createQuery("fromEmployeeerightjoine.dept");

q.list();

session.getTransaction().commit();

session.close();

}

//g.连接查询-迫切连接

@Test

publicvoidfetch(){

Sessionsession=sf.openSession();

session.beginTransaction();

//1)迫切内连接【使用fetch,会把右表的数据,填充到左表对象中!

//Queryq=session.createQuery("fromDeptdinnerjoinfetchd.emps");

//q.list();

//2)迫切左外连接

Queryq=session.createQuery("fromDeptdleftjoinfetchd.emps");

q.list();

session.getTransaction().commit();

session.close();

}

//HQL查询优化

@Test

publicvoidhql_other(){

Sessionsession=sf.openSession();

session.beginTransaction();

//HQL写死

//Queryq=session.createQuery("fromDeptdwheredeptId<10");

//HQL放到映射文件中

Queryq=session.getNamedQuery("getAllDept");

q.setParameter(0,10);

System.out.println(q.list());

session.getTransaction().commit();

session.close();

}

}

5

packagecn.itcast.a_query;

importjava.util.List;

importorg.hibernate.Criteria;

importorg.hibernate.Query;

importorg.hibernate.ScrollableResults;

importorg.hibernate.SessionFactory;

importorg.hibernate.cfg.Configuration;

importorg.hibernate.classic.Session;

importorg.junit.Test;

importcom.mchange.v2.c3p0.ComboPooledDataSource;

publicclassApp_page{

privatestaticSessionFactorysf;

static{

sf=newConfiguration()

.configure()

.addClass(Dept.class)

.addClass(Employee.class)//测试时候使用

.buildSessionFactory();

}

//分页查询

@Test

publicvoidall(){

Sessionsession=sf.openSession();

session.beginTransaction();

Queryq=ses

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1