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 ...
随机推荐
- 【刷题】洛谷 P4319 变化的道路
题目描述 小 w 和小 c 在 H 国,近年来,随着 H 国的发展,H 国的道路也在不断变化着 根据 H 国的道路法,H 国道路都有一个值 \(w\) ,表示如果小 w 和小 c 通过这条道路,那么他 ...
- ThinkPHP 5.x远程命令执行漏洞分析与复现
0x00 前言 ThinkPHP官方2018年12月9日发布重要的安全更新,修复了一个严重的远程代码执行漏洞.该更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的 ...
- python图片云
Python 小工具 把图片拼接成任意大小新图片 代码比较简单 看注释就好 # -*- coding:utf-8 -*- #图片拼接 import PIL.Image as Image import ...
- 微服务Kong(八)——代理参考
Kong侦听四个端口的请求,默认情况是: 8000:此端口是Kong用来监听来自客户端的HTTP请求的,并将此请求转发到您的上游服务.这也是本教程中最主要用到的端口. 8443:此端口是Kong监听H ...
- C++ strcat(template版本)
template<unsigned N, unsigned M> inline std::shared_ptr<char> strcat(const char (&p1 ...
- C++ STL之LIST详解A
List 容器 list是C++标准模版库(STL,Standard Template Library)中的部分内容.实际上,list容器就是一个双向链表,可以高效地进行插入删除元素. 使用list容 ...
- NO.3day 网络基础
网络基础 1.互联网协议 概念:通过互联网传输数据的标准. 功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准. 2.OSI五层模型 应用层--传输层--网络层--数 ...
- P3097 [USACO13DEC]最优挤奶Optimal Milking
P3097 [USACO13DEC]最优挤奶Optimal Milking 题意简述:给定n个点排成一排,每个点有一个点权,多次改变某个点的点权并将最大点独立集计入答案,输出最终的答案 感谢@zht4 ...
- Android SDK更新失败对策
Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml Failed to fetch URL https:// ...
- EM算法(Expectation Maximization Algorithm)
EM算法(Expectation Maximization Algorithm) 1. 前言 这是本人写的第一篇博客(2013年4月5日发在cnblogs上,现在迁移过来),是学习李航老师的< ...