一个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是为了能在各种不同环境下工作而设计的, 因此存在着大量的 ...
随机推荐
- 【转】VGG网络结构及参数
VGG网络 VGG16输入224*224*3的图片,经过的卷积核大小为3x3x3,stride=1,padding=1,pooling为采用2x2的max pooling方式: 1.输入224x2 ...
- 洛谷P3960 列队 Splay
其实思路并不算太难,就是代码量相对较大. 我们将一次离队转换为一次删除和两次加入,这样就可以保证空间是动态分配的,最大也不会暴空间. 说实话写之前感觉会很恶心,但是代码量就还好吧,有些细节需要特殊注意 ...
- Git 本地项目添加多个远程仓库
做了一个小玩意儿,是在 码云 上做的仓储: 还想同时放在 github 上做个备份: 就在 github 上创建了一个新的项目地址: 可以看出,官方给了三种导入方式: 1.创建一个新的项目: 2.推送 ...
- python文件操作IO
模式 描述 r 以只读方式打开文件.文件的指针将会放在文件的开头.这是默认模式. rb 以二进制格式打开一个文件用于只读.文件指针将会放在文件的开头.这是默认模式.一般用于非文本文件如图片等. r+ ...
- php文件上传相关知识点回顾
近来正在回顾PHP的文件上传.在此做个记录. <?php date_default_timezone_set('PRC'); if(isset($_POST['submit'])) { echo ...
- [ACM] POJ 2154 Color (Polya计数优化,欧拉函数)
Color Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7630 Accepted: 2507 Description ...
- 2015.04.24,外语,读书笔记-《Word Power Made Easy》 12 “如何奉承朋友” SESSION 34
1.no fatigue indefatigable([indi'fætigәb(ә)l] adj. 不知疲倦的)来自faigue,in-是反义词缀:后缀-able表示able to be,因此ind ...
- jQuery幻灯片插件Owl Carousel
简介 Owl Carousel 是一个强大.实用但小巧的 jQuery 幻灯片插件,它具有一下特点: 兼容所有浏览器 支持响应式 支持 CSS3 过度 支持触摸事件 支持 JSON 及自定义 JSON ...
- 为IT程序员量身定制的12个目标——很经典
对程序员们来说挑战自我非常重要,要么不断创新,要么技术停滞不前.新年伊始,我整理了12个月的目标,每个目标都是对技术或个人能力的挑战,而且可以年复一年循环使用. 01. 变得有耐心 02. 保持健康 ...
- .NET Core开发:项目实践
初始化项目 本来想详细讲一讲dotnet core的,但我对于dotnet core的研究还不到一星期,半吊子,脑子又笨,就不写那些理论出来误人子弟了,还是直接来一篇实践给大家做个参考.废话不多说,直 ...