一个helloword hibernate配置以及查询
搭建一个Hibernate环境,开发步骤:
1. 下载源码
版本:hibernate-distribution-3.6.0.Final
2. 引入jar文件
hibernate3.jar核心 + required 必须引入的(6个) + jpa 目录 + 数据库驱动包
3. 写对象以及对象的映射
Employee.java 对象
Employee.hbm.xml 对象的映射 (映射文件)
4. src/hibernate.cfg.xml 主配置文件
-à 数据库连接配置
-à 加载所用的映射(*.hbm.xml)
5. App.java 测试
|
Employee.java 对象 |
|
//一、 对象 public class Employee { private int empId; private String empName; private Date workDate; } |
|
Employee.hbm.xml 对象的映射 |
|
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.itcast.a_hello"> <class name="Employee" table="employee"> <!-- 主键 ,映射--> <id name="empId" column="id"> <generator class="native"/> </id> <!-- 非主键,映射 --> <property name="empName" column="empName"></property> <property name="workDate" column="workDate"></property> </class> </hibernate-mapping> |
|
hibernate.cfg.xml 主配置文件 |
|
<!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.url">jdbc:mysql:///hib_demo</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="hibernate.show_sql">true</property> <!-- 加载所有映射 --> <mapping resource="cn/itcast/a_hello/Employee.hbm.xml"/> </session-factory> </hibernate-configuration> |
|
App.java 测试类 |
|
public class App { @Test public void testHello() throws Exception { // 对象 Employee emp = new Employee(); emp.setEmpName("班长"); emp.setWorkDate(new Date()); // 获取加载配置文件的管理类对象 Configuration config = new Configuration(); config.configure(); // 默认加载src/hibenrate.cfg.xml文件 // 创建session的工厂对象 SessionFactory sf = config.buildSessionFactory(); // 创建session (代表一个会话,与数据库连接的会话) Session session = sf.openSession(); // 开启事务 Transaction tx = session.beginTransaction(); //保存-数据库 session.save(emp); // 提交事务 tx.commit(); // 关闭 session.close(); sf.close(); } } |
Hibernate Api|-- Configuration 配置管理类对象 config.configure(); 加载主配置文件的方法(hibernate.cfg.xml) 默认加载src/hibernate.cfg.xml config.configure(“cn/config/hibernate.cfg.xml”); 加载指定路径下指定名称的主配置文件 config.buildSessionFactory(); 创建session的工厂对象 |-- SessionFactory session的工厂(或者说代表了这个hibernate.cfg.xml配置文件) sf.openSession(); 创建一个sesison对象 sf.getCurrentSession(); 创建session或取出session对象 |--Session session对象维护了一个连接(Connection), 代表了与数据库连接的会话。 Hibernate最重要的对象: 只用使用hibernate与数据库操作,都用到这个对象 session.beginTransaction(); 开启一个事务; hibernate要求所有的与数据库的操作必须有事务的环境,否则报错! 更新: session.save(obj); 保存一个对象 session.update(emp); 更新一个对象 session.saveOrUpdate(emp); 保存或者更新的方法: à没有设置主键,执行保存; à有设置主键,执行更新操作; à如果设置主键不存在报错! 主键查询: session.get(Employee.class, 1); 主键查询 session.load(Employee.class, 1); 主键查询 (支持懒加载) HQL查询: HQL查询与SQL查询区别: SQL: (结构化查询语句)查询的是表以及字段; 不区分大小写。 HQL: hibernate query language 即hibernate提供的面向对象的查询语言 查询的是对象以及对象的属性。 区分大小写。 Criteria查询: 完全面向对象的查询。 本地SQL查询: 复杂的查询,就要使用原生态的sql查询,也可以,就是本地sql查询的支持! (缺点: 不能跨数据库平台!) |-- Transaction hibernate事务对象 |
一个helloword hibernate配置以及查询的更多相关文章
- hibernate多表查询,结果封装在自己定义的一个实体类当中(在自己定义的类中增加构造函数)
hibernate的hql查询直接返回java对象时出现问题3 向大家请教一个问题,现在有三张表,表之间没有关联,我需要将三张表里面的所有东西查询出来存储到一个新的对象中,该如何实现,使用hibern ...
- Hibernate原生SQL查询
最近在做一个较为复杂的查询,hibernate基本的查询不能满足,只好使用其提供的原生sql查询.参考网上的一些资料,做一些总结. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行 ...
- hibernate的hql查询
1.概念介绍 1.Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句. 2.HQL是Hibernate Query Langua ...
- Spring MVC+Spring +Hibernate配置事务,但是事务不起作用
最近做项目,被一个问题烦恼了很久.使用Spring MVC+Spring +Hibernate开发项目,在使用注解配置事务管理,刚开始发现无论如何数据库都无法更新,但是可以从数据库查询到数据.怀疑是配 ...
- Hibernate之HQL查询
一.Hibernate 提供了以下几种检索对象的方式: 导航对象图检索方式: 根据已经加载的对象导航到其他对象 OID 检索方式: 按照对象的 OID 来检索对象 HQL 检索方式:使用面向对象的 H ...
- Hibernate配置属性
Hibernate配置属性 属性名 用途 hibernate.dialect 一个Hibernate Dialect类名允许Hibernate针对特定的关系数据库生成优化的SQL. 取值 full.c ...
- Hibernate 配置详解(8)
hibernate.generate_statistics 这个配置大家应该都很熟悉,用于开启Hibernate统计信息,便于对Hibernate相关性能调试提供数据依据.在开发过程当中,可以把这个选 ...
- Java面试题:Hibernate的二级缓存与Hibernate多表查询
我们来看两个有关Java框架之Hibernate的面试题,这是关于Hibernate的常考知识点. 1.请介绍一下Hibernate的二级缓存 解题按照以下思路来回答: (1)首先说清楚什么是缓存: ...
- 【转】Hibernate 配置
转自:http://www.blogjava.net/19851985lili/articles/108128.html 由于Hibernate是为了能在各种不同环境下工作而设计的, 因此存在着大量的 ...
随机推荐
- python简单的输入与输出
1 首先利用python完成简单的输出,运行如下: python和c语言类似,但又有所不同,python开发快,语言简洁,我是这样对比学的 输出:print+空格+'要输出的内容',一定要是英文状态下 ...
- javase 继承练习
package xuexi; 父级 public class Fu { int num=0; public void eat() { System.out.println("父亲在吃饭&qu ...
- NOIP2016 天天爱跑步 线段树合并_桶_思维题
竟然独自想出来了,好开心 Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r&q ...
- HDU-3015 Disharmony Trees [数状数组]
Problem Description One day Sophia finds a very big square. There are n trees in the square. They ar ...
- JavaScript链式编程模拟Jquery函数
<span>Hello,World!</span> <script type="text/javascript"> Jq = function ...
- 【hiho一下第二周 】Trie树
[题目链接]:http://hihocoder.com/problemset/problem/1014 [题意] [题解] 在字典树的域里面加一个信息cnt; 表示这个节点下面,记录有多少个单词; 在 ...
- Elasticsearch 7.0 发布都有哪些新特性
了解about云知识星球 .pcb{margin-right:0} 问题导读 1.Elasticsearch&Kibana 7.哪些需要修改? 2.Elasticsearch7 有哪些新特性? ...
- asp.net mvc-identity初步学习
Install-Package Microsoft.AspNet.Identity.EntityFramework Install-Package Microsoft.AspNet.Identity. ...
- CF49A Sleuth
CF49A Sleuth 题目描述 Vasya plays the sleuth with his friends. The rules of the game are as follows: tho ...
- hdu 4717 The Moving Points(三分)
http://acm.hdu.edu.cn/showproblem.php?pid=4717 大致题意:给出每一个点的坐标以及每一个点移动的速度和方向. 问在那一时刻点集中最远的距离在全部时刻的最远距 ...