hibernate详解
来源:互联网 发布:米思米3d数据库 编辑:程序博客网 时间:2024/06/05 02:35
1.hibernate是什么?
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
2.语言特点
- 将对数据库的操作转换为对Java对象的操作,从而简化开发。通过修改一个“持久化”对象的属性从而修改数据库表中对应的记录数据。
- 提供线程和进程两个级别的缓存提升应用程序性能。 有丰富的映射方式将Java对象之间的关系转换为数据库表之间的关系。
- 屏蔽不同数据库实现之间的差异。在Hibernate中只需要通过“方言”的形式指定当前使用的数据库,就可以根据底层数据库的实际情况生成适合的SQL语句。
- 非侵入式:Hibernate不要求持久化类实现任何接口或继承任何类,POJO即可。
3.核心API
Hibernate的API一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。通过这些接口,可以对持久化对象进行存取、事务控制。
- Configuration:唯一作用就是加载配置文件。 默认构造器负责加载hibernate.properties文件(如果有)。
configure()默认加载hibernate.cfg.xml文件,也可通过参数加载指定文件。 - SessionFactory:整个数据库编译后的内存映像。
线程安全,负责生成Session,底层依赖ConnectionProvider。
实际项目中,一定用DataSource作为ConnectionProvider。
SessionFactory底层封装的DataSource。 - Session:数据库操作的关键对象。
线程不安全的。
底层封装的是Connection - Transaction:事务,它是底层事务的抽象、封装了底层数据库的具体事务。
4.导入jar包
<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.10.Final</version></dependency>
5.添加配置文件
<!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> <!-- 配置Hibernat的数据库方言,注意mysql5之后是MySQL5InnoDBDialect --> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!-- 连接数据库的参数 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- jdbc:mysql:///db 直接连本机--> <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/db</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!-- 配置DataSource --> <!-- 最大连接数 --> <property name="hibernate.c3p0.max_size">200</property> <!-- 最小连接数 --> <property name="hibernate.c3p0.min_size">2</property> <!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 --> <property name="hibernate.c3p0.timeout">5000</property> <!-- 最大的PreparedStatement的数量 --> <property name="hibernate.c3p0.max_statements">100</property> <!-- 每隔3000秒检查连接池里的空闲连接 ,单位是秒--> <property name="hibernate.c3p0.idle_test_period">3000</property> <!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 --> <property name="hibernate.c3p0.acquire_increment">2</property> <!-- 每次是否验证连接是否可用 --> <property name="hibernate.c3p0.validate">false</property> <!-- sql语句显示在控制台 --> <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> <!-- create:每次都会重新创建表 update:如果有表,就不管;如果没表,就创建 ,如果有更新,会更新 create-drop:每次都会重新创建表,之后删除,测试 --> <property name="hibernate.hbm2ddl.auto">create</property> <!-- 告诉Hibernate自定义的映射文件 如果是xml文件:rosource 如果是类文件:class --> <mapping class="org.xgl.pojo.User"/> </session-factory></hibernate-configuration>
其他配置参考:http://blog.csdn.net/qq_31724483/article/details/75137447
6.编写pojo
Hibernate对持久化类没有太多的要求,只要是一个普通的POJO就可以了,但还是有如下几个基本的要求:
- 要有一个无参数的构造器。
- 每个成员变量都要有一个setter、getter方法。
- 可选:尽量为持久化类提供一个标识属性,用于唯一标识该实体。 【数据库设计建议】
建议:不要使用final类,否则Hibernate不能启用代理模式! 如果实体要添加到HashSet集合中、或作为HashMap的key,建议重写equals()和hashCode()。
阅读全文
0 0
- Hibernate详解
- Hibernate详解
- HIBERNATE详解
- HIbernate详解
- hibernate 详解
- hibernate详解
- Hibernate详解
- hibernate详解
- Hibernate详解
- Hibernate详解
- hibernate详解
- 详解Hibernate
- hibernate详解
- 详解Hibernate
- Hibernate详解
- hibernate 详解
- Hibernate详解
- Hibernate详解
- 计蒜客-腾讯狼人杀(网络流+最大密度子图)
- Linux-1最基本命令
- 漫谈操作系统9 -- 线程运行状态
- Sqlmap 用户手册 使用教程
- 简单选择排序
- hibernate详解
- Java Socket小案例(4)实时聊天
- 【大白鹿学习andriod开发 第一弹】eclipse下配置andriod开发环境
- Android压力测试快速入门教程(图解)——Monkey工具
- C语言基础(函数,语句)
- STM32 cannot open source input file "stm32f10x_conf.h"错误
- 个人博客上线啦
- 人工智能刍议
- 前台字符串和JSON转换[绝对有用]