hibernate学习之一 框架配置
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学习之一 框架配置的更多相关文章
- hibernate学习——Set集合配置
Set集合的配置 数据表的创建:表关系一个员工拥有多个身份 create table EMPLOYEE ( id INT NOT NULL auto_increment, first_name VAR ...
- 学习springMVC框架配置遇到的问题-数据写入不进数据库时的处理办法
配置完了,运行,数据写入不到数据库中,就应该想UserAction 中的handleRequest()方法有没有进去,然后就设置断点.如果发现程序没有进去,就再想办法进去.
- Hibernate学习(二)关系映射----基于外键的单向一对一
事实上,单向1-1与N-1的实质是相同的,1-1是N-1的特例,单向1-1与N-1的映射配置也非常相似.只需要将原来的many-to-one元素增加unique="true"属性, ...
- 深入浅出学习Spring框架(四):IoC和AOP的应用——事务配置
在前文 深入浅出学习Spring框架(一):通过Demo阐述IoC和DI的优势所在. 深入浅出学习Spring框架(三):AOP 详解 分别介绍了Spring的核心功能——IoC和AOP,光讲知识远远 ...
- 跟着刚哥学习Spring框架--事务配置(七)
事务 事务用来保证数据的完整性和一致性. 事务应该具有4个属性:原子性.一致性.隔离性.持久性.这四个属性通常称为ACID特性.1.原子性(atomicity).一个事务是一个不可分割的工作单位,事务 ...
- 学习ORM框架—hibernate(三):跟踪持久化对象状态,掌握对象持久化
准备工作 在上篇博客中学习ORM框架—hibernate(一):初识hibernate,通过简单的实例说明O和R的映射过程.本篇博客将要介绍hibernate中持久化对象的状态,并使用hibernat ...
- Hibernate框架--配置,映射,主键
SSH框架: Struts框架, 基于mvc模式的应用层框架技术! Hibernate, 基于持久层的框架(数据访问层使用)! Spring, 创建对象处理对象的依赖关系以及框架整合! Da ...
- 跟着刚哥学习Spring框架--通过注解方式配置Bean(四)
组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Resposit ...
- 跟着刚哥学习Spring框架--通过XML方式配置Bean(三)
Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式 √ id:标识容器中的bean.id唯一. √ cl ...
随机推荐
- 【BZOJ4591】【Shoi2015】超能粒子炮
Description 传送门 Solution 记\(a=\lfloor\frac n p\rfloor\),\(b=n\%p\).我们尝试使用Lucas定理展开这些组合数,寻找公共部分.以下除 ...
- 【bzoj2594】 Wc2006—水管局长数据加强版
http://www.lydsy.com/JudgeOnline/problem.php?id=2594 (题目链接) 题意 给出一个带边权的无向简单,要求维护两个操作,删除${u,v}$之间的连边: ...
- VS2010 重命名文件:源文件名和目标文件名相同 的解决方案
想要在“”解决方案资源管理器“”中修改一个已经写好的文件的文件名,如图: 在改了几次后就出现了如图的问题: 然而在“解决方案资源管理器”中并没有看到,于是我打开了工程在磁盘中的位置文件夹: 意外发现了 ...
- 【最大流/二分图匹配】【网络流24题】【P3254】 圆桌问题
Description 假设有来自m 个不同单位的代表参加一次国际会议.每个单位的代表数分别为ri (i =1,2,--,m). 会议餐厅共有n 张餐桌,每张餐桌可容纳ci (i =1,2,--,n) ...
- 团体程序设计天梯赛 L1-010. 比较大小
测试数据: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 Code: 先确定最小,然后确定第二小 #include <stdio.h> #include < ...
- centos禁用ipv6
两步完成 vi /etc/sysctl.conf net.ipv6.conf.all.disable_ipv6=1sysctl -p /etc/sysctl.conf
- python 套接字之select poll epoll
python下的select模块使用 以及epoll与select.poll的区别 先说epoll与select.poll的区别(总结) select, poll, epoll 都是I/O多路复用的具 ...
- Java基础-数组常见排序方式
Java基础-数组常见排序方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数据的排序一般都是生序排序,即元素从小到大排列.常见的有两种排序方式:选择排序和冒泡排序.选择排序的特 ...
- json转java对象
用了平台之后很少再接触到java和js的底层代码,前几天远程帮一个萌新远程调试代码,这个萌新按照网上的教程去将json字符转java对象却一直报错.真相是它的json字符串格式不对,他的明明是一个数组 ...
- SQL2005函数大全
表达式:是常量.变量.列或函数等与运算符的任意组合.以下参数中表达式类型是指表达式经运算后返回的值的类型 字符串函数 函数名称 参数 示例 说明 ascii (字符串表达式) select ascii ...