hibernate 框架

  1、hibernate框架应用在javaee三层结构中的dao层框架

  2、好处就是不需要写复杂jdbc代码,不需要sql语句实现

  3、是开源的轻量级框架

  hibernate使用orm思想对数据库进行crud操作, orm - object relational mapping, 对象关系映射,让实体类和数据库表一一对应,实体类属性与表里的字段一一对应。

对数据库表进行操作,不需要对数据库操作,直接对实体类进行操作即可完成。它与jdbc的对比关系如下图

MAVEN导包配置

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>

搭建hibernate步骤

  第一步,创建实体类

public class LoginInfo {
//对应数据库的主键,值唯一
private String id;
private String username;
private String password; public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
}

  注意:如果实体类对应的表不存在,hibernate可以自动创建数据表

  第二步 配置数据表与实体类的映射关系

  新建一个配置文件loginInfo.hbm.xml. 文件名字与位置没有固定,建议放在实体类所在包,名字样式为xxx.hbm.xml.在开始配置前,首先引入约束,约束文件为   http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd   点击下载MappingDTD文件

<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

  本例子中logininfo.hbm.xml内容如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping>
<!--配置实体类与数据表对应关系
class 标签
name : 实体类名
table :表名-->
<class name="com.blueto.hibernate.LoginInfo" table="t_logininfo">
<id name="id" column="id">
<!--主键 自动增长-->
<!--<generator class="native"></generator>-->
<!--uuid方式生成主键-->
<generator class="uuid"></generator>
</id>
<!--name 实体类属性, column 表字段名-->
<property name="username" column="username"></property>
<property name="password" column="password"></property>
</class> </hibernate-mapping>

  第三步 创建hibernate的核心配置文件

  与mapping文件不一样,该配置文件名与位置必须固定,文件名只能为hibernate.cfg.xml, 并且只能放在目录src下面

  配置分三小步骤

    1)首先引入约束 http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd, 点击下载DTD

    2)配置数据库信息

    3)配置hibernate信息

    4)把映射配置文件(上一节的xxx.hbm.xml)放到核心配置文件中

<?xml version="1.0" encoding="UTF-8"?>
<!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>
<!--1) 配置数据库信息-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///t_logininfo</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123</property>
<!-- 2)   配置hibernate信息,可选-->
<!--输出底层sql语句-->
<property name="hibernate.show_sql">true</property>
<!--输出sql格式-->
<property name="hibernate.format_sql">true</property>
<!--如果没有表,则创建,有则更新-->
<property name="hibernate.hbm2ddl.auto">update</property> <!--配置数据库方言-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!--  3)  把映射配置文件放到核心配置文件中-->
<mapping resource="com/blueto/hibernate/logininfo.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>

  如果从没有接触过hibernate, 那怎么知道里面怎么配置啊?如果记不住配置内容,可以打开hibernate.properties文件查看里面的配置属性,找到对应的数据库按照properties里定义配置就好了。方便理解,上一张它们间的关系图

  我使用的是mysql数据库,其他数据库配置同样可以参考hibernate.properties文件配置(点击下载hibernate.properties)

  第四步 数据库的CRUD操作

public class HiberDemo {
@Test
public void testAdd(){
// step 1 : 加载hibernate核心配置文件
Configuration cfg = new Configuration();
cfg.configure();
//setp 2 : 创建SessionFactory
SessionFactory sessionFactory = cfg.buildSessionFactory();
//step 3 : 创建session对象
Session session = sessionFactory.openSession();
//step 4 开启事务
Transaction tx = session.beginTransaction();
//step 5 crud
LoginInfo loginInfo = new LoginInfo();
loginInfo.setUsername("new name");
//写入数据表中,如果表不存在,则创建表,
// 前提是要在核心配置文件中配置 : <property name="hibernate.hbm2ddl.auto">update</property>
session.save(loginInfo);
//step 6 提交事务
tx.commit();
//step 7 关闭资源
session.close();
sessionFactory.close();
}
}

