标签:c3p0 ref net min 代理 rem 1.0 联网 用户名
目录
http://hibernate.org/orm/
https://sourceforge.net/projects/hibernate/files/hibernate-orm/
documentation
Hibernate开发的文档
lib
Hibernate开发的文档
required
Hibernate开发的必须的依赖包
optional
Hibernate开发的可选的jar包
project
Hibernate提供的参考项目
1.创建一个项目
2.引入必须的jar包
3.建表
CREATE TABLE `customer` (
`cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
`cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
`cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',
`cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',
`cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别',
`cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话',
`cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话',
PRIMARY KEY (`cust_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
4.创建ORM类
package ***.***.****;
import lombok.Getter;
import lombok.Setter;
import java.util.HashSet;
import java.util.Set;
@Getter@Setter
public class Customer {
private Long cust_id;
private String cust_name;
private String cust_source;
private String cust_industry;
private String cust_level;
private String cust_phone;
private String cust_mobile;
@Override
public String toString() {
return "Customer{" +
"cust_id=" + cust_id +
", cust_name='" + cust_name + '\'' +
", cust_source='" + cust_source + '\'' +
", cust_industry='" + cust_industry + '\'' +
", cust_level='" + cust_level + '\'' +
", cust_phone='" + cust_phone + '\'' +
", cust_mobile='" + cust_mobile + '\'' +
'}';
}
}
5.创建Hibernate的核心配置文件
通常叫hibernate.cfg.xml
创建完毕后, 也有一个约束要引入
在org.hibernate包当中可以找到对应的dtd configuration.dtd
属性名记不住
在目录提供的project当中有一个etc
在etc当中 有一个hibernate.properties的文件打开
打开后,会看到连接各种数据库时需要的属性参数
需要配置方言
不同的数据库,使用的语言不一样
在hibernate当中,sql语句会自动帮你生成
设置方言,就是设置自动生成的语言是哪个数据库当中的sql
配置核心配置文件要加载哪一个映射
映射的路径就是上面创建的跟表相对应的配置文件
把全路径的点,要换成斜杠
6.配置演示
?
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">1234</property>
<!-- 配置Hibernate的方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 打印SQL -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化SQL -->
<property name="hibernate.format_sql">true</property>
<!-- 自动创建表 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="customer.hbm.xml"/>
</session-factory>
</hibernate-configuration>
7.创建类执行
// 1.加载Hibernate的核心配置文件
Configuration configuration = new Configuration().configure();
// 2.创建一个SessionFactory对象:类似于JDBC中连接池
SessionFactory sessionFactory = configuration.buildSessionFactory();
// 3.通过SessionFactory获取到Session对象:类似于JDBC中Connection
Session session = sessionFactory.openSession();
// 5.编写代码
Customer customer = new Customer();
customer.setCust_name("Myxq2");
customer.setCust_level("12");
session.save(customer);
// 6.资源释放
session.close();
sessionFactory.close();
class标签
作用
建立类与表的映射关系
属性
name
类的全路径
table
表名
类名与表名一致,table可以省略
如果没有该表,或自动创建一个表
catalog
数据库名,可以不写
ID标签
作用
建立类中的属性与表中主键的对应关系
属性
name
column
length
type
property
作用
用于建立类中普通属性与表的对应关系
属性
name
类中的属性名
column
表中的字段名
如果字段名与类中的属性名一致,column是可以省略
length
字段的长度
默认数据库当中已经有长度了
hibernate是可以根据映射自动建表
建表是没有设定长度,就使用默认的长度
type
类型
可以不用写,会自动帮你装换
not-null
不允许为空
unique
唯一的
必须配置
连接数据库的基本的property参数
驱动类
url路径
用户名
密码
方言
可选配置
显示SQL
hibernate.show_sql
格式化SQL
hibernate.format_sql
自动建表
hibernate.hbm2ddl.auto
属性
none
不使用hibernate的自动建表
create
无论数据库中是否已经有表,都执行删除原有表,重新创建表的操作
create-drop
如果数据库中已经有表,删除原有表,执行操作,删除这个表。如果没有表,新建一个,使用完了删除该表。
最后数据库中一个表没有,为了做测试用
把sessionFactory也close掉时才有效果
update
如果数据库中有表,使用原有表,如果没有表,创建新表
更新表结构,如果column没有时会创建新的一列
validate
校验映射和表结构是否一致,不一致就会报错
如果没有表,不会创建表。只会使用数据库中原有的表
引入映射文件
<mapping resource="映射文件全路径"/>
? 提示
Hibernate的配置对象
Configuration 类的作用是对Hibernate 进行配置,以及对它进行启动。
在Hibernate 的启动过程中,Configuration 类的实例首先定位映射文档的位置,读取这些配置,然后创建一个SessionFactory对象。
虽然Configuration 类在整个Hibernate 项目中只扮演着一个很小的角色,但它是启动hibernate 时所遇到的第一个对象。
通过这个对象去加载它里面的配置
把里面的数据内容或得到,才能进行后面的工作
作用
1.加载核心配置文件
核心配置文件是属性文件
直接configuration cfg = new configuration()
名称为:hibernate.properties
核心配置文件是一个xml
名称为:hibernate.cfg.xml
1.configuration cfg = new configuration();
2.cfg.config()
2.加载映射文件
属性文件是没有办法加载映射
可以通过config加载映射文件
configuration.addResource("映射文件的全路径");
SessionFactory接口:SessionFactory接口负责初始化Hibernate。
并负责创建Session对象。
需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,
当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
内部维护了Hibernate的连接池和Hibernate的二级缓存
一个项目只需要创建一个就行了,因为里面有连接池,连接池创建一个就可以了
? 引入C3P0的jar包
? 添加C3P0的配置信息
?
<property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<!--在连接池中可用的数据库连接的最少数目 -->
<property name="c3p0.min_size">5</property>
<!--在连接池中所有数据库连接的最大数目 -->
<property name="c3p0.max_size">20</property>
<!--设定数据库连接的过期时间,以秒为单位,如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
<property name="c3p0.timeout">120</property>
<!--每3000秒检查所有连接池中的空闲连接 以秒为单位-->
<property name="c3p0.idle_test_period">3000</property>
把log4j.preperties放到src下
结构
? 输出源
? 级别
error
只显示error信息
warn
显示warn error信息,比自己严重的信息
info
会显示 info debug trace级别的信息
debug
调试信息,会把上面的都显示
trace
栈信息
? save(Object obj)
get(T.class,id)
? 1.查询之后,返回的是真实对象本身
? 2.没有查询到指定的id,返回的是一个空值
load(T.class,id)
? 1.查询之后返回的是一个代理对象,使用的是第三方的代理机制,javassist.jar
? 2.没有查询到结果直接报一个异常
void update(Object obj)
? 直接创建对象修改
? 查询之后再修改
void delete(Object obj)
? 直接创建对象删除(不支持级联删除)
? 查询之后再删除(支持级联删除)
void saveOrUpdate(Object obj)
? 没有设置id,是保存的操作
? 设置了id是修改的操作,如果设置的id没有,就会报错
? HQL:Hibernate Query Language 面向对象的查询语言
? Query query = session.createQuery("from Customer");
? List
? SQLQuery query = session.createSQLQuery("sql语句");
? List<Object[]> query.list();
三大框架 之 Hibernate框架概述(概述、配置、核心API)
标签:c3p0 ref net min 代理 rem 1.0 联网 用户名
原文地址:https://www.cnblogs.com/mumuyinxin/p/10708201.html