一、准备jar包
创建好javaweb以后在lib下复制准备好了的Hibernate的jar包,会自动导入Web App Libraries下
下载jar包地址:http://hibernate.org/orm/
二、创建User实体类:在com.hibernate包下
package com.hibernate;
/**
* 实体User
*/
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "[User: id=" + id + ", name=" + name + "]";
}
}
三、创建数据库
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
四、创建主配置文件:hibernate.cfg.xml
一般涉及到三个方面的配置:
1.基于JDBC数据库的属性配置,如:url、driver、username等配置
2.数据库方言dialect配置(dialect:即理解为我们是需要Orcale、Sqlserver还是Mysql的SQL语言)
3.其他配置:如hibernate.show_sql是否以日志的方式跟踪sql语句
4.数据库实体类映射文件mapper的导入:是一种ORM的实现
具体代码如下:
<?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 name="myConfig">
<!-- 1.方言(连接的数据库类型) -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 2. 配置数据库信息 -->
<property name="connection.url">jdbc:mysql:3308//hibernate</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password">1234</property>
<!-- 3. 其他配置 -->
<!-- 显示生成的SQL语句 以日志的形式跟踪数据sql语句-->
<property name="hibernate.show_sql">true</property>
<!-- 4. 导入映射文件 -->
<mapping resource="com/hibernate/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
五、创建实体数据库映射文件user.hbm.xml(一般格式都是:实体类xxx.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">
<!--对象-关系映射文件xxx.xml:要与User类在同一个包com.hibernate下 -->
<!--JavaBean所在包的路径 -->
<hibernate-mapping package="com.hibernate">
<!--
<class name="JavaBean名称" table="对应数据库中的表名">
-->
<class name="User" table="t_user">
<!--
1.<id name="数据库中主键在JavaBean中的属性名称" column="数据库中主键名" type="数据类型">
2.id标签必须在property标签前
-->
<id name="id" type="int" column="id">
<!--
1.<generator class="映射方式"/>节点指定Hibernate向数据库插入数据时主键的生成方式
2.映射方式种类:
native:由数据库对id赋值,如:id设置为identity
identity:采用数据库提供的主键生成机制
increment:主键按数值顺序递增
......
-->
<generator class="native"/>
</id>
<!-- <property name="数据库中字段在JavaBean中的属性名称" column="数据库中的字段名" type="数据类型"/> -->
<property name="name" type="string" column="name" />
</class>
</hibernate-mapping>
六、创建App测试java文件
向空的数据库表t_user中加入“张三记录”
user.setName("张三");
package com.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
public class App {
private static SessionFactory sessionFactory;
static {
Configuration cfg = new Configuration();
cfg.configure("hibernate.cfg.xml"); // 读取指定的主配置文件
sessionFactory = cfg.buildSessionFactory(); // 根据配置生成Session工厂
}
@Test
public void testSave() {
User user = new User();
user.setName("张三");
// 保存
Session session = sessionFactory.openSession(); // 打开一个新的Session
Transaction tx = session.beginTransaction(); // 开启事务
session.save(user);
tx.commit(); // 提交事务
session.close(); // 关闭Session,释放资源
}
@Test
public void testGet() {
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
User user = (User) session.get(User.class, 1); // 获取最终的User实体类
System.out.println(user);
tx.commit();
session.close();
}
}