一. 三大框架

Hibernate

1.安装hibernate插件至ecilpse

2.进行配置

2.1 主配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据库连接 -->
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.password">laoer123</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
<property name="hibernate.connection.username">test0816</property>
<!-- 数据库方案 -->
<property name="hibernate.default_schema">TEST0816</property>
<!-- 数据库方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<!-- 调试 -->
<property name="hibernate.format_sql">true</property>
<property name="hibernate.show_sql">true</property>
<!-- 自动建表方式 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 映射文件 -->
<mapping resource="com/hanqi/entity/User.hbm.xml"/>
<mapping resource="com/hanqi/entity/Student.hbm.xml"/>
<mapping resource="com/hanqi/entity/Person.hbm.xml"/>
<mapping resource="com/hanqi/entity/Course.hbm.xml"/>
<mapping resource="com/hanqi/entity/Teacher.hbm.xml"/>
</session-factory>
</hibernate-configuration>

2.21 创建持久化类

package com.hanqi.entity;

import java.util.Date;

//实体化类
//不要使用final修饰
public class User { private Integer userID;
private String userName;
private Date birthday;
private Double money;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getUserID() {
return userID;
}
public void setUserID(Integer userID) {
this.userID = userID;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Double getMoney() {
return money;
}
public void setMoney(Double money) {
this.money = money;
}
// 必须提供无参的构造方法
//需要用到反射
public User() {
super();
}
public User(Integer userID, String userName) {
super();
this.userID = userID;
this.userName = userName;
}
@Override
public String toString() {
return "User [userID=" + userID + ", userName=" + userName + ", birthday=" + birthday + ", money=" + money
+ ", password=" + password + "]";
} }

2.22 创建持久化类的映射文件

创建方法 new - other-hibernate-Mapping file

<?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 2016-11-7 14:40:01 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="com.hanqi.entity.User" table="T_USER">
<id name="userID" type="int">
<column name="USER_ID" />
<generator class="native" />
</id>
<property name="userName" type="java.lang.String">
<column name="USER_NAME" length="20" not-null="true" unique="true"/>
</property>
<property name="birthday" type="java.util.Date">
<column name="BIRTHDAY" sql-type="DATE"/>
</property>
<property name="money" type="java.lang.Double">
<column name="MONEY" sql-type="NUMBER" default="0" length="8" scale="2"/>
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" length="10"></column>
</property> </class>
</hibernate-mapping>

3 测试用例的用法

package com.hanqi.test;

import java.util.Date;
//import java.util.List;
import java.util.List; //import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; import com.hanqi.entity.Course;
import com.hanqi.entity.Student;
import com.hanqi.entity.Teacher;
import com.hanqi.entity.User; public class Test01 { private SessionFactory sf = null;
private Session se=null;
private Transaction ts=null;
// 在测试用例方法被执行之前,自动执行的方法
// 一般用来初始化公用的对象
//前置方法 @Before
public void init()
{
//1 获取配置文件
Configuration cfg= new Configuration().configure();
//2 注册配置
ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(cfg.getProperties()).build();
//3 获取SessionFactory(相当于JDBC的连接)
sf=cfg.buildSessionFactory(sr);
System.out.println(sf);
//4 产生Session
se= sf.openSession();
//5 启动事务
ts=se.beginTransaction();
}
//后置方法
//一般用来释放资源
@After
public void destory()
{
//7 提交事务
ts.commit();
//8 释放资源
se.close();
sf.close();
}
//测试Hibernate连接数据库
@Test
public void test() { //6 操作数据库
//添加数据 //实例化的新对象,处于临时状态
User u1 = new User();
u1.setBirthday(new Date());
u1.setMoney(2000.0);
u1.setPassword("123456");
u1.setUserName("测试1");
//u1.setUserID(4);//自然主键 assigned //保存数据
//通过save方法,把对象从临时状态转成持久化状态
se.save(u1);
System.out.println(u1); }
//测试查询的方法
@Test
public void test1()
{
// 查询数据
// 提供2个参数
// 需要返回哪一个持久化类的实例
// 实例的标识(数据的主键值)
//通过Session的get方法获得的对象处于持久化状态
User u2=(User)se.get(User.class, 3);
u2.setUserName("修改的");
System.out.println(u2);
//删除
se.delete(u2); //使持久化对象进入删除状态
}

4 反向工程的用法

4.1 创建Hibernate Console Configuration

目的是创建数据库连接一般选择项目的配置文件hibernate.cfg.xml获取连接信息

4.2 创建反向的配置文件 hibernate.reveng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-reverse-engineering PUBLIC "-//Hibernate/Hibernate Reverse Engineering DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-reverse-engineering-3.0.dtd" > <hibernate-reverse-engineering>
<table-filter match-name="STUDENT"/>
<table-filter match-name="PERSON"/>
<table-filter match-name="TEACHER"/>
<table-filter match-name="COURSE"/>
</hibernate-reverse-engineering>

4.3配置Code Generation 并运行

1.连接数据库的Console Configuration
2.反向配置文件 .reveng.xml
3.要输出的项目目录
4.一般是项目的src目录
5.要生成的包名
6.要导出的文件类型
7.持久化类
8.映射文件

4.4 不要忘记在主配置文件中去配置一下

5 HQL Hibernate Query Language 一种面向对象的查询语句

public void test5()
{
//使用HQL
//创建Query对象
// Query qu=se.createQuery("from User where userID < ? and userName = :uname order by userID desc");
// //设置占位符
// qu.setInteger(0, 6);
// //按照参数名方式设置
// qu.setString("uname", "测试1");
// //执行查询
// List<User>lu=qu.list();
// //方法链调用
// lu = se.createQuery("from User where userID < ?")
// .setInteger(0, 6)
// .list();
// for(User u:lu)
// {
// System.out.println(u);
// }
//
se.createQuery("from User where userID < ? and userName = :uname order by userID desc")
.setInteger(0, 6)
.setString("uname", "测试1")
.list()
.stream()
.forEach(System.out::println); }
//测试分页
@Test
public void test6()
{
// 设置开始行号:页码 =2
// (页码 -1) * 每页行数
@SuppressWarnings("unchecked")
List<User> lu = se.createQuery("from User order by userID")
.setMaxResults(5)
.setFirstResult(5)
.list();
for(User u:lu)
{
System.out.println(u);
}
}
//分组查询
@SuppressWarnings("unchecked")
@Test
//单列不需要数组
//多列用数组表示
public void test7()
{
List<Object[]>lo=se.createQuery("select userName,count(1) from User group by userName")
.list(); for(Object[] o:lo)
{
System.out.println(o[0]+" "+o[1]);
}
}
//测试投影查询
@SuppressWarnings("unchecked")
@Test
public void test8()
{
List<Object[]>lo=se.createQuery("select userID,userName from User")
.list();
for(Object[] obj :lo)
{
System.out.println(obj[0]+" "+obj[1]);
}
System.out.println("******************************");
// 返回持久化对象的集合
List<User> lu = se.createQuery("select new User(userID,userName) from User")
.list();
for(User u:lu)
{
System.out.println(u); se.update(u);
}
}
//测试新的类
@Test
public void test9()
{
Student st = (Student)se.get(Student.class, "108");
System.out.println(st);
}
//测试多对一
@Test
public void test10()
{
Course cs = (Course)se.get(Course.class, "9-888"); System.out.println(cs);
}
//测试一对多
@Test
public void test11()
{
Teacher te=(Teacher)se.get(Teacher.class, "831");
System.out.println(te);
se.delete(te);
}

Hibernate的配置文件以及用法的更多相关文章

  1. 2.一起来学hibernate之配置文件1与持久化对象

    学框架,配置都是不可少的,有了配置,框架才知道我们想做什么,才知道如何去执行我们需要的操作! hibernate的配置文件,总体来说分为两个部分: 1.主配置文件hibernate.cfg.xml文件 ...

  2. eclipse 新建 maven 项目 添加 spring hibernate 的配置文件 详情

    主要配置文件 pom.xml 项目的maven 配置文件 管理项目所需 jar 依赖支持 web.xml 项目的总 配置文件  :添加 spring和hibernate 支持 applicationC ...

  3. Hibernate常用配置文件详解

    本文转载自:http://blog.csdn.net/csh624366188/article/details/7578939 初学hibernate的童鞋,刚开应该都有这种感觉,hibernate的 ...

  4. Hibernate的配置文件解析

    配置mybatis.xml或hibernate.cfg.xml报错: <property name="connection.url">jdbc:mysql://loca ...

  5. Hibernate之深入Hibernate的配置文件

    1.创建Configuration类的对象 Configuration类的对象代表了应用程序到SQL数据库的映射配置.Configuration类的实例对象,提供一个buildSessionFacto ...

  6. Hibernate之配置文件

    可持久化对象有以下三种状态: 临时状态(Transient):对象在保存进数据库之前为临时状态,这时数据库中没有该对象的信息,如果没有持久化,程序退出后临时状态的对象信息将会丢失.随时可能被垃圾回收器 ...

  7. spring(一)--spring/springmvc/spring+hibernate(mybatis)配置文件

    这篇文章用来总结一下spring,springmvc,spring+mybatis,spring+hibernate的配置文件 1.web.xml 要使用spring,必须在web.xml中定义分发器 ...

  8. Hibernate 注解中CascadeType用法汇总

    这两天,参加一个课程设计,同时这个项目又作为一个模块镶嵌到其他项目中,考虑如此,应与原先的架构相同,因牵扯到留言和相互@功能,故数据库之间OneToOne,OneToMany,ManyToMany之风 ...

  9. Hibernate学习---QBC_hibernate完整用法

    QBC(Query By Criteria) API提供了检索对象的另一种方式,它主要有Criteria接口.Criterion接口和Expresson类组成,它支持在运行时动态生成查询语句. Hib ...

随机推荐

  1. Python中optionParser模块的使用方法[转]

    本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...

  2. jsonpath

    1. java 类库 jayway/JsonPath maven 使用方法 <dependency> <groupId>com.jayway.jsonpath</grou ...

  3. Mina 资料

    http://blog.csdn.net/cutesource/article/category/631854 http://wslfh2005.iteye.com/ http://www.cnblo ...

  4. struts1&&Hibernate Demo1

    用struts1和Hibernate实现简单登录案例 主要思路:通过用户名name验证 如果一致则验证成功. 附上源码: 1.建立student表,这里使用的是mysql数据库,以下为该表的DDL: ...

  5. 约瑟夫环(Josehpuse)的模拟

    约瑟夫环问题: 0,1,...,n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字,求出这个圆圈里剩下的最后一个数字. 这里给出以下几种解法, 1.用队列模拟 每次将前m-1个元 ...

  6. url中参数以及callback后面的串

    最近在写一个京东的爬虫,在模拟其http请求访问评论时,遇到http://club.jd.com/productpage/p-1419543-s-0-t-0-p-0.html?callback=jQu ...

  7. 51nod 1290 Counting Diff Pairs 莫队 + bit

    一个长度为N的正整数数组A,给出一个数K以及Q个查询,每个查询包含2个数l和r,对于每个查询输出从A[i]到A[j]中,有多少对数,abs(A[i] - A[j]) <= K(abs表示绝对值) ...

  8. C语言操作mysql

    php中 mysqli, pdo 可以用 mysqlnd 或 libmysqlclient 实现 前者 从 php 5.3.0起已内置到php中, 并且支持更多的特性,推荐用 mysqlnd mysq ...

  9. 异步编程 z

    走进异步编程的世界 - 开始接触 async/await 序 这是学习异步编程的入门篇. 涉及 C# 5.0 引入的 async/await,但在控制台输出示例时经常会采用 C# 6.0 的 $&qu ...

  10. 整合Apache+PHP教程

    首先修改Apache的配置文件,让Apache支持解析PHP文件,Apache配置文件在Apache安装目录的conf目录下的httpd.conf,打开此文件, 找到#LoadModule,在这个下面 ...