先贴demo(需要相应jar包的可以到我的demo里拿,都是最新的jar包,不用客气):
HibernateDemo1
HibernateDemo2(crud操作)
HibernateDemo3(绑定session操作)
HibernateDemo4(Query、Criteria、SQLQuery对象查询)
HibernateDemo6(一对多的及联操作)
HibernateDemo7(多对对的及联操作)
HibernateDemo8(查询:对象导航查询/OID查询、hql查询、QBC、多表查询)
学习demo,大神勿喷
JavaEE三层结构
web层:Struts2
Service层:Spring
Dao层:Hibernate
概念:
- Hibernate框架应用在javaee三层结构中的dao层框架。
- 在dao层里面做对数据库crud操作,使用Hibernate实现crud操作,底层代码是jdbc,hibernate对jdbc进行了封装,使用hibernate好处是不需要写复杂的jdbc代码了,不需要写sql语句实现。
- hibernate是开源轻量级的框架。
- hibernate版本:http://hibernate.org/
参考博客:https://blog.youkuaiyun.com/qq_36868342/article/details/80100313
orm思想:
Hibernate jar包介绍
包名 | 用途 |
hibernate-core-4.3.11.Final.jar | Hibernate核心包 |
antlr-2.7.7.jar | Hibernate利用它实现从HQL到SQL的转换 |
dom4j-1.6.1.jar | 解析XML配置文件和XML映射文件 |
hibernate-commons-annotations-4.0.5.Final.jar | Hibernate注解包 |
hibernate-jpa-2.1-api-1.0.0.Final.jar | JPA2.1接口库 |
jandex-1.1.0.Final.jar | 用来索引Anotation的 |
javassist-3.18.1-GA.jar | Hibernate用它来实现PO字节码的动态生成 |
jboss-logging-3.1.3.GA.jar | 日志服务通用库 |
jboss-logging-annotations-1.2.0.Beta1.jar | 实现带注释的借口的具体实现类 |
jboss-transaction-api_1.2_spec-1.0.0.Final.jar | JTA规范包 |
1、创建java项目:
2、导入导入jar包
3、导入路径:选中所以包,右键-buildpath-add(我这已经导过了,所以是空的)
4、建实体类和属性,并生成set和get方法
源码:
package cn.itcast.entity;
public class User {
// 要求实体类又一个属性唯一
private int uid;
private String username;
private String password;
private String address;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
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;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
5、配置实体类和数据库表一一对应关系(映射关系)
建议在实体类所在包里面创建. 实体类名称.hbm.xml
User.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="cn.itcast.entity.User" table="t_user">
<!-- 配置实体类id和表id对应
hibernate要求实体类有一个属性唯一值
hibernate要求表字段作为唯一值
-->
<!--
id标签
name:实体类id属性名
column:生成的表字段名称
-->
<id name="uid" column="uid">
<!-- 设置数据库表id增长策略
native:生成表id值就是主键自动增长
-->
<generator class="native"></generator>
</id>
<property name="username" column="username"></property>
<property name="password" column="password"></property>
<property name="address" column="address"></property>
</class>
</hibernate-mapping>
6、配置核心配置文件hibernate.cfg.xml
注意:hibernate.cfg.xml 此文件的命名和位置是固定的,必须这样命名,也必须放在src下
下面是我创建的文件目录:
hibernate.cfg.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>
<!-- 配置数据库信息 必须的-->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///hibernate</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">lz123456</property>
<!-- 配置hibernate信息 ,此部分可选-->
<!-- 表示输出底层的sql语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 表示对底层的sql语句进行格式化 -->
<property name="hibernate.format_sql">true</property>
<!-- hibernate帮助我们自动创建表 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 配置数据库方言,比如:在mysql里面要实现分页关键字limit,只能使用mysql里面,在oracle的数据库,实现分页rownum,让hibernate框架识别不通数据库的自己持有的语句 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 把映射文件放到核心配置文件中 必须的-->
<mapping resource="cn/itcast/entity/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
7、实现添加操作,创建测试类HibernateDemo
package cn.itcast.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import cn.itcast.entity.User;
public class HibernateDemo {
@Test
public void testAdd() {
//1、加载hibernate核心配置文件
//到src下面找到名称是hibernate.cfg.xml
//在hibernate里面封装对象
Configuration cfg = new Configuration();
cfg.configure();
//2、创建SessionFactory对象
//读取hibernate核心配置文件内容,创建SessionFactory
//过程中根据映射关系,在配置数据库里面把表创建
SessionFactory sessionFactory = cfg.buildSessionFactory();
//3、使用SessionFactory创建session对象
//类似连接
Session session = sessionFactory.openSession();
//4、开启事务
Transaction tx = session.beginTransaction();
//5、写具体逻辑crud操作
//添加
User user = new User();
user.setUsername("张三");
user.setPassword("12343");
user.setAddress("中国");
//调用session的方法实现添加
session.save(user);
//6、提交事务
tx.commit();
//7、关闭资源
session.close();
sessionFactory.close();
}
}
8、运行之后刷新数据库:
这就ok啦。