Hibernate是一个持久层的对象关系映射(ORM)框架,简单来讲Hibernate框架是一个与数据库产生交互的框架,可以通过hibernate框架对数据库进行增删改查操作。
hibernate工具包下载地址:https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/。
主要分为:documention:hibernate开发文档;lib:hibernate开发包;project:hibernate项目
简单项目的编辑:
1.导入jar包,完成操作环境的搭建
jar包包括:mysql驱动包;hibernate开发包;日志记录包
2.在数据库中创建一张表
3.创建实体类,完成set/get/toString方法
public class Try {
private String id;
private String name;
private String age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
@Override
public String toString() {
return "Try [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
4.完成hibernate中对hibernate映射文件以及核心配合文件的.xml配置
4.1xx.hbm.xml的配置(hibernate的映射配置文件的配置,主要是让类与数据库中的表产生连接)
`<?xml version="1.0" encoding="UTF-8"?>
<!-- hibernate中的约束 -->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- 类与表的映射 class:类的全路径 table:表名 -->
<class name="com.hibernate.Try" table="try">
<!--类属性和表中主键的对应 name:类属性名 column:表中字段名 -->
<id name="id" column="id">
<!---generator主键生成机制->
<generator class="native"/>
</id>
<!-- 普通的类属性和表的字段的对应 -->
<property name="name" column="name" ></property>
<property name="age" column="age" ></property>
</class>
</hibernate-mapping>
4.2xxx.cfg.xml(hibernate核心配置文件的配置)
<?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:///try</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</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>
<!-- 配置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>
<!-- 引入映射文件.hbm.xml 文件的路径 -->
<mapping resource="com/hibernate/xxx.hbm.xml" />
</session-factory>
</hibernate-configuration>
5.编写测试代码,完成操作
public class Hibernatedemo {
//增加
@Test
public void demo1() {
//加载hibernate核心配置文件.cfg.xml
Configuration cfg = new Configuration().configure();
//创建sessionfactory工厂
SessionFactory sf = cfg.buildSessionFactory();
//开启session
Session session = sf.openSession();
//手动开启事务
Transaction transaction = session.beginTransaction();
Try try = new Try();
try.setName("try");
session.save(try);
//事务提交
transaction.commit();
//资源关闭
session.close();
}
// 查询
@Test
public void demo2() {
Configuration cfg = new Configuration().configure();
SessionFactory sf = cfg.buildSessionFactory();
Session session = sf.openSession();
Transaction tran = session.beginTransaction();
Try Try = session.get(Try.class, 7);
System.out.println(Try);
tran.commit();
session.close();
}
// 修改
@Test
public void demo3() {
Configuration cfg = new Configuration().configure();
SessionFactory sf = cfg.buildSessionFactory();
Session session = sf.openSession();
Transaction tran = session.beginTransaction();
// 先查询,再修改
Try try1 = session.get(Try.class, 7);
try1.setId(8);
session.update(try1);
tran.commit();
session.close();
}
// 删除操作
@Test
public void demo4() {
Configuration cfg = new Configuration().configure();
SessionFactory sf = cfg.buildSessionFactory();
Session session = sf.openSession();
Transaction tran = session.beginTransaction();
Try try3 = session.get(Try.class, 7);
session.delete(try3);
tran.commit();
session.close();
}
// 查询所有
@Test
public void demo5() {
Configuration cfg = new Configuration().configure();
SessionFactory sf = cfg.buildSessionFactory();
Session session = sf.openSession();
Transaction tran = session.beginTransaction();
//HQL
Query query = session.createQuery("form Try");
List<Try> list = query.list();
for (Try try : list) {
System.out.println(try);
}
tran.commit();
session.close();
}
}
初步阶段完成。