hibernate学习之一 框架配置的更多相关文章

  1. hibernate学习——Set集合配置

    Set集合的配置 数据表的创建:表关系一个员工拥有多个身份 create table EMPLOYEE ( id INT NOT NULL auto_increment, first_name VAR ...

  2. 学习springMVC框架配置遇到的问题-数据写入不进数据库时的处理办法

    配置完了,运行,数据写入不到数据库中,就应该想UserAction 中的handleRequest()方法有没有进去,然后就设置断点.如果发现程序没有进去,就再想办法进去.

  3. Hibernate学习(二)关系映射----基于外键的单向一对一

    事实上,单向1-1与N-1的实质是相同的,1-1是N-1的特例,单向1-1与N-1的映射配置也非常相似.只需要将原来的many-to-one元素增加unique="true"属性, ...

  4. 深入浅出学习Spring框架(四):IoC和AOP的应用——事务配置

    在前文 深入浅出学习Spring框架(一):通过Demo阐述IoC和DI的优势所在. 深入浅出学习Spring框架(三):AOP 详解 分别介绍了Spring的核心功能——IoC和AOP,光讲知识远远 ...

  5. 跟着刚哥学习Spring框架--事务配置(七)

    事务 事务用来保证数据的完整性和一致性. 事务应该具有4个属性:原子性.一致性.隔离性.持久性.这四个属性通常称为ACID特性.1.原子性(atomicity).一个事务是一个不可分割的工作单位,事务 ...

  6. 学习ORM框架—hibernate(三):跟踪持久化对象状态,掌握对象持久化

    准备工作 在上篇博客中学习ORM框架—hibernate(一):初识hibernate,通过简单的实例说明O和R的映射过程.本篇博客将要介绍hibernate中持久化对象的状态,并使用hibernat ...

  7. Hibernate框架--配置,映射,主键

    SSH框架: Struts框架, 基于mvc模式的应用层框架技术! Hibernate,    基于持久层的框架(数据访问层使用)! Spring,   创建对象处理对象的依赖关系以及框架整合! Da ...

  8. 跟着刚哥学习Spring框架--通过注解方式配置Bean(四)

    组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Resposit ...

  9. 跟着刚哥学习Spring框架--通过XML方式配置Bean(三)

    Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式   √ id:标识容器中的bean.id唯一. √ cl ...

随机推荐

  1. [bzoj1875][SDOI2009] HH去散步 [dp+矩阵快速幂]

    题面 传送门 正文 其实就是让你求有多少条长度为t的路径,但是有一个特殊条件:不能走过一条边以后又立刻反着走一次(如果两次经过同意条边中间隔了别的边是可以的) 如果没有这个特殊条件,我们很容易想到dp ...

  2. 【bzoj3751】 Hnoi2014—画框

    http://www.lydsy.com/JudgeOnline/problem.php?id=3571 (题目链接) 题意 给出一个$2*N$个点的二分图,$N*N$条边,连接$i$和$j$的边有两 ...

  3. 《Linux内核设计与实现》学习总结 Chap3

    第三章 进程管理 进程是Unix操作系统抽象概念中最基本的一种.我们拥有操作系统就是为了运行用户程序,因此,进程管理就是所有操作系统的心脏所在. 3.1进程 概念: 进程:处于执行期的程序.但不仅局限 ...

  4. android:onClick="xxx"

    一般监听OnClickListener事件,我们都是通过Button button = (Button)findViewById(....); button.setOClickLisener....这 ...

  5. 解题:USACO14MAR Counting Friends

    题面 枚举每个数字是否能被删去,然后就是如何判定图是否存在.应该从按“度数”从大到小排序,从最大的顺次向其他点连边(先连“度数”小的可能会把一些可以和大“度数”点连接的点用掉).但是这个排序每连一次都 ...

  6. sqlalchemy常用语法

    一.新增数据 # 新增一条数据 user_obj = User(name="bigberg", passwd="twgdh123") Session.add(u ...

  7. codevs 3152 装箱问题3

    装箱问题3 http://codevs.cn/problem/3152/ 题目描述 Description 设有n种物品,记作A1.A2.….An,对应于每个Ai(1<=i<=n)都有一个 ...

  8. Linux装机利器Cobbler安装配置

     Linux装机利器Cobbler安装配置 2011-05-27 15:31:05 分类: LINUX 一.安装环境 centos 5.4 关掉iptables 关掉 selinux selinux ...

  9. 七、新时间日期 API

    一.使用 LocalDate. LocalTime. LocalDateTime LocalDate. LocalTime. LocalDateTime 类的实例是不可变的对象,分别表示使用 ISO- ...

  10. Java并发编程原理与实战三十二:ForkJoin框架详解

    1.Fork/Join框架有什么用呢? ------->Fork使用来切分任务,Join是用来汇总结果.举个简单的栗子:任务是1+2+3+...+100这个任务(当然这个任务的结果有好的算法去做 ...