Hibernate基础知识
一、基本概念
Hibernate是一种ORM框架。(ORM——Object Relationship Mapping 对象关系映射)
Hibernate的工程:Java、web。
二、Hibernate的功能原理
结构:
pojo类
|映射(xml文件---注解)
表
|
Hibernate API
|翻译
JDBC
|操作
DB
三、Hibernate环境的搭建
1,核心配置文件
hibernate.cfg.xml(一般不会更改该文件的名字)
2,jar文件
手动把需要的配置文件和jar包拷贝到工程中。(通常创建个hbn_lib的library)
四、hibernate.cfg.xml文件的相关说明
1、hibernate.cfg.xml常用标签:
a)、<session-factory>:配置数据源信息
b)、<property>:配置hibernate的属性
该标签的name属性代表不一样的意思
name="dialect",数据库方言,区分数据库
c)、<mapping resource="com/hibernate/Account.hbm.xml" />
引入映射文件(hbn.xml):包路径/文件名
2、示例
<hibernate-configuration>
<session-factory>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/hbn
</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<mapping resource="com/hibernate/day02/one2one/Account.hbm.xml" />
<mapping resource="com/hibernate/day02/one2one/Address.hbm.xml" />
</session-factory>
</hibernate-configuration>
五、Hibernate使用步骤
在环境搭建好后,接着进行使用Hibernate了。
1、设计数据库表
2、根据数据库表字段创建pojo类
a).pojo类的属性必须与数据库中的字段对应。
b).pojo中要包含pojo类的无参构造函数
c).pojo中包含的有参构造函数的参数列表不用包含数据库中的主键和外键字段对应的属性。
d).包含所有属性的get/set方法
3、配置hbn.xml文件
略。
4、在hibernate.cfg.xml中引入hbn.xml文件
5、APP的调用方法
Session s = HibernateSessionFactory.getSession();
Transaction tr = s.beginTransaction();
........
tr.commit();
s.close();
六、单一实体映射
只有一个表,没有关系
表:用户
pojo:User
映射文件:pojo类名.hbm.xml
注意:
表必须要有主键
实体类必须有id属性
必须要有无参构造
必须要有set、get方法
映射文件:
<class name="pojo" table="表">
<id name="pojo类的属性名" column="表的字段名"></id> -- 配置id的生成策略(告诉数据库如何产生id字段的值)
如果属性名和字段名一样,可以省略column不写
id字段要使用<id>标签来映射,除此以外
其他字段都是用<property>来映射,属性基本相同
七、Hibernate应用程序开发
1,加载配置文件
2,创建SessionFactory对象
3,创建Session对象
4,打开事务
查询操作可以不用事务
5,操作数据库
利用session提供的方法
Hibernate操作数据库,都是操作对象
6,事务的提交/回滚
7,释放资源
先打开的,后释放
先释放session,在释放factory
八、id生成策略
1,自增
increment -- MySQL
表中id字段要有auto_increment
identity -- SQLServer
sequence -- Oracle
必须要有序列(先创建序列)
2,native
自增:根据底层数据库,自动选择自增方式
3,hilo
高低位算法
初始化一个值:记录在某一个表中
4,uuid
id的类型必须是字符串