要点"/>
Hibernate项目搭建技术要点
一.Hibernate是什么?
- Hibernate: 冬眠
- 属于持久层框架: 操作数据库的框架.
- 属于ORM框架的范畴
二.ORM是什么?
-
Object Relational Mapping: 对象关系映射型框架.
-
关系映射:
-
将java的对象对应数据库的表的一行数据. (java Object table row)
-
将java对象中的属性对应数据库表中的列. (Object field row column)
三.为什么要使用Hibernate? -
1.可以自动生成连接管理类(BaseDao不用手写了)
-
2.自动生成sql语句(表dao不用手写了)
四.Hibernate的基本使用 -
1.新建java/web project
-
2.加入驱动jar包(hibernate实际上是jdbc的高级封装)
-
3.加入hibernate框架支持
4.配置hibernate主配置文件
<session-factory>
连接工厂属性配置
1.connection配置
2.hibernate配置
驱动类的包名+类名
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
rl地址
<propertyname="connection.url">jdbc:mysql://127.0.0.1:3306/first_mysql</property>
用户名
<property name="connection.username">root</property>
密码
<property name="connection.password">root</property>
</session-factory>
5.测试连接数据库
public static void main(String[] args) { //1.获得配置文件对象 Configuration config = new Configuration().configure();//2.获得连接工厂对象 SessionFactory factory = config.buildSessionFactory(); //3.获得连接会话对象 Session session = factory.openSession(); System.out.println(session.isOpen()); /*给大家推荐一个免费的学习交流君样:826021115 */ //4.session用完之后需要标记归还 方法 是 close(); session.close(); System.out.println(session.isOpen());
}
6.新建实体类对应数据库的表结构
7.新建实体类映射文件
- 7.1在entity包中新建xml文件
- 7.2文件名: 实体类类名+Mapping.hbm.xml
- 7.3复制hibernate主配置信息,并且将所有约束中的Configuration改为Mapping(注意大写字母开头)
- 7.4将映射文件的位置编写在主配置文件中,让Configuration类在读取主配置文件的同时顺便读取实体类映射文件.
8.注意增删改操作需要事先开启事务
//开启数据库的事务
Transaction trans = session.beginTransaction();
Serializable id = session.save(stu);
System.out.println("增加成功: "+id);
//提交数据库的事务
transmit();
9.打开SQL语句显示功能以及sql语句格式化显示功能
<!-- SQL语句打印配置 -->
<property name="hibernate.show_sql">true</property>
<!-- SQL语句格式化配置 -->
<property name="hibernate.format_sql">true</property>
10.手动封装连接管理类
常见异常:
Exception in thread "main" org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1
Hibernate:
update
student
set
name=?,
height=?,
birth=?,
jointime=?,
cid=?
where
id=?
修改时Hibernate无法从对象中获得修改时必须要的主键值.
Hibernate在执行修改后发现许多列都没有值(或为null或为0)
因为hibernate的修改必须基于查询.
五.连接模板配置
右键点击连接模板空白处,选中New…
六.自动生成连接管理类
七.Hibernate反转引擎
反转引擎作用:
将数据库的表自动转成实体类
Jdbc中称实体类为entity
Hibernate中称实体类为pojo
八.主键生成策略
1.由数据库决定主键值
1.1 native: 自适应
- 由hibernate检测不同的数据库使用不同的主键生成策略.
- MySQL(auto_increment) identity
- 当MySQL数据库的表使用了auto_increment生成主键时可以使用hibernate的identity策略
- SQL Server(identity(1,1)) identity
- 当SQL Server数据库的表使用了identity生成主键时可以使用hibernate的identity策略
- Oracle(sequence) sequence
- 当Oracle数据库的表使用了sequence生成主键时可以使用hibernate的sequence策略
1.2 identity
Sql server通过程序连接操作数据库,需要打开TCP/IP
最新2021整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,SpringBoot、Spring Cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君羊:826021115
更多推荐
Hibernate项目搭建技术要点
发布评论