标签:setter dde odi dynamic title 自动加载 级别 c3p0 require
什么是持久化技术
持久化技术。就是把数据保存到可永久保存的存储设备中。持久化的主要应用是将内存中的对象存储在关系型数据库中。
什么是ORM
对象关系映射。
通过ORM我们可以通过类的方式去操作数据库,而不用原生的SQL语句。通过把表映射成类,把行当作实例,把字段当作属性。
ORM在执行对象操作的时候最终还是会把对应的操作转换为数据库原生语句。
步骤
导包
创建ORM类
import lombok.Getter;
import lombok.Setter;
@Getter@Setter
public class Students {
private int id;
private String name;
private int age;
@Override
public String toString() {
return "Students{" +
"id=" + id +
", name='" + name + ''' +
", age=" + age +
'}';
}
}
核心配置文件
hibernate.cfg.xml
<!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="connection.url">jdbc:mysql://localhost:3306/hibernate_test?serverTimezone=UTC</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<!-- 配置Hibernate的方言 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</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="Demo1/Students.hbm.xml"/>
</session-factory>
</hibernate-configuration>
创建映射关系
通过xml的配置进行配置。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Demo1.Students" table="students" >
<!--建立类属性哪一个是主键 还要跟数据库当中主键进行对象-->
<id name="id" column="id" >
<generator class="native"/>
</id>
<!--建立类中的普通属性与数据库当中字段进行关联-->
<property name="name" column="name" />
大专栏 Hibernate-配置class="token punctuation"><property name="age" column="age"/>
</class>
</hibernate-mapping>
执行
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
@Test
public void save(){
/*1.加载配置文件*/
Configuration configure = new Configuration().configure();
/*2. 创建会话工厂 - JDBC连接 */
SessionFactory sessionFactory = configure.buildSessionFactory();
/*3. 获取session - JDBC连接对象 */
Session session = sessionFactory.openSession();
Students per = new Students();
per.setId(15);
per.setName("张三");
per.setAge(15);
session.save(per);
/*释放资源*/
session.close();
sessionFactory.close();
}
映射配置
xxx.hbm.xml
xxx对应持久化类后面的.hbm.xml是固定写法
hibernate-mapping标签
注意的是一个映射文件只可以有一个hibernate-mapping标签
class标签
作用:建立类与表的映射关系
属性:
id标签
作用:建立类中的属性与表中的主键对应关系
属性:
property标签
作用:建立类中的普通属性与表的对应关系
核心配置
hibernate.cfg.xml
当程序调用Configuration对象的configure()方法时,Hibernate就会自动加载该文件。hibernate-configuration是根元素。根元素包含session-factory子元素子元素又有property元素,而这些property属性则是配置Hibernate连接数据库的重要信息
自动建表hibernate.hbm2ddl.auto
格式化SQLhibernate.format_sql
显示SQL hibernate.show_sql
DTD配置
File -> Settings -> Sehemas and DTD
配置连接池
<!--C3PO-->
<property name="connection.provider_class">org.hibernate.c3p0.internal.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>
<!--设置事务的隔离级别-->
<property name="hibernate.connection.isolation">4</property>
<!--创建一个session绑定到当前线程-->
<property name="current_session_context_class">thread</property>
导包
log4j-1.2.16.jar
log4j.preperties
放在src目录下
级别
标签:setter dde odi dynamic title 自动加载 级别 c3p0 require
原文地址:https://www.cnblogs.com/lijianming180/p/12026722.html