hibernate入门案例(一)
来源:互联网 发布:北京网络职业学院图片 编辑:程序博客网 时间:2024/05/22 01:37
hibernate和jdbc两种操作数据库的方式相比,hibernate有两个显著有点:
1.不在需要编写sql语句,而是允许采用OO(面向对象)方式来访问数据库。
2.在jdbc访问过程中大量的checked异常被包装成Hibernate的Runtime异常,从而不再要求程序必须处理所有异常。
一、创建数据库和表
1.1 创建数据库
create database hibernate_first
1.2 创建表
DROP TABLE IF EXISTS `t_user`;CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(64) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
二、创建web项目
new->dynamic web project三、导入jar包
3.1 驱动包
我们操作数据库,首先要导入驱动包。本例用mysql-connector-java-5.1.7-bin.jar3.2 Hibernate包
hibernate-release-5.0.7.Final\lib\required必须的包包的简单介绍
hibernate-core-5.0.7.Final.jar核心包
hibernate-commons-annotations-5.0.1.Final.jar注解
javassist-3.18.1-GA.jar底层生成动态代理的代码
dom4j-1.6.1.jar解析xml。Hibernate底层用dom4j写了一些xml文档
2.3 日志包
slf4j-api-1.6.1.jar 日志接口包,没实现。log4j-1.2.16.jar 具体的日志的实现
slf4j-log4j12-1.7.2.jar 日志接口和日志实现桥梁
导包完成,如下图:
四、创建实体类
package com.hib.domain;public class User {// hibernate的实体类使用包装类,因为,默认值是null。// 如果,使用基本数据类型,前端没传数据,默认值就是0.private Integer id;private String name;private Integer age;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}}
五、创建hibernate映射配置文件(类和表结构的映射)
在JavaBean所在的包下创建映射的配置文件User.hbm.xml默认的命名规则为:实体类名.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="com.hib.domain.User" table="t_user"><!-- 配置id和property。name属性,JavaBean的属性; column属性,表结构的属性 --><id name="id" column="id"><!-- 主键生成策略 --><generator class="native"></generator></id><property name="name" column="name"></property><property name="age" column="age"></property></class></hibernate-mapping>这个配置文件里面的约束可以到如下地方导入
六、编写hibernate核心的配置文件
6.1 在src目录下,创建名称为hibernate.cfg.xml的配置文件
6.2 在XML中引入DTD约束
6.3 配置参数
hibernate-release-5.0.7.Final/project/etc/hibernate.properties,可以查看具体的配置信息* 必须配置的4大参数 #hibernate.connection.driver_class com.mysql.jdbc.Driver#hibernate.connection.url jdbc:mysql:///test#hibernate.connection.username gavin#hibernate.connection.password* 数据库的方言(必须配置的)#hibernate.dialect org.hibernate.dialect.MySQLDialect* 可选的配置#hibernate.show_sql true#hibernate.format_sql true#hibernate.hbm2ddl.auto update* 引入映射配置文件(一定要注意,要引入映射文件,框架需要加载映射文件)<mapping resource="com/hib/domain/User.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标签,一个数据库对应一个SessionFactory --><session-factory><!-- 必须配置的4大参数 --><property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><property name="hibernate.connection.url">jdbc:mysql:///hibernate_first</property><property name="hibernate.connection.username">root</property><property name="hibernate.connection.password">123456</property><!-- 数据库的方言(必须配置的) --><!-- 方言的作用:底层用了什么数据库,告诉hibernate,hibernate会生成对应的sql语句 --><property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><!-- 可选的配置 --><!-- 显示sql语句 --><property name="hibernate.show_sql">true</property><!-- 格式化sql语句 --><property name="hibernate.format_sql">true</property><!-- 生成数据库的表结构。hbm2ddl-hbm to ddl,意思是把映射文件去生成数据库定义的语言 --><!-- 1.create,每次都创建一张新的表。开发中不会用的。 --><!-- 2.create-drop,先创建,再删除。根本没什么用嘛! --><!-- 3.create-drop,先创建,再删除。根本没什么用嘛! --><!-- 4.update,如果没有表就创建。有新的字段,会添加到表中。但是javabean中少了属性,不会去删除表中的字段。对于字段,只能加,不能删 --><!-- 5.validate,校验javabean属性和数据库表的字段是不是一致的。 --><!-- 开发一般用update --><property name="hibernate.hbm2ddl.auto">update</property><!-- 引入映射配置文件(一定要注意,要引入映射文件,框架需要加载映射文件) --><mapping resource="com/hib/domain/User.hbm.xml" /></session-factory></hibernate-configuration>
七、编写Hibernate入门代码
package com.hib.test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.junit.Test;import com.hib.domain.User;public class Demo {@Testpublic void testSave() {/** * 1.先加载配置文件 * 2.创建SessionFactory对象,生成Session对象。session会话去连接数据库。 * 3.创建Session对象 * 4.开启事务 * 5.编写保存的代码 * 6.提交事务 * 7.释放资源 */// 1.先加载配置文件Configuration config = new Configuration();// 默认加载src目录下hibernate.cfg.xml的配置文件config.configure();// 2.创建SessionFactory对象SessionFactory factory = config.buildSessionFactory();// 3.创建Session对象Session session = factory.openSession();// 4.开启事务Transaction tx = session.beginTransaction();// 5.编写保存的代码User user = new User();user.setName("tom");user.setAge(23);session.save(user);// 6.提交事务tx.commit();// 7.释放资源session.close();factory.close();}}
执行单元测试,ok
效果如下
源码下载
阅读全文
0 0
- hibernate入门案例(一)
- Hibernate (一)hibernate入门
- Hibernate--入门(一)
- Hibernate入门(一)
- hibernate入门(一)
- Hibernate入门(一)
- Hibernate入门(一)
- Hibernate学习(2)入门案例
- Hibernate之入门案例
- hibernate 入门案例
- Hibernate框架入门案例
- hibernate入门简单案例
- hibernate快速入门案例
- hibernate入门案例
- hibernate入门案例
- Hibernate入门案例
- Hibernate配置入门案例
- Hibernate-入门案例
- netsh命令开启笔记本电脑自带无线
- Linkcode 66.二叉树的前序遍历
- 模糊控制器设计基本方法
- 数学中组合的一种递归实现
- IntelliJ-IDEA和Git、GitHub、Gitlab的使用(五)
- hibernate入门案例(一)
- 51talk-7 Setting up for a interview
- 计组、离散,对编程特别重要吗?
- CentOS 7 搭建LAMP 环境 学习笔记
- c 文件操作
- 线性表的顺序存储操作
- SpringMVC(八)文件上传
- 有线数字电视机顶盒的基本原理
- 2672 3-3 构造函数的调用(高级)